Попытка сканирования удаляемых строк реестра для определенного программного обеспечения путем поиска с использованием -match значения DisplayName. Я могу заставить его работать с одним программным обеспечением, но у меня возникают проблемы с выяснением того, как заставить его работать со списком программного обеспечения. Например, я установил Java, Silverlight, Shockwave, Adobe Reader и Adobe Font Pack в качестве переменных, но не могу понять, как их закодировать через команду foreach
.Петля в петле?
$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"
Вам не нужны отметки после труб. Пожалуйста, не используйте отметки (когда-либо), чтобы продолжить линию. –