arrays - 使用注册表卸载字符串 powershell 卸载
问题描述
我正在尝试创建一个 powershell 脚本,它将卸载我们工作室中所有版本的程序。
我查看了注册表,可以看到我们的工作室计算机中安装了 3 个程序字符串
{D4BE10F2-3E2D-4120-863A-765623D53264}
{77067FD9-800C-48B4-803D-569642ADABC5}
{1DB1AEB7-EDBD-4BB1-87DB-26C72576DA42}
我创建了一个测试脚本:
msiexec.exe /x{D4BE10F2-3E2D-4120-863A-765623D53264} /q
并在机器上使用它,这有效并且该版本的程序已被卸载。
我想创建一个脚本,循环所有 3 个字符串并在正确的字符串上成功,因为如果不进行扫描,我不知道哪台机器有什么版本。
所以我创建了一个`powershell脚本:
foreach ($guid in '{D4BE10F2-3E2D-4120-863A-765623D53264}',
'{77067FD9-800C-48B4-803D-569642ADABC5}',
'{1DB1AEB7-EDBD-4BB1-87DB-26C72576DA42}') {
$exe = 'C:\Windows\System32\msiexec.exe'
$ps = Start-Process -PassThru -Wait $exe "/x /q"
if ($ps.ExitCode -eq 0) { "Success"; exit 0 }
}
Write-Warning "Uninstallation failed."
exit $ps.ExitCode
这对我不起作用,因为它不断返回卸载失败,我不确定发生了什么。
有什么建议吗?
解决方案
即使安装了所有三个版本,这也将起作用:
foreach ($guid in '{D4BE10F2-3E2D-4120-863A-765623D53264}',
'{77067FD9-800C-48B4-803D-569642ADABC5}',
'{1DB1AEB7-EDBD-4BB1-87DB-26C72576DA42}') {
$exe = 'C:\Windows\System32\msiexec.exe'
$ps = Start-Process $exe -ArgumentList "/x$guid /q" -PassThru -Wait
if ($ps.ExitCode -eq 0) {
Write-Host "$($guid): Success"
} else {
Write-Host "$($guid): Failed"
}
}
推荐阅读
- python - 访问 Pandas 系列
- asp.net - html下拉事件在亚马逊移动应用程序页面中不起作用
- r - 为什么我会遇到 ar 模型的奇异矩阵问题?
- reactjs - 在 jboss eap 7.3 上部署反应包?
- php - 如何在 PHP 中将使用“foreach”创建的函数作为字符串返回以使用 wordpress contactform 7 动态字段发送
- python - 如何在 url-path 中不指定标识符 (pk) 的情况下实现部分数据更新?
- java - Spring Data Redis 参数没有名称
- libgdx - Libgdx | 迷宫创作
- excel - 将 Excel 数据自动转换为 Powerpoint (VBA)?
- azure-sentinel - Azure-Sentinel Defender 数据连接器