当我通过我正在研究的Powershell项目时,我还有一些问题仍未得到解决。
我的目标是创建一个能够卸载ClickOnce部署的C#应用程序的Powershell脚本,此外还可能运行各种安装程序(但这部分我稍后会担心)。
我已经能够弄清楚如何为我的应用程序获取UninstallString,我只是坚持我的选择。我尝试使用Invoke-Expression和其他一些方法来运行它,但没有任何结果。由于我对Powershell的全新机会很好,我可能做错了什么,但我希望我找不到这样做的正确方法。这是我目前使用的相关代码片段来获取我的UninstallString:
$App = gci "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\" |
foreach { gp $_.PSPath } |
select DisplayName,DisplayVersion,InstallDate,Publisher,UninstallString |
where { $_.DisplayName -match "scan" }
如果有人对如何进行提出建议,我们将不胜感激!
答案 0 :(得分:1)
哦,好主人带回了几年前我拼凑在一起的VBS脚本的记忆,它会打开一个HTML界面,让你输入一个计算机名称,如果它在网络上,它会扫描远程注册表中的东西在卸载密钥中,删除KB,并提供要卸载的事项的下拉列表。我将永远不会再使用数百行甚至数千行脚本。无论如何,足够的回忆。
您应该能够使用“呼叫”运算符“&”在UninstallString属性中运行字符串,如:
& $App.UninstallString
现在,说过你会想要考虑一些事情。如果它是用MSIEXEC.EXE执行的,那么它们很有可能将它设置为MSIEXEC.EXE /I {<some GUID>}
,您可能希望将/I
替换为/X
并附加/NB-!
到字符串的末尾(如果我记得我的开关正确,将显示最小进度条显示并禁止任何可能弹出的“卸载完成”窗口。)
答案 1 :(得分:0)
我浏览了这个 - 太累了,无法阅读所有内容:-),我只是想添加一篇带有PowerShell卸载字符串的文章的链接,希望它能向您发送正确的方向:{{3} }
答案 2 :(得分:0)
这是我只需要解决的一个例子。 &或call运算符需要一个cmd字符串,然后是一个参数字符串数组。 Powershell 5.1仅与程序或msi提供程序一起使用。
$uninstall = -split (get-package 'Support Button *bomgar*' |
% { $_.metadata['uninstallstring'] })
& $uninstall[0] $uninstall[1..($uninstall.length-2)] # take off last arg --prompt
或者,如果您要等待,则是相同的主意:
start -wait $uninstall[0] $uninstall[1..($uninstall.length-2)]