Powershell 识别安装了两次相同驱动程序的机器

Powershell to Identify machines with the same driver installed twice

希望构建一个脚本来识别安装了相同驱动程序的机器。 (可能还有第二个脚本来识别驱动程序版本)。

如果在机器上安装了重复的 zebra 驱动程序,可能会导致问题。

    $servers = Get-Content 'c:\servers.txt'
ForEach($server in $servers) {
Get-WmiObject win32_printerdriver -ComputerName $server|` 
select  pscomputername,name | where name -Like "*zebra*"
Format-Table -AutoSize} 

以上是我尝试过的方法,但对于大于 1 的结果,我可能应该有第二个 where 子句。

感谢所有帮助和建议。

作为这个问题的次要部分,如果我想检查我们组织中的所有机器,使用 ADC 模块是否是正确的方法?

一种可能的方法:$ZebraPrintersOnServer 对象始终是一个数组,因此您可以检查它的 Count 属性:

$servers = Get-Content 'c:\servers.txt'
ForEach($server in $servers) {
    $ZebraPrintersOnServer = @(
        Get-WmiObject win32_printerdriver -ComputerName $server |
            Where-Object Name -Like "*zebra*"
    )
    switch ( $ZebraPrintersOnServer.Count ) {
        0 { # no Zebra printer found; 
            # mimic a "fake" $ZebraPrintersOnServer object
            $ZebraPrintersOnServer = @( 
                [PSCustomObject]@{
                    PSComputerName = $server;
                    Name = ''
                }
            )
            break
          }
        1 { # exactly one Zebra printer found
            # no action needed?
            break
          }
        default { # more than one Zebra printer found,
                  # do some action here
                  # on the $ZebraPrintersOnServer object?
                  break
                }
    }
    # general common output 
    $ZebraPrintersOnServer | Select-Object PSComputerName, Name
}

顺便说一句:请注意

  • | 管道运算符之后没有 续行 反引号,并且
  • final Select-ObjectFormat-Table 仅用于 human-legible 输出。