通过wmic远程执行procdump64.exe生成转储文件为空如何排查?
问题原因分析
- 参数逻辑错误:你对procdump的命令参数使用有误。procdump的正确语法为
procdump64.exe -ma <目标进程名/PID> <转储文件输出路径>,你命令中写的U:\lsass.exe是错误参数:procdump默认转储正在运行的系统进程,你传入文件路径会让procdump尝试启动U盘中的lsass.exe程序再转储,而你U盘中的lsass.exe并没有运行,自然不会生成有效转储内容,你应该直接写进程名lsass即可,不需要写文件路径。 - 重定向逻辑错误:你在wmic的进程创建参数中直接写
>符号,在PowerShell环境下执行时,该符号会优先被本地PowerShell解析为将本地wmic命令的输出重定向到你本地的C:\dump.dmp,而非传递给远程机器的cmd.exe实现远程输出重定向,这也是你得到空文件的核心原因之一。如果需要让重定向符号传递到远程cmd,需要对其做转义处理。 - 盘符映射不生效:wmic远程调用创建的进程运行在远程机器的Session 0上下文下,该上下文默认无法识别普通用户挂载的移动介质盘符(也就是你说的U盘U盘),哪怕U盘物理插在远程机器上,只要是用户登录后才挂载的盘符,Session 0中的进程都无法访问,会直接报找不到
U:\procdump64.exe的错误,你看不到报错是因为没有做错误输出重定向。 - 权限不足问题:转储lsass进程需要远程机器的本地管理员权限以及
SeDebugPrivilege特权,你使用的域账号如果没有对应权限,procdump执行转储时会直接报错退出,不会生成有效转储。
修正建议
- 先把procdump64.exe上传到远程机器的本地固定路径,比如
C:\Temp\目录,避免盘符映射问题 - 修正命令语法,转义重定向符号,示例修正后的命令如下:
wmic /node:[IP Address] /user:"[DOMAIN/USER]" /password:"[PASSWORD]" process call create "cmd.exe /c C:\Temp\procdump64.exe -ma lsass C:\dump.dmp 2>&1"
- 执行后可以先检查远程机器的
C:\根目录是否生成有效转储文件,如果仍然有问题,可以把错误输出重定向到指定日志文件排查原因。
内容的提问来源于stack exchange,提问作者user17459284
相关产品推荐
相关产品推荐

