以下是我们在TeamCity中使用的脚本。我们偶尔会在这一步骤中获得一个挂起的构建,其他一些类似的写入。从我能够发现的是两个服务器之间发生错误。
该脚本创建远程会话并在远程计算机上执行。远程脚本成功完成,但从不导致此脚本退出,从而导致构建步骤挂起。
$username = '%SvcAcct%'
$password = '%SvcAcctPwd%'
$credentials = New-Object System.Management.Automation.PSCredential `
-ArgumentList @($username,(ConvertTo-SecureString -String $password -AsPlainText -Force))
$remoteSession = New-PSSession -ComputerName %RemoteServer% -Authentication Credssp -Credential $credentials
Invoke-Command -FilePath %teamcity.build.checkoutDir%\NovoDeploy\Powershell\InstallNovo.ps1 `
-ArgumentList "C:\NovoDeploy\Installers","C:\NovoDeploy\%InstallSettingsConfigFileName%","%SvcAcctPwd%" -Session $remoteSession
#Get the exit code from the remote session so
#we can pass it through to TeamCity and fail the build.
$remoteSessionExitCode = Invoke-Command { $lastexitcode } -Session $remoteSession
exit $remoteSessionExitCode
答案 0 :(得分:0)
尝试在脚本末尾使用remove-pssession -$remoteSession
。
Remove-PSSession
关闭一个或多个Windows PowerShell会话(PSSessions)。我想也许你的退出命令只是退出用于运行远程命令的远程PowerShell会话,然后继续作为exit
之后的本地PowerShell会话。如果在分配exitcode变量后添加remove-pssession
,那么您的exit
命令可能会根据需要退出本地终端。
只是一个理论,但它值得测试。