我正在使用下面这行代码根据office 2007的产品ID卸载office 2007
Start-Process C:\Windows\System32\msiexec.exe -ArgumentList "/uninstall {90120000-0030-0000-0000-0000000FF1CE}"我想在卸载完成后强制重启,但是使用-Wait或通过管道将结果传递给Out-Null不要等到卸载完成后才处理下一行,也就是重新启动。我也尝试过使用cmd卸载,但结果是一样的。
cmd /c "msiexec.exe /uninstall {90120000-0030-0000-0000-0000000FF1CE}"有没有办法强制powershell等到卸载完成后再处理Restart-Computer命令?我在想,在继续重新启动之前,可能会编写一些检测setup.exe进程何时停止的代码?
发布于 2014-10-22 01:11:33
Start-Process有一个wait参数:
Start-Process C:\Windows\System32\msiexec.exe -ArgumentList "/uninstall {90120000-0030-0000-0000-0000000FF1CE}" -wait卸载misexec.exe后重新启动的解决方案是将/forcerestart参数添加到msiexec调用中,而不是尝试在powershell中重新启动(归功于Matt):
Start-Process C:\Windows\System32\msiexec.exe -ArgumentList @("/uninstall {90120000-0030-0000-0000-0000000FF1CE}", "/forcerestart")发布于 2021-09-14 21:52:32
最简单的解决方法:通过管道输出结果。这将强制等待,直到该过程完成。
不需要start-process或cmd。
您可以通过管道连接到out-default、out-file、out-null或out-host,这取决于您希望如何处理输出。(如果您不关心输出,只需使用out-null。)
& msiexec.exe /uninstall "{90120000-0030-0000-0000-0000000FF1CE}" | Out-Null 发布于 2014-10-22 02:31:42
我的建议是从微软获取Office删除工具,并从中提取VBS脚本。在带有-wait参数的启动进程中运行该命令,然后重新启动。它不仅会像您正在做的那样尝试使用msiexec优雅地删除Office,而且还会返回并清理任何散乱的文件或注册表项,以防应用程序损坏,无法很好地卸载。
https://stackoverflow.com/questions/26492328
复制相似问题