跑几个" long"带有远程Powershell的脚本

时间:2018-01-11 16:02:56

标签: powershell powershell-remoting

我有3个Powershell脚本:A.ps1B.ps1RunAB.ps1

A.ps1B.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等待......

做我想做的事的正确方法是什么?

由于

1 个答案:

答案 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.