скрипт powershell для определения общего объема памяти диска c - PullRequest
0 голосов
/ 26 марта 2019

Я хочу, чтобы сценарий PowerShell получал общее пространство памяти диска C и используемого пространства памяти в ГБ, если общее пространство меньше 200 ГБ, должно быть место на диске меньше 200.

gwmi win32_logicaldisk | Format-Table DeviceId, MediaType, @{n="Size";e={[math]::Round($_.Size/1GB,2)}},@{n="FreeSpace";e={[math]::Round($_.FreeSpace/1GB,2)}}
$task=gwmi win32_logicaldisk | Format-Table DeviceId, MediaType, @{n="Size";e={[math]::Round($_.Size/1GB,2)}},@{n="FreeSpace";e={[math]::Round($_.FreeSpace/1GB,2)}}
if($task.Size -lt 200)
{
Write-Host "Hard Disk Space is less than 200."
}
else
{
Write-Host "Hard Disk Space is greater than 200."
}

Я получаю все дисковое пространство в приведенном выше коде, мне нужна только информация о диске C, и если условие не работает должным образом, кто-то поможет мне в этом. Заранее спасибо

Ответы [ 2 ]

1 голос
/ 26 марта 2019

Вы можете использовать командлет Get-Volume -

if (((Get-Volume -DriveLetter C).Size)/1GB -lt 200)
{
Write-Host "Hard Disk Space is less than 200."
}
else
{
Write-Host "Hard Disk Space is greater than 200."
}
0 голосов
/ 26 марта 2019

если вам нужно запустить этот тест на win7 - даже с ps5.1 - вы не можете использовать командлет Get-Volume.[ вздох ... ], так что для этого используется CMI / WMI.

что он делает ...

  • устанавливает минимальный порог свободного места
  • использует более быстрые, не осуждаемые файлы CIM для получения информации о диске C:
  • возвращает информацию, только если диск C: соответствует минимальному требованию к свободному пространству
  • использует [string]::IsNullOrEmpty(), чтобы увидеть, есть ли в результате какая-либо информация
  • , а затем использует структуру IFчтобы решить, какое сообщение показывать
  • , если места слишком мало, он использует командлет Write-Warning для красивого оранжевого текста [ grin ]

вотвыходной код ...

$MinFreeSpace_GB = 800

$CDriveMinFree = [string]::IsNullOrEmpty((Get-CimInstance -ClassName CIM_LogicalDisk |
    Where-Object {
        $_.DeviceID -eq 'C:' -and
        $_.FreeSpace -lt $MinFreeSpace_GB * 1GB
        }))

if ($CDriveMinFree)
    {
    'The C: drive has at least {0} GB free.' -f $MinFreeSpace_GB
    }
    else
    {
    Write-Warning ('Low free space on Drive C:!')
    }

на моем свободном диске C: 600 ГБ с порогом тестирования, установленным на 800 ...

WARNING: Low free space on Drive C:!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...