error-handling - Get-WMIObject输出和错误处理

标签 error-handling wmi powershell-2.0

尝试从PowerShell扫描中获取一些应在所有工作站上存在的软件的输出。

Get-Content -Path f:\desktop\Machines.csv |
    ForEach-Object {Get-WmiObject -Class Win32_Product -ComputerName $_} |
    Where-Object -FilterScript {$_.Name -like "*Adobe Reader*"} |
    Select-Object -Property PSComputerName,Name,Version |
    Export-Csv -Path f:\desktop\Results.csv -NoTypeInformation

问题是那些没有安装软件的机器在输出文件中没有任何信息。我经常在ISE控制台中收到RPC Server不可用的错误,但是该信息并没有将其写入输出文件。

我想我实际上是在寻找具有或不具有该软件以及任何错误消息的输出报告机器,以尝试到达要检查的机器。

最佳答案

如果结果为空,则将过滤器和选择内容移到ForEach-Object内,并创建一个自定义对象。

Get-Content 'F:\desktop\Machines.csv' | ForEach-Object {
    $o = Get-WmiObject -Class Win32_Product -ComputerName $_ |
         Where-Object {$_.Name -like "*Adobe Reader*"} |
         Select-Object PSComputerName,Name,Version
    if ($o) {
        $o
    } else {
        New-Object -Type PSObject -Property @{
            'PSComputerName' = $_
            'Name'           = 'Adobe Reader'
            'Version'        = $null
        }
    }
} | Export-Csv 'F:\desktop\Results.csv' -NoType

但是请注意,Win32_Productconsidered harmful。建议改用注册表查询。

关于error-handling - Get-WMIObject输出和错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48433002/

相关文章:

service - 如何使用vbscript检查服务状态?

powershell - 每个对象内的每个对象

xml - 如何从XML获取参数并执行exe列表?

powershell - Powershell选择字符串列

python - csv.writer 出现 UnicodeEncodeError

validation - flutter 中的字符串未删除空格

javascript - Angular 2 模板的元素引用无法正常工作

wmi - 在哪里可以找到 WMI 文档?

python - 将字符串追加到Pandas数据框中不会产生结果

c# - WMI - 从 Win32_Product 中选择需要很长时间