2013-05-22 38 views
2

我的Powershell腳本必須從VS命令提示符運行,並且我想通過檢查msbuild.exe是否在路徑中來驗證。我設法做到這一點使用where.exe:如何查找某個文件在系統路徑中是否可用?

where.exe msbuild.exe > $null 
if ($LASTEXITCODE -ne 0) 
{ 
    throw "BuildAll must be run from ""Developer Command Prompt for VS2012"" shortcut." 
} 

然而,這種感覺並不像「PowerShell的方式」 - 有沒有做到這一點PowerShell的本地方法是什麼?因爲腳本是

if (TEST-PATH (JOIN-PATH (Split-Path -parent $MyInvocation.MyCommand.Definition) "msbuild.exe ")) 
{ 
    ... 
} 
else 
{ 
    ... 
} 

回答

1

試試這個,如果msbuild.exe必須在同一文件夾如果你想檢查是否build.exe可作爲命令($ ENV任何可用的路徑:路徑),你可以這樣做:

if ([bool](Get-Command "msbuild.exe" -ea silentlycontinue)) 
{ 
    ... 
} 
+0

'Get-Command'解決方案就是這樣。我注意到我不需要劇組''布爾]' - 我基本上只是這樣做: 'if(!(Get-Command「msbuild.exe」...)){throw「BuildAll must be run .. 「}' – Jonathan

+0

@Jonathan很高興幫忙!我不喜歡拋出異常,但它可以工作! ;) –

相關問題