使用当前代理凭据从TeamCity构建远程执行PowerShell

时间:2014-12-21 22:17:53

标签: powershell teamcity credentials agent

TeamCity使用构建代理执行构建。我拥有的构建代理是Windows上的代理,它在域凭据下作为服务运行。

我需要在一个构建步骤中在远程Web服务器上调用Invoke-Command。

当我这样做时(为了简单起见,删除了很多东西):

$password = ConvertTo-SecureString "actualpasswordhere" -AsPlainText -Force
$credentials = New-Object System.Management.Automation.PsCredential("domain\teamcityagent1",$password)
...
Invoke-Command -computername $IISComputerName -Credential $credentials -ScriptBlock ${function:BackupSite} -ArgumentList $IISSiteName, $IISBackupDirectory

有效。但是当我为当前正在执行的用户提供这样的凭证时:

$credentials = [System.Net.NetworkCredential]::DefaultCredentials

(周围的代码是一样的) 我得到内部等待而不是在Invoke-Command处执行。我没有等太久,但即使在5分钟内也没有任何反应。

我不希望在脚本中明确提供登录名和密码,因为凭据基本上是针对运行构建代理的同一用户。如何解决在脚本代码中提供登录名和密码的需要?

1 个答案:

答案 0 :(得分:0)

我做了两件事并且有效:

  1. PowerShell运行程序参数中未选中的-NoProfile参数。 (没有单独帮助)
  2. 从Invoke-Command中删除-Credentail参数。
  3. 这将我的代码作为当前用户 - 服务用户执行。