PowerShell远程脚本退出,但不退出父脚本

时间:2016-05-17 18:14:07

标签: powershell teamcity

以下是我们在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

1 个答案:

答案 0 :(得分:0)

尝试在脚本末尾使用remove-pssession -$remoteSession

Remove-PSSession关闭一个或多个Windows PowerShell会话(PSSessions)。我想也许你的退出命令只是退出用于运行远程命令的远程PowerShell会话,然后继续作为exit之后的本地PowerShell会话。如果在分配exitcode变量后添加remove-pssession,那么您的exit命令可能会根据需要退出本地终端。

只是一个理论,但它值得测试。