Как передать переменную секретного типа в скрипт? - PullRequest
2 голосов
/ 13 июня 2019

Я определил некоторые переменные определения сборки, некоторые из которых я сделал как секретный тип.

Я пытаюсь передать секретную переменную $RPASS встроенной задаче сценария powershell в TFS, но, похоже, она не работает.

Я посмотрел этот пост здесь: Как добавить секретную переменную в качестве переменной среды задачи в VSTS

, однако в примерах используется командная строка.

возможно ли передавать подобные аргументы во встроенной задаче powershell?

$sec = New-Object -TypeName System.Security.SecureString
"$RPASS".ToCharArray()|%{$sec.AppendChar($_)}
$creds = new-object -typename System.Management.Automation.PSCredential -args "$env:USER", $sec
Send-MailMessage -From "tfs@domain.com" -Subject "YAY!" -To "user@domain.com" -Body "$env:DB_NAME" -SmtpServer server.com -Port 25 -Credential $creds

После второго ответа в этом посте я попытался передать аргументы

$(RPASS)

arg

, а затем изменили эту строку $arg[0].ToCharArray()|%{$sec.AppendChar($_)}

, но это не сработало либо

[error] Невозможно индексироватьв пустой массив.

Я попытался передать его непосредственно в сценарий следующим образом:

$(RPASS).ToCharArray()|%{$sec.AppendChar($_)}

, но это привело к ошибке:

+ ********.ToCharArray()|%{$sec.AppendChar($_)}
+                                 ~
An expression was expected after '('.
    + CategoryInfo          : ParserError: (:) [], ParseException
    + FullyQualifiedErrorId : ExpectedExpression


2019-06-13T00:57:50.7974750Z ##[error]Process completed with exit code 0 and had 1 error(s) written to the error stream.

Ответы [ 2 ]

1 голос
/ 13 июня 2019

Вы должны передать его в аргументах, но вам также необходимо добавить параметр в сценарий:

Param (
 [string]$RPASS
)
$sec = New-Object -TypeName System.Security.SecureString
$RPASS.ToCharArray()|%{$sec.AppendChar($_)}

А в поле «Аргументы» передайте переменную:

-RPASS $(RPASS)

enter image description here

Вы можете видеть, если я только сделаю $RPASS.ToCharArray() Я увижу секретную переменную:

enter image description here

enter image description here

1 голос
/ 13 июня 2019

Используйте ConvertTo-SecureString в своем встроенном скрипте:

$securePassword = ConvertTo-SecureString -String "$(RPASS)" -AsPlainText -Force
$creds = [System.Management.Automation.PSCredential]::new($env:USERNAME, $securePassword)

Вам не нужно передавать аргумент, потому что TFS разрешит переменную во встроенном скрипте

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...