通过Invoke-Command启动作业:作业仅在远程会话中可用

时间:2017-07-03 11:37:01

标签: powershell

我正尝试通过以下命令在不同的服务器上启动TShark:

Invoke-Command -Session $remoteSession -ScriptBlock {start-job -ScriptBlock {& 'C:\Program Files\Wireshark\tshark.exe' -b filesize:10000 -b files:5 -w "$tsharkResultDirectory\tshark.pcap"} -Name "TShark"}

命令有效,一切都很好。但是,当我通过例如连接到远程服务器时远程桌面,并执行命令Get-Job没有返回任何内容。 这意味着预先启动的作业仅在远程会话中运行。有没有人知道是否有办法在“全球”范围内开始工作。如果我不小心关闭了我的PowerShell窗口,我不希望TShark停止跟踪。

THX

1 个答案:

答案 0 :(得分:3)

您是正确的,该作业仅在PowerShell主机会话期间存在,这就是您在RDP时无法检索它的原因。

更好的方法可能是使用-AsJob的{​​{1}}开关。然后,您可以通过在本地计算机上运行Invoke-Command而不是RDP到远程主机来检索结果:

Get-Job

再次注意,如果您结束本地PowerShell会话,您将失去工作。

我认为运行远程作业并使其保持不变的唯一方法是通过* -ScheduledJob命令将它们的结果记录在磁盘上:

Invoke-Command -Session $remoteSession -ScriptBlock { & 'C:\Program Files\Wireshark\tshark.exe' -b filesize:10000 -b files:5 -w "$tsharkResultDirectory\tshark.pcap" } -AsJob -Name "TShark"