通过OpenSSH在Windows Server 2022运行PsExec仅显示前三行求助
问题:Windows Server 2022 SSH会话中PsExec仅显示部分输出
我有一台安装了Windows Server 2022的测试机,已从官网下载包含PsExec.exe的PsTools文件夹,且启用了OpenSSH服务器。从另一客户端SSH连接到该测试机,切换到PsTools目录后无参数运行.\PsExec.exe,正常情况下程序应显示全部可用参数,但仅能看到前三行内容:
PS C:\Tools\PSTools> .\PsExec.exe
PsExec v2.43 - Execute processes remotely
Copyright (C) 2001-2023 Mark Russinovich
Sysinternals - www.sysinternals.com
尝试将Command Line和PowerShell设为OpenSSH的默认Shell,结果依旧相同。Windows 10上执行相同操作时,程序可正常显示全部内容。请问遗漏了什么配置?
可能的原因及解决方法
1. 控制台输出缓冲/分页问题
Windows Server 2022的SSH会话可能默认启用分页,导致PsExec输出被截断。可尝试以下操作:
- 强制读取stderr输出(PsExec帮助信息默认输出到stderr):
.\PsExec.exe 2>&1 | type - 临时禁用PowerShell分页:
执行后再运行$Env:PAGER = ''.\PsExec.exe即可查看完整输出。
2. OpenSSH服务TTY配置
Windows Server 2022的OpenSSH服务器可能限制了TTY交互,修改配置解决:
- 打开
C:\ProgramData\ssh\sshd_config文件,添加或修改:AllowTTY yes - 保存后重启OpenSSH服务:
重新连接SSH后测试PsExec输出。Restart-Service sshd
3. 输出流适配处理
PsExec的帮助信息走stderr流,SSH会话对其处理可能存在差异,强制输出到控制台:
.\PsExec.exe 2>&1 | Out-Host
Out-Host会绕过缓冲直接输出全部内容。
4. 终端窗口缓冲区调整
SSH客户端终端宽度不足可能导致换行异常,调整缓冲区大小:
$Host.UI.RawUI.BufferSize = New-Object System.Management.Automation.Host.Size(120, 500)
设置后再运行PsExec,查看完整输出。
内容的提问来源于stack exchange,提问作者Morris Li
相关产品推荐
相关产品推荐

