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-Object
或 Format-Table
仅用于 human-legible 输出。
希望构建一个脚本来识别安装了相同驱动程序的机器。 (可能还有第二个脚本来识别驱动程序版本)。
如果在机器上安装了重复的 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-Object
或Format-Table
仅用于 human-legible 输出。