如何在另一个用户而不是Build服务帐户下运行VSTS构建或发布任务?

时间:2018-06-07 07:58:46

标签: task azure-pipelines azure-pipelines-release-pipeline service-accounts

我正在设置构建和发布管道,部分要求是在目标服务器上运行一些Powershell和Batch命令。

在大多数情况下,所有构建和发布定义都由我们的专用Build服务帐户运行,这通常就足够了,但在这种特殊情况下,Batch命令应该由另一个服务帐户或用户在目标服务器上运行具有服务器所需的权限。

不幸的是,我们的专用Build服务帐户没有目标服务器所需的权限,因为它们是受限制的环境,并且没有计划删除这些限制。

同样,只有有限数量的服务帐户具有在目标服务器上执行所需任务的权限,但这些服务帐户都没有运行构建任务的权限,并且没有计划对其进行更改。

因此,我的挑战是像往常一样在构建服务帐户下运行构建/发布定义,但是对于特定的批处理命令操作,这些任务应由目标服务器指定的服务帐户运行。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

我们无法在构建或发布过程中更改构建服务帐户。

但是,您可以尝试以下方法与目标服务器上的其他帐户一起运行批处理命令:

  • 如果您可以将批处理命令转换为PowerShell脚本,那么 你可以使用任务Deploy: PowerShell on Target Machines 直接在目标机器上运行PowerShell脚本 特定凭证。
  • 您还可以尝试创建PowerShell脚本(请参阅下面的示例)以调用cmd.exe以运行具有特定凭据的批处理脚本。然后添加Utility: PowerShell任务以运行脚本。
Param(
  [string]$computerName = "v-tinmo-12r2",
)
$Username = "username"
$Password = ConvertTo-SecureString "pasword" -AsPlainText -Force

$cred = New-Object System.Management.Automation.PSCredential($Username,$password)

Invoke-Command -ComputerName $computerName  -Credential $cred -ErrorAction Stop -ScriptBlock {Invoke-Expression -Command:"cmd.exe /c 'C:\Scripts\Test.bat'"}

请注意 ,对于这两者,您必须先将要运行的批处理脚本或PowerShell脚本复制到目标服务器。

enter image description here