批量远程执行PsExec命令时出现异常输出的原因咨询
批量远程执行PsExec命令时出现异常输出的原因咨询
嘿,这个情况我之前碰过类似的,大概率是PsExec在批量处理多台机器输出时的输出缓冲区串扰或者字符编码解析的小bug!
你想啊,当你一次性给多台机器发命令,每台机器的返回结果会挤在同一个控制台输出流里,PsExec拼接这些输出的时候,偶尔会出现最后一台目标机器的名称没被完全解析,就和某个系统文件路径(比如你看到的C:\Windows\system32\wdigest.dll)混在了一起,于是就出现了\\Ser????这种乱码的机器名前缀。
结合你提到的是从2012升级到2016的服务器环境,还有两个可能的原因供你参考:
- 本地执行PsExec的机器和部分目标服务器的系统字符编码不一致,批量输出时编码转换出错,导致机器名被截断乱码
- 部分升级后的服务器里,Wdigest相关组件还有残留的兼容性问题,单台执行时输出流单一没暴露,批量执行时就触发了这个异常输出
给你几个可以试试的排查小方法:
- 把目标机器列表拆成2-3台的小批量执行,看看还会不会出现这个异常输出
- 先在本地控制台执行
chcp 65001切换到UTF-8编码,再运行批量命令,观察输出是否正常 - 给PsExec加上
-nobanner参数关掉版权提示,减少输出缓冲区的干扰项
备注:内容来源于stack exchange,提问作者David Shader
相关产品推荐
相关产品推荐

