Teamcity powershell runner可在服务器上远程运行命令

Gro*_*fit 5 powershell teamcity remote-server

我有一个奇怪的问题,每当我尝试远程调用我们的测试服务器时,TeamCity就会挂起.

目前构建步骤是:

  • 模板文件
  • 编译代码
  • 包项目
  • 将包发送到测试服务器
  • 在测试服务器上解压缩包

现在一切正常,直到最后一个阶段,解压缩远程服务器上的包.现在我想运行一个powershell命令来连接并运行命令然后退出.如果我从远程桌面使用PowerShell,并且提供的用户凭据是正确的,这一切都正常.

正在运行的示例如下:

$password = ConvertTo-SecureString "%PasswordVar%" -AsPlainText -Force
$credentials = New-Object System.Manager.Automation.PsCredential("%UsernameVar%", $password)
etsn -computername %TestServer1Var% -Credential $credentials
Run Code Online (Sandbox Code Playgroud)

当这称为TeamCity只是挂起时,它必须手动停止或它将永远保持在代理上的这一步骤.我试过不使用凭据,我试过不使用etsn并使用完整的命令名称,也尝试了其他远程命令方法,似乎没有任何工作.

那么有没有办法让TeamCity实际运行命令?或者找出导致它无限期地处理这一步骤的原因?

Gro*_*fit 8

这是一个小问题的组合,1用户在通过团队城市查询时未正确解析域名,因此需要将其添加到用户名中some-user@some-domain.还有一个问题是,在进行PSSESSION连接时会出现某种连接限制,但是如果我使用脚本块切换到Invoke-Command,它可以正常工作.

如果它帮助这里的任何人是我最终解压缩远程文件的命令,使用7zip命令行作为本机解决方案似乎永远不会工作.

$password = ConvertTo-SecureString "%TestServer.Password%" -AsPlainText -Force
$credentials = New-Object System.Management.Automation.PsCredential("%TestServer.Username%",$password)

$scriptBlock1 = {`
`
    $sevenZip = "%TestServer.ReleasePath%\7za.exe"; `
    &$sevenZip x %TestServer.ReleasePath%\web-package.zip -o%TestServer.WebPath% * -aoa; `
}
Invoke-Command -computername %TestServer.Server% -Credential $credentials -scriptblock $scriptBlock1
Run Code Online (Sandbox Code Playgroud)

要记住的一件事是用户名包含上面列出的域,还需要魔术引号以允许脚本块分布在行上以及分号以指示任务应该一起运行.