所以我使用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
有没有人经历过这种行为,可以指出我错过了什么/做错了什么?
感谢,
答案 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"
}