【问题标题】:Get-WMIObject Output and Error HandlingGet-WMIObject 输出和错误处理
【发布时间】:2018-07-04 02:51:58
【问题描述】:

尝试从 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 服务器不可用错误,但该信息不会出现在输出文件中。

我想我实际上是在寻找有或没有软件的输出报告机器,以及在尝试访问机器进行检查时的任何错误消息。

【问题讨论】:

    标签: error-handling wmi powershell-2.0


    【解决方案1】:

    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。建议改用注册表查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-28
      • 2019-06-15
      • 1970-01-01
      • 2016-11-29
      • 2018-02-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多