我编写了一个简单的 PowerShell 脚本来检索服务器的上次启动时间列表并将结果输出到网格视图。结果会立即显示在网格窗口中,但是当服务器没有响应 get 命令时,由于 WMI 未运行或类未注册,结果会短暂暂停。然后它在 PS 中显示错误并移动到下一个服务器。
现在,除非“未响应”服务器显示在结果窗口中,否则结果将无济于事。
$servers = ('serverx','serverb')
Get-WmiObject -Class Win32_OperatingSystem -ComputerName $servers |
select csname, @{LABEL='LastBootUpTime';EXPRESSION={$_.ConvertToDateTime($_.LastBootupTime)}},
@{LABEL='LocalTime';EXPRESSION={$_.ConvertToDateTime($_.LocalDateTime)}},
@{LABEL='UpTime';EXPRESSION={(Get-Date) - $_.ConvertToDateTime($_.LastBootupTime)}},
@{LABEL='OS';EXPRESSION={$_.Caption}} |
Out-GridView
PS 窗口中以红色显示的错误类型:
- Get-WmiObject:类未注册(HRESULT 异常:0x80040154 (REGDB_E_CLASSNOTREG))在行:1 字符:12
- Get-WmiObject : RPC 服务器不可用。(来自 HRESULT 的异常:0x800706BA)在 line:1 char:12
编辑:如果服务器响应错误,我如何输出良好的结果以及服务器名称?