Powershell을 사용하여 java를 제거하는 데 msiexec 문제가 발생했습니다. 결과를 화면에 출력하고 배치 파일에 붙여 넣었습니다. 그러나 Powershell을 통해 실행될 때 "패키지를 찾을 수 없습니다"라는 메시지가 표시되지 않습니다. 누구든지 내가 잘못하고있는 것을 발견 할 수 있습니까? 난 위아래로 구글을 훑어 보았고 같은 결과를 얻었거나 성공한 명령을 실행하는 몇 가지 다른 방법을 시도했다.powershell을 사용하여 msiexec 프로그램을 제거하십시오.
cls
$java = Get-WmiObject -Class win32_product | where { $_.Name -like "*Java*"}
$msiexec = "c:\windows\system32\msiexec.exe";
#$msiexecargs = '/x:"$app.LocalPackage" /qr'
$msiexecargs = '/uninstall "$app.IdentifyingNumber" /qr /norestart'
if ($java -ne $null)
{
foreach ($app in $java)
{
write-host $app.LocalPackage
write-host $app.IdentifyingNumber
#&cmd /c "msiexec /uninstall $app.IdentifyingNumber /passive"
#Start-Process -FilePath $msiexec -Arg $msiexecargs -Wait -Passthru
[Diagnostics.Process]::Start($msiexec, $msiexecargs);
}
}
else { Write-Host "nothing to see here..." }
Write-Host "check end"
최종 목표는 Windows 7 로그온 스크립트를 사용하여 최종 사용자 시스템에서 모든 Java 버전을 제거한 다음 최신 버전을 설치하는 것입니다. 모든 Powershell을 만드는 것을 선호하지만이 작업을 수행 할 수없는 경우 제거 GUID로 하드 코딩 된 배치 파일을 사용합니다.
쓰기 호스트 문은 모두 디버깅 목적으로 사용됩니다. msiexec/x {GUID}/passive/norestart
오류 : "이 설치 패키지를 열 수 없습니다. 패키지가 존재하는지 확인하십시오. 액세스 할 수 있는지 또는 응용 프로그램 공급 업체에 연락하여 유효한 Windows Installer 패키지인지 확인하십시오. "
저는이 스크립트 자체가 아니라 단지이 스크립트에서 작동하지 않는다는 것을 알고 있습니다 ... 그래서 나는 그것이 구문 일이라고 생각하고 있습니다.
궁금한 점이 있으면 알려주십시오.
죄송합니다. 코드에서 시도한 다른 것들도 보여 드리고 싶습니다. 수정 한 내용에 대한 정보는 어디에서 얻을 수 있습니까? 이것은 아주 잘 작동했습니다. 감사! – grep65535
http://blogs.msdn.com/b/powershell/archive/2006/07/15/variable-expansion-in-strings-and-herestrings.aspx가 좋은 출발이라고 생각합니다. 자세한 내용은 PowerShell in Action/PowerShell in Depth 등의 책이 필요합니다. – stej