Проверьте это «Привет, сценарист» link. Эта ссылка описывает, как запрашивать установленные приложения через реестр.
От link:
Win32_Product: Хороший, плохой, злой [Хорошо] Класс Win32_Product WMI представляет продукцию, как они установлены> по Windows Installer.
Если вы выбрали запрос класса Win32_Product с помощью Get-WmiObject, вы можете найти> себя [Bad], ожидая вашего запроса (или приложения), чтобы вернуть [Ugly] a> проверку согласованности пакетов, которые установлены как это попытки проверить и> восстановить установки. (Для получения дополнительной информации см. Сообщение «Журнал событий» означает, что> установщик Windows перенастроил все установленные приложения). ...
Основываясь на приведенной выше ссылке вы можете запросить установленные продукты через:
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize
Кроме того, вы можете использовать Test-Path
, чтобы проверить, если запрашиваемая запись в реестре существует. Пример:
if (test-path HKLM:\Software\abc) { write-host "Found" } else { Write-Host "Not found" }
Для проверки установленного программного обеспечения на нескольких серверах:
$servers = Get-Content C:\xyz\servers.txt
$results = @()
foreach ($server in $servers) {
$session = New-PSSession -ComputerName $server -Credential (Get-Credential)
$results += Invoke-Command -Session $session -ScriptBlock {
test-path HKLM:\Software\abc
}
}
$results.GetType() # Dump type
$results | gm # Dump properties
$results | Format-Table
Надежда, что помогает.
Каким образом код, который вы опубликовали, не выполняет то, что вы ожидаете от него? – arco444
Будьте осторожны с вызовом 'Win32_Product', который проверяет/восстанавливает все установленные msi. Таким образом, по крайней мере, он медленный и интенсивный процесс. – BenH
Пожалуйста, предложите любые другие варианты. – NJones