通过调用命令启动作业:作业仅在远程会话中可用



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

最新更新