我正在尝试使用 WMI 查询多个服务器,但我并不总是可以访问这些服务器。
代码如下。唉,它向控制台返回“访问被拒绝”,但我似乎无法摆脱它。那好吧。
但是,我正在捕获无法连接的服务器,以便我可以告诉其他人查看它们或请求访问。
但是当我运行代码时,它只返回第一个服务器列表;即使 $failed_servers 有值,也不会返回任何内容。如果我告诉两者都通过管道连接到 ogv,则会弹出两个窗口。
为什么两个“$variable|select”都不起作用?如果我删除 $failed_servers 上的选择,它就会显示出来,尽管它只是紧挨着成功的那些。这是好的,但不是很好。
$list = ("servera","serverb","serverc")
$failed_servers = @()
$final = foreach ($server_instance in $list)
{
$errors=@()
gwmi -query "select * from win32_service where name like '%SQLSERVER%'" -cn $server_instance -ErrorVariable +errors -ErrorAction SilentlyContinue
if ($errors.Count -gt 0) {$failed_servers += $server_instance
}
}
$final|select pscomputername, name, startmode, state |where {$_.pscomputername -ne $null}
$failed_servers |select @{N='Failed Servers'; E={$_}}