【发布时间】:2017-08-06 22:16:11
【问题描述】:
我在构建定义中添加了名为 Password 的秘密变量,如下图所示:
我想在我的一个构建步骤中将密码传递给 PowerShell 脚本,如下图所示:
我的 PowerShell 脚本如下所示
Param
(
[Parameter(Mandatory=$true)]
[string]$UserName,
[Parameter(Mandatory=$true)]
[string]$Password
)
$appPool = New-WebAppPool -Name "test"
$appPool.processModel.userName = $userName
$appPool.processModel.password = $password
$appPool.processModel.identityType = "SpecificUser"
$appPool | Set-Item
但看起来密码的类型不是字符串。我试过PSCredential 但没有用。有人可以帮助我吗?如何将密码从构建步骤传递到 PowerShell 脚本和安全变量的类型?我无法直接读取环境变量,因为我在目标机器上运行 PowerShell 脚本。所以唯一的选择是将密码作为输入传递给脚本。
【问题讨论】:
-
试试
$appPool.processModel.password = (ConvertTo-SecureString -Force -AsPlainText $password) -
秘密变量被解密以供您的构建步骤访问。所以你可以在密码参数中使用它们。您在构建过程中是否遇到任何错误?我已经测试了你的脚本,没有出现问题。
-
但是这个说法是行不通的。 $appPool.processModel.password = (ConvertTo-SecureString -Force -AsPlainText $password)。它的值是 System.Security.SecureString 但不是实际密码。所以apppool没有设置正确的密码。它不知道如何解密。
标签: powershell tfsbuild continuous-deployment