【发布时间】:2021-08-08 00:04:43
【问题描述】:
已解决
感谢 Mathias R. Jessen 的建议。
下午好, 我正在编写一个脚本来检查已安装的软件并在安装时提取它们的版本信息。它以仅提取信息的基本形式工作,但对于未安装的任何内容都会引发错误。我正在尝试将一些逻辑合并到其中,以便它只会抛出未安装特定软件而不是错误消息。下面是我尝试使用的代码。所有软件的路径都通过这个脚本添加到$env:Path中。
编辑代码
已通过将Test-Path 更改为Get-Command 并将-ErrorAction SilentlyContinue 添加到Get-Command 部分来解决。
$Env:Path += ";C:\Program Files (x86)\VMware\VMware Workstation\"
$Env:Path += ";C:\Program Files (x86)\VMware\VMware Remote Console\"
$Env:Path += ";C:\Program Files (x86)\VMware\esxcli\"
$Env:Path += ";C:\Program Files\VMware\VMware OVF Tool\"
$Env:Path += ";C:\Program Files (x86)\Microsoft\Edge\Application\"
$Env:Path += ";C:\Program Files\Mozilla Firefox\"
$apps = @("ovftool","vmrc","vmware","msedge","firefox")
ForEach ($app in $apps) {
If(Get-Command $app -ErrorAction SilentlyContinue){
(Get-Command $app -ErrorAction SilentlyContinue).FileVersionInfo|Select-Object ProductName, ProductVersion |Format-Table -AutoSize
}else{
Write-Output "$app is not installed"
}
}
【问题讨论】:
-
尝试用
if(Get-Command $app)替换if(Test-Path $app) -
这行得通。我只需要添加
-ErrorAction SilentlyContinue以消除错误
标签: powershell environment-variables logic