foreach ($computer in (Get-Content -Path "C:\computers.txt")) {
Get-WMIObject -ComputerName $computer -Class Win32_Product |
Where-Object {$_.name -match "Microsoft Viewer" } |
Out-File -Append -Path "C:\viewers.txt"
}
Ваш исходный код не идентифицировал компьютер для выполнения Get-WMIObject
, поэтому он просматривал только компьютер, на котором выполнялся скрипт.
Если на удаленном компьютере много продуктов, вы можете рассмотреть возможность фильтрации на удаленном компьютере, а не локально, чтобы избежать передачи больших объемов данных по сети, которая может быть медленнее, чем идеальная.:
foreach ($computer in (Get-Content -Path "C:\computers.txt")) {
Get-WMIObject -ComputerName $computer -Class Win32_Product -Filter "Name LIKE '*Microsoft Viewer*'"|
Out-File -Append -Path "C:\viewers.txt"
}
(я думаю У меня правильный синтаксис фильтра; мне, кажется, приходится взламывать его каждый раз, когда я пишу новый фильтр ...)