WMIC远程执行脚本时,嵌套WMIC回连执行日志脚本失效问题求助
问题分析
当通过电脑1的WMIC远程启动电脑2上的Script.bat时,脚本运行在电脑2的**会话0(系统服务会话)**中——这个会话无交互式用户的网络凭据缓存,也没有完整的网络访问上下文。而本地运行Script.bat时是在用户交互式会话里,能直接使用当前用户的凭据完成回连电脑1的WMIC验证,这就是嵌套WMIC命令执行失败的核心原因。
解决方案
1. 显式指定回连WMIC的凭据
在Script.bat的嵌套WMIC命令中,直接传入电脑1的有效用户凭据,避免依赖会话默认凭据:
@echo off REM 执行目标程序并捕获输出 foo.exe > execution_log.txt findstr "success" execution_log.txt if %errorlevel% equ 0 ( REM 回连电脑1执行成功日志脚本 wmic /node:电脑1的IP或主机名 /user:电脑1\管理员账号 /password:对应密码 process call create "cmd /c C:\路径\Success.bat" ) else ( REM 回连电脑1执行失败日志脚本 wmic /node:电脑1的IP或主机名 /user:电脑1\管理员账号 /password:对应密码 process call create "cmd /c C:\路径\Failure.bat" )
如果不想明文存储密码,可预先在电脑2上添加电脑1的凭据缓存:
cmdkey /add:电脑1的主机名 /user:电脑1\管理员账号 /pass:对应密码
之后Script.bat中的WMIC命令即可省略/user和/password参数,直接调用缓存凭据。
2. 通过计划任务在用户会话运行脚本
改用schtasks远程创建计划任务,让Script.bat在电脑2的交互式用户会话中运行,继承用户的网络凭据:
在电脑1上执行以下命令,远程创建并触发任务:
REM 创建计划任务 schtasks /create /s 电脑2的主机名 /u 电脑2\管理员账号 /p 对应密码 /tn "RunScriptTask" /tr "C:\路径\Script.bat" /sc once /st 00:00 /rl highest /f REM 立即启动任务 schtasks /run /s 电脑2的主机名 /u 电脑2\管理员账号 /p 对应密码 /tn "RunScriptTask"
3. 检查WMI权限与防火墙配置
- WMI权限:在电脑1的「计算机管理」→「服务和应用程序」→「WMI控制」右键属性→「安全」,添加电脑2的用户并授予「远程启用」权限。
- 防火墙规则:在电脑1上执行命令开放WMI通信端口:
netsh advfirewall firewall add rule name="WMI固定端口" dir=in action=allow protocol=TCP localport=135 netsh advfirewall firewall add rule name="WMI动态端口" dir=in action=allow service=Winmgmt enable=yes
内容的提问来源于stack exchange,提问作者franjuanele
相关产品推荐
相关产品推荐

