2

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

开始

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

结尾

但是,输出看起来很丑陋,有以下错误以及少数服务器的正确输出。

Get-WmiObject : RPC 服务器不可用 Get-WmiObject : Access Denied 等(Try/Catch循环的目的不是消除这些吗?)

奇怪的是,有时输出也会显示“无效服务器”,那么错误之间的区别到底是什么,Try/Catch 循环的限制是什么?

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

4

2 回答 2

4

要使上面的代码抛出异常,您可以添加-ErrorAction Stop到您的Get-WmiObject行中,如下所示:

Get-WmiObject -computer $computer -Class Win32_OperatingSystem -ErrorAction Stop | Select Serial*

请参阅 Keith Hill 的这篇文章:“终止”和“非终止”错误之间的区别

于 2012-12-27T00:03:03.743 回答
0

@Graimer 行$ErrorActionPreference = "Stop"成功了,输出很干净,没有错误。

于 2012-12-27T16:04:20.677 回答