Der Versuch, die Deinstallationszeichenfolgen der Registrierung für bestimmte Software zu scannen, indem mit -match der Wert DisplayName gesucht wird. Ich kann es mit einem Stück Software arbeiten lassen, aber ich habe Probleme herauszufinden, wie man es mit einer Liste von Software zum Laufen bringt. Zum Beispiel setze ich Java, Silverlight, Shockwave, Adobe Reader und Adobe Font Pack als Variablen, kann aber nicht herausfinden, wie man sie durch den foreach
Befehl führt.Schleife innerhalb einer Schleife?
$PATHS = @("HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall",
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall")
# Java 8 Update 102 | 8.0.1020.14
$Javax86 = "Java 8"
# Microsoft Silverlight | 5.1.50901.0
$MSsilverlight = "Microsoft Silverlight"
# Adobe Shockwave Player 12.2 | 12.2.5.195
$AdobeShockwave = "Adobe Shockwave Player"
# Extended Asian Language font pack for Adobe Acrobat Reader DC | 15.007.20033
$AdobeReaderFont = "font pack for Adobe Acrobat Reader"
# Adobe Acrobat Reader DC MUI | 15.020.20042
$AdobeReader = "Adobe Acrobat Reader DC MUI"
$SOFTWARE = ""
#@($Javax86,$MSsilverlight,$AdobeShockwave,$AdobeReaderFont,$AdobeReader)
foreach ($path in $PATHS) {
$installed = Get-ChildItem -Path $path |
foreach { Get-ItemProperty $_.PSPath } |
Where-Object { $_.DisplayName -match "$MSsilverlight" } |
Select-Object -Property DisplayName,DisplayVersion
foreach ($app in $installed) {
$DisplayName = "$($app.DisplayName)"
$DisplayVersion = "$($app.DisplayVersion)"
}
if ($app.DisplayName) {
$InstalledYes = "$DisplayName ($DisplayVersion) is installed"
} elseif ($app.DisplayName -eq $NULL) {
$InstalledNo = "$MSsilverlight is not Installed"
#Write-Host "$SOFTWARE is not installed"
}
}
Write-Host "$InstalledYes"
Write-Host "$InstalledNo"
Sie benötigen keine Häkchen nach den Pipes. Bitte verwenden Sie keine Häkchen (je), um eine Linie fortzusetzen. –