Powershell - проверка переменной на значение в foreach - если значение отсутствует, регистрировать другие выходные данные - PullRequest
0 голосов
/ 08 ноября 2018

У меня проблема с методом foreach. Я проверяю в реестре, установлено ли большое количество программ. Как бы я написал это, чтобы сказать, что что-то не установлено один раз, вместо того, чтобы сказать, что что-то не установлено для каждого проверяемого ключа? Теперь, если я помещаю ElseIf, он выполняет «PowerBroker не установлен». около 16 раз. Это связано с тем, что он проверяет каждый ключ и записывает его для каждого ключа, который не находит соответствия отображаемому имени. Как мне проверить ключ и выписать его только один раз, если он не установлен? Спасибо!

$UninstallKeys = Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'
foreach($Key in $UninstallKeys){

if($Key.GetValue("DisplayName") -Match "BeyondTrust"){

    $PBW = $Key.GetValue("DisplayName")
    $PBWV = $Key.GetValue("DisplayVersion")


        if ($PBW) {

            $PBW = $PBW, $PBWV

        }
        else {

            $PBW = "PowerBroker not installed."
            $installsmissing = "True"
        }
}

1 Ответ

0 голосов
/ 08 ноября 2018

Дайте этому сценарию вихрь. Если я правильно понял требование, оно должно дать вам то, что вам нужно.

$displayName = "BeyondTrust"

$uninstallKeys = Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"

# Filter the keys down by their display name property
$specificUninstallKeys = $uninstallKeys |
    Where-Object {
        $_.GetValue("DisplayName") -eq $displayName
    }

# Did we find any keys of that name?
if ($specificUninstallKeys) {
    Write-Output "Keys found: $($specificUninstallKeys.Length)"
}
else {
    Write-Output "Sorry pal, no keys by that name here!"
}

# There may be more than one; hence the loop-y requirement here.
foreach ($specificUninstallKey in $specificUninstallKey) {
    Write-Output $displayName
    Write-Output $specificUninstallKey.GetValue("DisplayVersion")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...