如何在脚本运行时抑制PowerShell错误get-wmiobject。 -EA不起作用

时间:2015-07-16 01:21:24

标签: powershell error-handling wmi

这是我的剧本。

get-wmiobject -class win32_networkadapterconfiguration 
-computername (get-content .\computers.txt) -Filter "IPEnabled=TRUE" |
select PSComputerName,DNSServerSearchOrder

我的Get-Content将拥有一个巨大的计算机列表,在我的网络中不再存在的计算机,以及那些计算机。因此,在生成此列表时,我将在红色错误文本中获得“RPC Server not available”。我根本不希望这个显示。我尝试过-ErrorAction SilentlyContinueIgnore但行为没有变化。

我也试过这个:

try {
get-wmiobject -class win32_networkadapterconfiguration 
-computername (get-content .\computers.txt) -Filter "IPEnabled=TRUE" |
select PSComputerName,DNSServerSearchOrder
}
catch {
}

这也没让我好运。任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:2)

您无法向我们展示您使用-ErrorAction silentlyContinue的方式。如果放置得当,可以抑制你的错误。我猜你把它放在命令的末尾,因为它应该将它与Get-WMIObject相关联。

get-wmiobject -class win32_networkadapterconfiguration -computername (get-content .\computers.txt) -Filter "IPEnabled=TRUE" -ErrorAction SilentlyContinue |
select PSComputerName,DNSServerSearchOrder

你的try catch块也可以工作,但我认为它会停止处理第一个错误,从而跳过其他好的计算机。

答案 1 :(得分:1)

我能够通过

解决这个问题
get-wmiobject -class win32_networkadapterconfiguration 
-computername (get-content .\computers.txt) 2>$null -Filter "IPEnabled=TRUE" |
select PSComputerName,DNSServerSearchOrder

我在Select之后也做了-ErrorAction,你需要在wmi管道中选择之前做这个。希望将来能帮助像我这样的人。