使用powershell查找并执行文件

yfjy0ee7  于 2023-01-02  发布在  Shell
关注(0)|答案(1)|浏览(117)

我必须从我们的资产管理软件部署的脚本中找到并执行一个.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执行
但我是不是应该简单地合并它和|或者有没有更简单的方法/它甚至会起作用。

czq61nw1

czq61nw11#

正如评论者所建议的,可以使用Test-Path来测试路径是否存在:

$uninstallPath = Join-Path ${env:ProgramFiles(x86)} 'software\software name\Uninstall.exe'

if( Test-Path $uninstallPath ) {
    $proc = Start-Process -FilePath $uninstallPath -ArgumentList '/S /qn' -Wait -PassThru
    $proc.WaitForExit()
    $ExitCode = $proc.ExitCode 
    Exit $ExitCode
}

我还避免了硬编码的“Program Files(x86)”目录,使用了environment variable,使代码更加健壮,因为env变量名中有圆括号,所以必须用大括号括起来。
为了增加健壮性,您可以从注册表中读取卸载程序的路径,如this Q&A所述。如果幸运的话,该程序甚至在注册表中存储了一个QuietUninstallString,它为您提供了静默卸载的完整命令行。

相关问题