捕获错误无效的命名空间“root \ SecurityCenter2”

时间:2016-08-20 15:47:34

标签: powershell

尝试使用以下命令在远程计算机上检索已安装的防病毒列表。

Get-WmiObject -Namespace "root\SecurityCenter2" -Class AntiVirusProduct 

带防病毒的计算机显示已安装的防病毒详细信息。 但

Invalid namespace “root\SecurityCenter2” 
如果计算机没有任何防病毒试图捕获错误并导出计算机没有防病毒软件的csv,则会引发错误

catch {
    Write-Warning "[ERROR] invalid namespace [$($computer)] : $_"
     $noantivirus+=$computer
}
$noantivirus | out-file -FilePath  c:\noantivirus.csv -Force 

没有运气

1 个答案:

答案 0 :(得分:1)

这似乎不是一个终止错误,因此它不会被try catch语句捕获。尝试使用catch语句只捕获终止错误,因此您需要告诉PowerShell将非终止错误视为终止错误,方法是使用-ErrorAction Stop,如下所示:

try
{
    Get-WmiObject -Namespace "root\SecurityCenter2" -Class AntiVirusProduct -ErrorAction Stop
}
catch
{
    Write-Warning "[ERROR] invalid namespace [$($computer)] : $_"
    $noantivirus+=$computer
}
$noantivirus | out-file -FilePath  c:\noantivirus.csv -Force