我想创建一个Powershell脚本,该脚本既可以在构建代理程序上下文中的TFS上执行,也可以在本地执行。在TFS上,各种predefined build variables都可用,例如$(Build.SourcesDirectory)。同时,该脚本在源代码树中也可用,因此我希望能够在未设置这些变量的本地运行它。我发现恢复到默认值的最短方法是以下带有令人不安的长异常类型的Try..Catch块:

Try {
    $SourcesDirectory = $(Build.SourcesDirectory)
}
Catch [System.Management.Automation.CommandNotFoundException] {
    $SourcesDirectory = "..\..\Local\Path\To\Sources\Directory"
}

Write-Output $SourcesDirectory

是否有“更精细”的方法来完成此任务?

最佳答案

当然,您可以使用简单的inline-if语句。我不确定$(Build.SourcesDirectory)是否有任何副作用,但是对于$env:BUILD_SOURCESDIRECTORY,它应该可以工作:

$sourcesDirectory = if($env:BUILD_SOURCESDIRECTORY) { $env:BUILD_SOURCESDIRECTORY } else { "..\..\Local\Path\To\Sources\Directory" }

关于powershell - 如果未设置TFS构建变量,如何退回到默认值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52852757/

10-11 09:23