У меня есть сценарий powershell, который я хочу запустить как часть выпуска. Сценарий создаст запрос на изменение ServiceNow. Сценарий работает нормально, если я встраиваю в него имя пользователя и пароль (сохраняемые как переменные), и это отлично подходит для тестирования. Теперь я хочу сохранить имя пользователя и пароль в переменных TFS.
Я успешно извлек переменные TFS, когда они хранятся в виде простого текста. Но когда я «блокирую» пароль в переменных (сделайте его скрытым), аутентификация не будет выполнена в ServiceNow. Я уверен, что это связано с методом, который я использую, но я не настоящий программист, я просто прикуриваю фрагменты кода и собираю их вместе. Вот часть скрипта:
$user = "tfs_changerequest"
$pass = "$env:SNPWD-Hidden" # doesn't work with hidden password
# Show SN Password #
Write-Output "SN Password #" $pass # This looks correct
Write-Output "SN PW Hidden #" $SNPWD-Hidden # This appears to have worked
# Build auth header
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user, $pass)))
# Set proper headers
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add('Authorization',('Basic {0}' -f $base64AuthInfo))
$headers.Add('Accept','application/json')
$headers.Add('Content-Type','application/json')
Опять же, это просто фрагмент, но я получаю ошибку:
##[error]Invoke-RestMethod : The remote server returned an error: (401) Unauthorized.
Я думаю, что это имеет отношение к строке $ base64AuthInfo Я предполагаю, что переменная пароля ($ pass) должна быть скрыта, но я не знаю, как это сделать.