Powershell 如何将秘密类型变量传递给脚本?
我定义了一些构建定义变量,其中一些是作为secret类型创建的 我正试图将秘密变量Powershell 如何将秘密类型变量传递给脚本?,powershell,tfs,Powershell,Tfs,我定义了一些构建定义变量,其中一些是作为secret类型创建的 我正试图将秘密变量$RPASS传递给TFS上的内联powershell脚本任务,但它似乎不起作用 我在这里看了这篇文章: 但是,这些示例使用命令行 在powershell内联任务中可以传递这样的参数吗 $sec = New-Object -TypeName System.Security.SecureString "$RPASS".ToCharArray()|%{$sec.AppendChar($_)} $creds = new-o
$RPASS
传递给TFS上的内联powershell脚本任务,但它似乎不起作用
我在这里看了这篇文章:
但是,这些示例使用命令行
在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[0].ToCharArray()|%{$sec.AppendChar($|)}
但这也不起作用
[错误]无法索引到空数组中
我尝试将其直接传递到脚本中,如下所示:
$(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.
在内联脚本中使用
converttosecurestring
:
$securePassword = ConvertTo-SecureString -String "$(RPASS)" -AsPlainText -Force
$creds = [System.Management.Automation.PSCredential]::new($env:USERNAME, $securePassword)
您不需要传递参数,因为TFS将解析内联脚本中的变量您应该在参数中传递变量,但还需要在脚本中添加参数:
Param (
[string]$RPASS
)
$sec = New-Object -TypeName System.Security.SecureString
$RPASS.ToCharArray()|%{$sec.AppendChar($_)}
并在“Arguments”字段中传递变量:
-RPASS $(RPASS)
您可以看到,如果我只执行$RPASS.tocharray()
操作,我将看到secret变量:
-RPASS $(RPASS)
我不使用param的原因是因为在线脚本限制为500个字符:/n您可以用更少的字符在一行中完成:
param($RPASS)
所以我可以删除这一行。ToCharArray()|%{$sec.AppendChar($|)}您不再需要它了。这两行创建凭证对象,可与Send-MailMessage cmdlet一起使用