我有一个简单的循环,它获取服务器列表中的所有序列号;
foreach ($computer in $computers)
{
try
{
Get-WmiObject -computer $computer -Class Win32_OperatingSystem|Select Serial*
}
catch
{
Write-Host "Invalid Server"
}
}
但是,输出看起来很难看,跟随错误以及少数服务器的正确输出。
Get-WmiObject:RPC服务器不可用 Get-WmiObject:访问被拒绝等(不是尝试/捕获循环的目的,以消除那些?)
奇怪的是,输出结果也显示“无效服务器”,那么错误与Try / Catch循环的限制之间究竟有什么区别呢?
我在这里做错了什么?如果有任何问题,请。
答案 0 :(得分:4)
要使上述代码抛出异常,您可以将-ErrorAction Stop
添加到Get-WmiObject
行,如下所示:
Get-WmiObject -computer $computer -Class Win32_OperatingSystem -ErrorAction Stop | Select Serial*
请参阅Keith Hill撰写的这篇文章:distinction between "terminating" and "non-terminating" errors。
答案 1 :(得分:0)
@Graimer线 $ ErrorActionPreference =“停止” 完成了这一操作,输出干净而没有错误。