我正在尝试通过以下命令在不同的服务器上启动 TShark:
Invoke-Command -Session $remoteSession -ScriptBlock {start-job -ScriptBlock {& 'C:Program FilesWiresharktshark.exe' -b filesize:10000 -b files:5 -w "$tsharkResultDirectorytshark.pcap"} -Name "TShark"}
该命令有效,一切都很好。但是当我通过远程桌面等连接到远程服务器并执行命令Get-Job
没有任何返回时。 因此,这意味着预先启动的作业仅在远程会话中运行。有谁知道是否有办法在"全局"范围内开始工作。我不希望 TShark 停止跟踪,如果我不小心关闭了我的 PowerShell 窗口。
感谢
你说得对,作业仅在 PowerShell 主机会话期间存在,这就是在 RDP 时无法检索它的原因。
更好的方法可能是使用Invoke-Command
的-AsJob
开关。然后,可以通过在本地计算机上运行Get-Job
而不是通过 RDP 连接到远程主机来检索结果:
Invoke-Command -Session $remoteSession -ScriptBlock { & 'C:Program FilesWiresharktshark.exe' -b filesize:10000 -b files:5 -w "$tsharkResultDirectorytshark.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