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

标签 powershell teamcity remote-server

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

目前构建步骤是:

  • Template files for
  • Compile code in
  • Package project
  • Send package to test servers
  • Unzip package on test servers


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

正在运行的示例如下:
$password = ConvertTo-SecureString "%PasswordVar%" -AsPlainText -Force
$credentials = New-Object System.Manager.Automation.PsCredential("%UsernameVar%", $password)
etsn -computername %TestServer1Var% -Credential $credentials

当这被称为 TeamCity 只是挂起时,它必须手动停止,否则它将永远停留在代理上的这一步。我试过不使用凭据,我试过不使用 etsn 并使用完整的命令名,还尝试了其他远程命令方法,似乎没有任何效果。

那么有没有办法让 TeamCity 实际运行命令?或者找出是什么导致它不确定地处理这一步?

最佳答案

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

如果它对这里的任何人有帮助,那么我最终使用的命令是解压缩远程文件,使用 7zip 命令行作为 native 解决方案似乎从未起作用。

$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

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

关于powershell - Teamcity powershell runner 在服务器上远程运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15788486/

相关文章:

powershell - 如果省略必需的参数,是否可以强制 PowerShell 脚本抛出?

powershell - 在Jenkins主节点和从节点之间共享文件

plugins - 通过SSH将Teamcity部署到另一台服务器

java - 在 Eclipse 中通过 RSE 插件运行远程 Java 程序时遇到问题

azure - 无法访问 Azure VM 上托管的 Flask 服务器

c# - 在 C# 中使用分区在远程服务器上激活 COM+

powershell - 将桌面路径添加到 powershell 以轻松在文件夹之间切换?

powershell - 如何在对象中搜索值?

git - 如果存在针对该 SHA1 的构建,则阻止 TeamCity 构建快进 merge 到 master

使用 PlatformBuilder 6.0 的 TeamCity 与 mspdb80.dll 的链接问题