Назад | Перейти на главную страницу

Инвентаризация жесткого диска сценария Powershell

Я создал сценарий для получения информации о жестком диске с наших серверов. Сценарий использует WMI для запроса класса Win32_LogicalDisk и возвращает «Размер (ГБ)», «Свободное пространство (ГБ)» и «Свободное пространство (%)» для каждого идентификатора устройства (локального диска) каждого сервера.

Я хочу отсортировать по «Свободному пространству (%)» для каждого идентификатора устройства на каждом сервере. Когда я сортирую по «Свободному пространству (%)», он не показывает каждый идентификатор устройства. На одном сервере есть диски C: и D :, но в выходных данных отображается только диск D :. Если я удалю Sort-Object "Free Space (%)" он покажет все идентификаторы устройств для каждого сервера.

Кто-нибудь может мне помочь с этим скриптом?

$computers   = C:\users\mtrajano\documents\powershell\scripts\list.txt
$logicalDisk = Get-WmiObject Win32_LogicalDisk -Filter "DriveType=3" -Computer $computers |
    Select-Object SystemName, DeviceID,
        @{ Name = "Size (GB)";       Expression = { "{0:N1}" -f ($_.size / 1GB) } },
        @{ Name = "Free Space (GB)"; Expression = { "{0:N1}" -f ($_.freespace / 1GB) } },
        @{ Name = "Free Space (%)";  Expression = { "{0:P2}" -f (($_.freespace / 1GB) / ($_.size / 1GB)) } } |
            Sort-Object "Free Space (%)" |
                ConvertTo-Html |
                    Out-String

$messageParameters = @{
    To          = ""
    From        = ""
    Subject     = ""
    Body        = $logicalDisk
    SmtpServer  = ""
}

Send-MailMessage @messageParameters -BodyasHtml