Ошибка отчета диска Powershell, когда диск более одного - PullRequest
0 голосов
/ 26 апреля 2018

введите описание изображения здесь я делаю скрипт для проверки статуса HD, когда я выполняю скрипт и количество выполненных скриптов HD = 1, но когда число HD больше, чем один, не показать правильно информацию (когда я удаляю -Filter "DriveType = 3"):

foreach ($servidor in $servidores) {

$diskinfo = Get-WmiObject Win32_LogicalDisk -ComputerName $servidor -Filter "DriveType=3" | Select-Object DeviceID, Size, FreeSpace

foreach ($disk in $diskinfo) {

    $i += "<tr>"
    $i += "<td>$($servidor)</td>"
    $i += "<td>$($diskinfo.DeviceID)</td>"
    $i += "<td>$([Math]::Truncate($diskinfo.Size / $convertirGB))  GB </td>"
    $i += "<td>$([Math]::Truncate($diskinfo.FreeSpace / $convertirGB))  GB </td>"
        if([Math]::Truncate(($diskinfo.FreeSpace / $diskinfo.size) * 100) -le 15) {
            $i += "<td><font color=red> $([Math]::Truncate(($diskinfo.FreeSpace / $diskinfo.size) * 100))  % </font></td></tr>"
        }
        if([Math]::Truncate(($diskinfo.FreeSpace / $diskinfo.size) * 100) -gt 25 -and [Math]::Truncate(($diskinfo.FreeSpace / $diskinfo.size) * 100) -le 20){
            $i += "<td><font color=orange> $([Math]::Truncate(($diskinfo.FreeSpace / $diskinfo.size) * 100))  % </font></td></tr>"
        }
        if([Math]::Truncate(($diskinfo.FreeSpace / $diskinfo.size) * 100) -gt 35){
            $i += "<td><font color=green> $([Math]::Truncate(($diskinfo.FreeSpace / $diskinfo.size) * 100))  % </font></td></tr>"
        }
}

}

Большое спасибо: -)

1 Ответ

0 голосов
/ 26 апреля 2018

Вы имеете в виду $diskinfo в вашем цикле (то есть всю коллекцию дисков), а не $disk (отдельный диск из коллекции).

Например, заменить эту строку:

if([Math]::Truncate(($diskinfo.FreeSpace / $diskinfo.size) * 100) 

С:

if([Math]::Truncate(($disk.FreeSpace / $disk.size) * 100) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...