powershell執行ps1 - VSTS:將構建變量傳遞到Powershell腳本任務




tfs azure-web-sites (2)

構建變量會自動作為環境變量傳遞給所有PowerShell腳本。

所以如果你在Variables部分定義了一個變量myVar 。 您可以在腳本中以$env:myVar身份訪問它。 有一點要注意的是. 被轉換為_ 。 例如。 如果你的變量是myVar.config ,你可以在你的腳本中以$env:myVar_config訪問它。

可用的變量還包括諸如分支名稱,內部版本號等變量。要查看所有可用的變量,請運行虛擬構建/發行版定義,並添加內聯類型的PowerShell任務並運行Get-ChildItem Env: 這將顯示所有可用的環境變量,您可以看到所有自定義的變量。

更多細節可以在這裡找到

理想情況下,我想要使用構建變量(在VSTS上)配置我們的Azure Web應用程序設置,例如:

我們使用Powershell腳本執行發布任務。 為了設置應用程序設置,可以使用以下腳本:

param($websiteName, $appSettings)
Set-AzureWebsite -Name $websiteName -AppSettings $appSettings

我可以將這些構建變量手動傳遞給Powershell腳本構建任務,如下所示:

PrepareAppSettings.ps1 -websiteName "MyWebApp" -appsettings @{"MyConnectionString" = $(MyConnectionString);"MyRandomService" = $(MyRandomService);"MyRandomServiceClient"=$(MyRandomServiceClient);"MyRandomServicePassword"=$(MyRandomServicePassword)}

有沒有辦法將所有的構建變量傳遞到一個腳本,而不必顯式指定每個哈希表?


開始構建時,變量已經傳遞給PowerShell腳本。 如果我正確理解你的問題,你想一起使用這些變量,而不是一個接一個地指定它們,如下所示:

PrepareAppSettings.ps1 -websiteName "MyWebApp" -appsettings $(AllVariables)

那麼沒有辦法做到這一點。

如果你想減少傳遞給PowerShell腳本的字符串,你可以設置變量如下:

變量名稱:MyRandomService | 值:“MyRandomService”= xxxxxxxx

然後你只需要調用帶有變量名稱的PowerShell腳本。





vsts-build