我必须从我们的资产管理软件部署的脚本中找到并执行一个.exe文件。目前它看起来像这样:
Set-Location $PSScriptRoot
$proc = (Start-Process -FilePath "C:\Program Files (x86)\software\software name\Uninstall.exe" -ArgumentList "/S /qn" -Wait -PassThru)
$proc.WaitForExit()
$ExitCode = $proc.ExitCode
Exit($ExitCode)
据我所知,文件位置的位置是设置好的,而一些用户没有它,因此它失败了。
我知道你可以搜索一个
并使用Start-process -Filepath
执行
但我是不是应该简单地合并它和|或者有没有更简单的方法/它甚至会起作用。
1条答案
按热度按时间czq61nw11#
正如评论者所建议的,可以使用
Test-Path
来测试路径是否存在:我还避免了硬编码的“Program Files(x86)”目录,使用了environment variable,使代码更加健壮,因为env变量名中有圆括号,所以必须用大括号括起来。
为了增加健壮性,您可以从注册表中读取卸载程序的路径,如this Q&A所述。如果幸运的话,该程序甚至在注册表中存储了一个
QuietUninstallString
,它为您提供了静默卸载的完整命令行。