我遇到了msiexec用Powershell删除java的问题。我输出了我的结果命令到屏幕上,并将其粘贴到一个批处理文件中,并且运行良好。但是当它通过Powershell执行时,它会失败,说“找不到包”。任何人都可以发现我可能做错了什么吗?我一直在上下查找谷歌,并尝试了几种不同的方式来执行命令,不带成功和相同的结果。用msiexec Powershell卸载程序
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的
写主机语句都是为了调试的目的, m只是对msiexec执行这种格式的一些变化感兴趣:msiexec/x {GUID}/passive/norestart
我得到的错误是: “这个安装包无法打开,请检查包是否存在并且您可以访问它,或与应用程序供应商联系以确认这是一个有效的Windows安装程序包。“
我知道它自己的作品,只是不在这个脚本...所以我认为这是一个语法的东西。
如果您有任何问题,请告诉我。
对不起,我想展示我在代码中尝试的其他内容。我可以从哪里获得有关您所做修改的更多信息?这工作得很好。谢谢! – grep65535
我认为http://blogs.msdn.com/b/powershell/archive/2006/07/15/variable-expansion-in-strings-and-herestrings.aspx是一个好的开始。有关更多信息,您需要一本书,例如深入操作/ PowerShell中的PowerShell等。 – stej