Я изменил этот скрипт(https://gallery.technet.microsoft.com/scriptcenter/Create-HTML-Uptime-and-68e6acc0) для удара по нескольким серверам, но он не генерирует отчет, даже если только одна из систем не работает. Как мне изменить скрипт, чтобы он продолжал работать при ошибках и генерировал отчет в конце? Ошибка:
Get-WmiObject : The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)
At C:\Users\user\Desktop\CheckDiskSpaceDomain\GetDiskDriveSpaceDomain.ps1:19 char:25
+ $os = Get-WmiObject <<<< -class win32_OperatingSystem -cn $s
+ CategoryInfo : InvalidOperation: (:) [Get-WmiObject], COMException
+ FullyQualifiedErrorId : GetWMICOMException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
You cannot call a method on a null-valued expression.
At C:\Users\user\Desktop\CheckDiskSpaceDomain\GetDiskDriveSpaceDomain.ps1:21 char:51
+ uptime = (get-date) - $os.converttodatetime <<<< ($os.lastbootuptime)}
+ CategoryInfo : InvalidOperation: (converttodatetime:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
решение1
Похоже, у вас возникла проблема при запуске get-wmiObject, после этого вызова просто напишите
-ErrorAction "Resume"
Похоже, что $OS на самом деле имеет нулевое значение, поэтому вы можете сделать что-то вроде этого, чтобы узнать, имеет ли $s значение null, и принять решение, что делать:
if ($OS -ne $null){
$uptime = (get-date) - $os.converttodatetime
}
else {
write-host " OS is null"
}
Более подробную информацию об обработке ошибок можно найти здесь:
решение2
Попробуйте использовать -erroraction silentlycontinue