我有3个Powershell脚本:A.ps1
,B.ps1
,RunAB.ps1
。
A.ps1
和B.ps1
位于同一台计算机上,RunAB.ps1
位于不同的计算机上。
我希望RunAB.ps1
能够投放。通过远程PowerShell,A和B同时(即并行)。
A和B都需要2-3天才能完成运行。
为了做到这一点,我写了RunAB.ps1
(仅限相关行):
Invoke-Command -ComputerName $physical_server_ip -ScriptBlock {Set-Location "C:\Test"; Powershell.exe -File "A.ps1"} -Credential $physical_credential -AsJob
Invoke-Command -ComputerName $physical_server_ip -ScriptBlock {Set-Location "C:\Test"; Powershell.exe -File "B.ps1"} -Credential $physical_credential -AsJob
这在开始时运行良好,但是大约2个小时后,远程机器上的A和B的powershell进程终止(它们没有完成)......
如果我从第二个AsJob
移除Invoke-Command
(导致RunAB.ps1
等待此命令的原因)那么它似乎解决了问题 - A和B继续在远程机器上运行,但我不想让RunAB.ps1
等待......
做我想做的事的正确方法是什么?
由于
答案 0 :(得分:2)
您需要延长要连接的PSSession的空闲超时。默认值为7200000
,即2小时
要查看当前超时值:
Get-PSSessionConfiguration | Select-Object Name, *Timeout*
设置超时值:
Invoke-Command -ComputerName $physical_server_ip -SessionOption {New-PSSessionOption -IdleTimeout XXXXXXX} ...
#Where XXXXXX is the value in milliseconds less than the Max timeout.