首页/系统/Windows 运维速查/PsExec 远程执行(Sysinternals)

PsExec 远程执行(Sysinternals)

Sysinternals 工具集里的“瑞士军刀”:拷程序到远端执行、以 SYSTEM 身份运行、批量多机操作,不依赖 WinRM。

Windows 运维速查系统更新于 2026-10-13

PsExec 是什么

PsExec 是 Sysinternals 工具集里最有名的远程执行工具:它把一个小服务程序推到远端,用服务方式启动命令,因此不依赖 WinRM,也不要求对端开启远程管理。它还能以 SYSTEM 身份运行、把本地程序拷到远端执行、多机批量下发。代价是落地过程与勒索软件的横向移动手法高度相似,容易被 EDR 拦。

基本信息

适用平台Windows 客户端与服务器;需 Sysinternals 授权
前提ADMIN$ 管理共享可达 + 目标管理员凭据;开放 445 端口
常用参数-s 以 SYSTEM 运行;-c 拷贝本地程序到远端执行;-d 不等待;-u/-p 指定凭据
首次运行-accepteula 跳过许可协议,便于脚本化

典型使用场景

  • 快速验证:WinRM/防火墙没配好之前,用 PsExec 直接跑一条命令确认链路
  • 需要 SYSTEM 权限的操作:某些驱动、注册表或服务级任务只有 SYSTEM 能完成
  • 批量执行本地脚本:把 bat 或 exe 拷到多台机器上运行
  • 老环境运维:Windows 2003/2008 时代遗留环境里最常用的远程执行方式
  • 排障取证:在目标机上以高权限运行 Process Explorer、Autoruns 等工具

常用示例

常用示例
psexec \\web01 -accepteula cmd /c "ipconfig /all > C:\temp\ip.txt"
:: 以 SYSTEM 身份后台执行
psexec \\web01 -s -d cmd /c "sc query wuauserv"
:: 把本地脚本拷到远端执行
psexec \\web01 -c cleanup.bat
:: 多机批量(先从主机名清单文件读)
psexec @hosts.txt -d -accepteula cmd /c "gpupdate /force"
:: 指定其他凭据
psexec \\web01 -u DOMAIN\ops -p ****** cmd /c whoami

常见报错对照

报错原因处理方向
Access is denied凭据不足或非管理员确认管理员组与被 UAC 远程限制拦截的可能
找不到网络路径ADMIN$ 不可达或 445 被拦检查防火墙、文件共享服务与 SMB 版本
找不到文件远端工作目录在 system32写绝对路径或先 cd
EDR 告警/被拦服务落地行为被判可疑事先与安全团队报备并留工单
PsExec 的行为与攻击者的横向移动几乎一致:往目标机写服务程序并以 SYSTEM 启动。被终端防护告警是正常现象,生产环境使用前先和安全团队沟通,避免封锁与误判。
远端程序有图形界面时要用 -i 指定交互会话,否则窗口在会话 0 里看不见;无人值守场景更稳的做法是把输出重定向到文件,事后再读取回来。

易错点

  • 远端相对路径直接写:PsExec 默认工作目录在 %windir%\system32,脚本常因此找不到文件
  • 命令行明文带密码:密码会进入命令历史、进程命令行与审计日志,属高危操作
  • 把它当成日常远程管理手段:依赖 SMB 与本地管理员凭据,长期使用会掩盖权限治理问题
  • 忘记 -d 的业务影响:默认等待远程进程结束,长任务会让脚本长时间挂住

数据来源与参考

  • Microsoft Sysinternals:PsExec
  • Microsoft Learn:Sysinternals 工具

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌