调用局域网WINDOWS主机的WMIC接口批量执行VBS脚本

cmdEXEC.bat的内容:

FOR /F "delims=, tokens=1,2,3" %%i in (C:\tmps\pwd.txt) do C:\tmps\bat.bat %%i %%j %%k

pwd.txt包含:IP地址,用户名,密码,以逗号分隔,每一台主机换行。

bat.bat的内容:

@set ip=%1
@set uname=%2
@set upwd=%3
wmic /node:%ip% /user:%uname% /password:%upwd% os >nul || goto :sb
dir v:\ >nul 2>&1 && goto :vsb
wmic /node:%ip% /user:%uname% /password:%upwd% process call create "cmd /c mkdir c:\tmpss"
wmic /node:%ip% /user:%uname% /password:%upwd% share call create "","temp description","","tmps","","c:\tmpss",0
net use v: \\%ip%\tmps %upwd% /user:%uname%
copy c:\tmps\96c221be-6ab2-ef53-1589-fe16877914ca.vbs v:\
wmic /node:%ip% /user:%uname% /password:%upwd% process call create "cmd /c cscript 96c221be-6ab2-ef53-1589-fe16877914ca.vbs","c:\tmpss"
@set slptimes=1
goto :sleep

:sleep
set /a slptimes+=1
if %slptimes% gtr 60 (echo exceeded 5 min && goto :eof)
@echo ---------------- waiting %slptimes% ----------------
@ping -n 5 localhost>nul
dir v:\*96c221be-6ab2-ef53-1589-fe16877914ca*xml >nul 2>&1 || goto :sleep
dir v:\*96c221be-6ab2-ef53-1589-fe16877914ca*xml >nul 2>&1 && goto :getfile

:getfile
rem dir v:\
copy v:\*96c221be-6ab2-ef53-1589-fe16877914ca*xml c:\tmps\
goto :delshare

:delshare
net use v: /delete
wmic /node:%ip% /user:%uname% /password:%upwd% share where name="tmps" call delete
wmic /node:%ip% /user:%uname% /password:%upwd% process call create "cmd /c del /Q c:\tmpss"
goto :eof

:sb
@echo =================================== Can't connect to %ip%===================================
goto :eof

:vsb
@echo =================================== Can't use v:\ %vnode%===================================
goto :eof

:eof

注意:96c221be-6ab2-ef53-1589-fe16877914ca.vbs是要执行的脚本

由于WINDOWS2003无法通过WIMC创建可写的共享,可考虑换种方式如用默认共享等方式拷贝.VBS文件,

如net use v: \\%ip%\c$\tmpss %upwd% /user:%uname%

WINDOWS2008则可以通过WMIC创建可写共享

双击cmdEXEC.bat,即可一次在多台WINDOWS主机上面执行脚本,不用依赖WINDOWS的域环境和组策略

猜你喜欢

转载自blog.csdn.net/lsysafe/article/details/81082939