为什么错误会在Powershell中通过TRY / CATCH循环滑落

时间:2012-12-26 22:05:50

标签: powershell exception-handling try-catch

我有一个简单的循环,它获取服务器列表中的所有序列号;

开始

foreach ($computer in $computers) 
{
    try
    {
        Get-WmiObject -computer $computer -Class Win32_OperatingSystem|Select Serial*
    }
    catch
    {
        Write-Host "Invalid Server"
    }
}

END

但是,输出看起来很难看,跟随错误以及少数服务器的正确输出。

Get-WmiObject:RPC服务器不可用 Get-WmiObject:访问被拒绝等(不是尝试/捕获循环的目的,以消除那些?)

奇怪的是,输出结果也显示“无效服务器”,那么错误与Try / Catch循环的限制之间究竟有什么区别呢?

我在这里做错了什么?如果有任何问题,请。

2 个答案:

答案 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 =“停止” 完成了这一操作,输出干净而没有错误。