Powershell用于识别安装了两次相同驱动程序的计算机
希望构建一个脚本来识别安装了相同驱动程序的机器。(可能还有第二个脚本来标识驱动程序版本) 如果机器上安装了重复的zebra驱动程序,可能会导致问题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 -
$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
}
顺便说一句:注意
- 管道操作符之后没有行继续反勾号,并且
- 最终的
选择对象
或格式表
仅用于人类易读的输出