如何重新连接PowerShell远程会话并查看进程输出日志?
解决PowerShell远程会话中恢复进程控制台日志的方法
一、重新连接原PSSession(优先方案)
关闭本地PowerShell窗口后,原远程会话大概率仍在远程主机上保持活跃,可通过以下步骤找回并连接:
- 打开新PowerShell窗口,先查询本地是否残留原会话记录:
Get-PSSession
如果输出里有目标主机(192.168.0.135)的会话,直接进入该会话:
Enter-PSSession -Session (Get-PSSession -ComputerName 192.168.0.135)
- 若本地无会话记录,先新建临时远程会话,在远程主机上查询所有活跃PSSession:
# 创建临时会话 $tempSession = New-PSSession -Credential $cred -ComputerName 192.168.0.135 # 在远程主机上列出所有会话 Invoke-Command -Session $tempSession -ScriptBlock { Get-PSSession }
找到启动custom-process.exe的目标会话(可通过创建时间、会话ID判断),然后连接该会话:
# 替换为远程主机上查到的原会话ID Connect-PSSession -ComputerName 192.168.0.135 -Id <原会话ID> Enter-PSSession -Session (Get-PSSession -ComputerName 192.168.0.135 -Id <原会话ID>)
连接成功后即可看到原进程的后续控制台输出。
二、补救方案:捕获运行中进程的输出(原会话已丢失时)
如果原会话已被销毁,无法直接恢复控制台输出——因为进程的标准输出/错误流已和原会话控制台绑定。此时可通过以下方式处理:
1. 提前重定向输出到文件(推荐下次启动时使用)
下次启动进程时,将所有输出重定向到本地文件,后续无论用哪个会话都能随时查看日志:
# 将标准输出和错误输出追加到日志文件 custom-process.exe *>&1 | Out-File -FilePath C:\custom-process.log -Append
查看实时日志可执行:
# 跟踪最新10行日志,实时刷新 Get-Content C:\custom-process.log -Tail 10 -Wait
2. 针对已运行的进程(临时方案)
对于已启动的custom-process.exe,Windows自带工具无法直接获取历史控制台输出。若需实时监控,可借助第三方工具(如Process Explorer)查看进程句柄和输出流,但操作复杂度较高,不如提前重定向输出高效。
内容的提问来源于stack exchange,提问作者Franco Tiveron
相关产品推荐
相关产品推荐

