我正尝试通过以下命令在不同的服务器上启动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
答案 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"