VSTS Powershell Secret Variable

Как я могу использовать секретную переменную в своем скрипте powershell в своем определении выпуска?

Я сталкивался с этим, но это не работает. Каталог "$($env:AGENT_HOMEDIRECTORY)\agent\worker\Modules" не существует на новых агентов.

Какой правильный способ доступа к секретной переменной на новых хостах? Моя версия агента 2.114.0.

3 ответа

Решение

В принципе, вы должны передавать значение секретной переменной через параметры PowerShell.

Например:

Переменная: password (secret)

задача: PowerShell

Аргументы: -pass $(password)

Автор сценария:

Param(
 [String]$pass
)
if ($pass) { Write-Host "variable is NOT null" }
if (!$pass) { Write-Host "variable is null" }

Вы можете добиться этого сейчас без параметров, см. Мой сценарий ниже

ht tps:https://stackru.com/images/5ff50bd5551461c0f67d0cf6853f797db739bbc9.png

Write-Host "Client Id " $env:client_id;

Write-Host "Client Secret" $(client_secret)

$applicationId = $env:client_id;
$clientsec = "$(client_secret)" | ConvertTo-SecureString -AsPlainText -Force

$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $applicationId, $clientsec 

хорошо, но как это сделать при выполнении скрипта, когда "client_secret" - это переменная, например, ниже

PS C:\Users\xxx>>$test

ClientSecret - db @{value=; isSecret=True}
ClientSecret - Хранилище @{value=; isSecret=True}

$ тест | ForEach-Object {write-host "$($_. Keys)"}

Я не могу восстановить секретную переменную для "ConvertTo-SecureString"