Powershell 通过Invoke命令启动作业:作业仅在远程会话中可用
我正在尝试通过以下命令在不同的服务器上启动TShark:Powershell 通过Invoke命令启动作业:作业仅在远程会话中可用,powershell,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"} 命令有效,一切正常。但
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您认为作业仅在PowerShell主机会话期间存在是正确的,这就是您在RDP时无法检索它的原因 更好的方法可能是使用
Invoke命令的-AsJob
开关。然后,您可以在本地计算机上运行Get Job
,而不是向远程主机发送RDP,从而检索结果:
Invoke-Command -Session $remoteSession -ScriptBlock { & 'C:\Program Files\Wireshark\tshark.exe' -b filesize:10000 -b files:5 -w "$tsharkResultDirectory\tshark.pcap" } -AsJob -Name "TShark"
请再次注意,如果结束本地PowerShell会话,您将失去该作业
我认为运行远程作业并使其持久化的唯一其他方法是通过*-ScheduledJob命令在磁盘上记录结果:
PS C:\> get-command *ScheduledJob | Select Name
Name
----
Disable-ScheduledJob
Enable-ScheduledJob
Get-ScheduledJob
Register-ScheduledJob
Set-ScheduledJob
Unregister-ScheduledJob