PsExec无法打开stdin,stdout和stderr命名管道

时间:2015-06-12 07:27:35

标签: named-pipes psexec windows-scripting

我正在使用PsExec从笔记本电脑访问两台服务器。访问其中一个服务器(运行Windows 2008R2 Enterprise)工作正常。访问另一个(Windows 2008R2标准版)失败并显示错误(下面的消息)。我的笔记本电脑有Windows 8.1。

文献

  • 我已按照指定的here
  • 验证我的系统符合要求
  • 调查之前拒绝的访问权限,我按照here
  • 列出的步骤进行了操作

命令

采取的步骤:

  • net use \\<servername>\Admin$ /user:me *成功
  • dir \\<servername>\Admin$按预期列出远程目录
  • PsExec.exe \\<servername> -e cmd非常慢,然后失败并显示以下消息:

    Error establishing communication with PsExec service on <servername>:
    The system cannot find the file specified.
    

据我所知(虽然我不是Windows专家),但我在客户端和服务器端的管理员组中。

分析1

  • 执行命令后,psexesvc.exe仍在远程计算机上运行,​​因此该命令至少部分成功
  • 在每次调用之前,我停止并删除psexesvc服务,并手动删除可执行文件

分析2

我使用wireshark来观察客户端和服务器之间的通信。以下似乎发生了:

  • 文件PSEXESVC.EXE已成功创建并编写
  • SVCCTL的“绑定”和“地图”
  • 延迟约20秒(?)
  • 几个SVCCTL调用(可能导致创建并启动PSEXESVC服务)
  • 已打开命名管道PSEXESVC并成功写入
  • 无法找到stdin,stdout和stderr的命名管道(STATUS_OBJECT_NAME_NOT_FOUND

尝试消除权限问题,我尝试通过在服务器端运行pipelist.exe(找到here)来验证命名管道实际上不存在。我实际上没有看到管道,但如果它们只存在很短的时间,我可能不会频繁地运行pipelist.exe

版本号

  • PsExec版本2.11

0 个答案:

没有答案