在我的脚本中,我将要运行一个命令
pandoc -Ss readme.txt -o readme.html
但我不确定是否pandoc已安装。所以我想做(伪代码)
if (pandoc in the path)
{
    pandoc -Ss readme.txt -o readme.html
}
我怎样才能真正做到这一点?
在我的脚本中,我将要运行一个命令
pandoc -Ss readme.txt -o readme.html
但我不确定是否pandoc已安装。所以我想做(伪代码)
if (pandoc in the path)
{
    pandoc -Ss readme.txt -o readme.html
}
我怎样才能真正做到这一点?
if (Get-Command "pandoc.exe" -ErrorAction SilentlyContinue) 
{ 
   pandoc -Ss readme.txt -o readme.html
}
如果您想测试路径中不存在命令,例如显示错误消息或下载可执行文件(想想 NuGet):
if ((Get-Command "pandoc.exe" -ErrorAction SilentlyContinue) -eq $null) 
{ 
   Write-Host "Unable to find pandoc.exe in your PATH"
}
尝试
(Get-Help gcm).description
在 PowerShell 会话中获取有关 Get-Command 的信息。
这是大卫布拉班特的回答精神的一个功能,它检查最小版本号。
Function Ensure-ExecutableExists
{
    Param
    (
        [Parameter(Mandatory = $True)]
        [string]
        $Executable,
        [string]
        $MinimumVersion = ""
    )
    $CurrentVersion = (Get-Command -Name $Executable -ErrorAction Stop).Version
    If ($MinimumVersion)
    {
        $RequiredVersion = [version]$MinimumVersion
        If ($CurrentVersion -lt $RequiredVersion)
        {
            Throw "$($Executable) version $($CurrentVersion) does not meet requirements"
        }
    }
}
这允许您执行以下操作:
Ensure-ExecutableExists -Executable pscp -MinimumVersion "0.62.0.0"
如果满足要求或抛出错误,它什么也不做。