Powershell用于识别安装了两次相同驱动程序的计算机

Powershell用于识别安装了两次相同驱动程序的计算机,powershell,zebra-printers,Powershell,Zebra Printers,希望构建一个脚本来识别安装了相同驱动程序的机器。(可能还有第二个脚本来标识驱动程序版本) 如果机器上安装了重复的zebra驱动程序,可能会导致问题 $servers = Get-Content 'c:\servers.txt' ForEach($server in $servers) { Get-WmiObject win32_printerdriver -ComputerName $server|` select pscomputername,name | where name -

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

如果机器上安装了重复的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
对象始终是一个数组,以便您可以检查其
计数
属性:

$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
}
顺便说一句:注意

  • 管道操作符之后没有行继续反勾号,并且
  • 最终的
    选择对象
    格式表
    仅用于人类易读的输出