Powershell搜索环境路径中的任何exe总是返回msbuild.exe

时间:2017-01-04 13:28:33

标签: powershell cakebuild

我正在尝试使用Cake作为构建工具,但我们在其PowerShell脚本中遇到了一个问题。

脚本正在尝试在环境变量路径中查找nuget.exe。如果它不存在,则下载它。

问题是始终会返回msbuild.exe,如果nuget.exe不存在,则脚本会在尝试msbuild.exe

时失败
$existingPaths = $Env:Path -Split ';' | Where-Object { (![string]::IsNullOrEmpty($_)) -and (Test-Path $_) }

$NUGET_EXE_IN_PATH = Get-ChildItem -Path $existingPaths -Filter "nuget.exe" | Select -First 1

无论哪个exe我尝试使用此脚本进行搜索即使存在,也会在列表中返回msbuild.exe

1 个答案:

答案 0 :(得分:3)

我会对 nuget.exe 可用性

使用不同且可能更有效的检查
if (!(Get-Command nuget.exe -ErrorAction 0)) {
    # nuget.exe is not found, download ...
}

正如Enrico Campidoglio建议的那样,您可以添加-CommandType Application。从理论上讲,它应该更有效率。在(我的)练习中,情况并非总是如此。