버전 16.00 미만의 모든 7-zip 소프트웨어를 제거하고 최신 버전을 설치하고 싶습니다. 16보다 높은 버전이 존재하면 아무것도하지 마십시오.
컴퓨터 구성의 소프트웨어 설정에 대한 소프트웨어 설치 옵션에서 그룹 정책 개체를 사용하여이 작업을 시도했습니다. 그룹 정책 개체는 시스템의 RSoP에 나타나지만 테스트 시스템의 gpedit.msc 설정 항목 옆에 노란색 느낌표가 있습니다.
Rabbid10의 제안에 따라 다음을 시도했습니다.
$AllRegAppEntries = Get-ChildItem -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall,HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall | ForEach-Object {Get-ItemProperty -Path $_.pspath}
$FilteredApps = New-Object System.Collections.ArrayList
foreach ($App in $AllRegAppEntries) {
if ($App.DisplayName -ilike "*7-Zip*") {
try {
$DisplayVersionAsVersion = New-Object System.Version $App.DisplayVersion
} catch {
$DisplayVersionAsVersion = New-Object System.Version
}
$VersionToCheck = New-Object System.Version "16.0.0.0"
echo "versionToCheck is:"
echo $versionToCheck
echo "DisplayVersionAsVersion is currently: "
echo $DisplayVersionAsVersion
if ($DisplayVersionAsVersion -gt $VersionToCheck) {
[void]$FilteredApps.Add($App)
}
}
}
Echo "last part of script"
foreach ($App in $FilteredApps) {
echo "Hi, Im in the uninstall section"
# Make sure uninstall string uses MSIEXEC
if ($App.UninstallString -ilike "msiexec*") {
$GUID = $App.UninstallString.Substring($App.UninstallString.IndexOf("{"))
$GUID = $GUID.Substring(0, $GUID.IndexOf("}") + 1)
Write-Host "Running the following command: msiexec.exe /x $GUID /qn /norestart"
Start-Process "msiexec.exe" "/x $GUID /qn /norestart" -Wait
}
}
그리고 내 출력은 다음과 같습니다.
1
이 작업을 수행했을 때 간단히 하위 버전을 제거하고 계속 실행했습니다. 그러나 나는 그것들을 모두 제거하고 최신이 아닌 경우 최신 버전을 설치할 준비가되었습니다.
—
SDsolar