Powershell:Jenkins构建挂起试图调用远程PS脚本

时间:2013-12-04 16:58:39

标签: powershell jenkins powershell-remoting

所以我使用Jenkins powershell插件简单地将我构建的包复制到远程共享,解压缩并调用另一个执行某些应用程序特定安装的PowerShell脚本(它位于包中)。

现在发生的事情是,build powershell脚本成功执行,直到我执行远程共享中的脚本,当它执行该行时它才挂起...

远程计算机上的执行策略不受限制。

以下是我正在做的事情的片段:

#create temporary session with timeout of 2 minutes
$pso = new-pssessionoption -OperationTimeout 120000
$session = New-PSSession -ComputerName $env:remoteServer -sessionOption $pso
Enter-PSSession $session

#Copy distribution to CD server
Copy-Item $src $deployDir -Recurse -Force 

#Locate install script
$installScript = Get-Item($deployDir + "*-distribution\*\install.ps1")
write-host ("Executing install script at location " + $installScript)

#Execute install script
& $installScript $env:installArgs -Y

请注意我是新手写的powershell如果我的脚本是awf那么道歉:D

有没有人经历过这种行为,可以指出我错过了什么/做错了什么?

感谢,

1 个答案:

答案 0 :(得分:2)

在脚本中使用Enter-PSSession会导致脚本挂起。请改用Invoke-Command。顺便说一句,如果您使用-FilePath参数,它会将脚本从本地PC复制​​到远程PC。但是,如果该脚本引用了其他脚本,则必须复制这些脚本。

Invoke-Command -session $session -FilePath c:\somepath\install.ps1 -Arg "$env:InstallArgs -Y"

如果您想自己处理复制,请执行以下操作:

Invoke-Command -session $session -Arg $src,$deployDir,$env:installArgs -Scriptblock {
    param($src, $deployDir, $installArgs)
    Copy-Item $src $deployDir -Recurse -Force
    $installScript = GetItem "$deployDir*-distribution\*\install.ps1"
    & $installscript "$installArgs -Y"

}