标题: 如何获取wmic的返回值
[打印本页]
作者: czweb
时间: 2010-3-28 14:17
标题: 如何获取wmic的返回值
set aa=wmic computersystem where Name="%COMPUTERNAME%" call JoinDomainOrWorkgroup Name="sohu.com" username="temp" password="temp" fjoinoptions=1 accountou=null
if %aa% == 0 (
echo 成功
goto :Next
)
这样子不行,高手来指点一下吧
作者: Hanyeguxing
时间: 2010-3-28 14:35
1,执行一个命令,然后读其输出中受否含有关键词来判断。
2,执行一个命令,然后从%ERRORLEVEL%的返回代码来判断。
3,执行一个命令,然后检查被修改对象是否发生正确的变化来判断。
对于你提供的事例,这三种方法都可以使用(你的批处理本身就写错了)。
例如,从wmic或注册表读相应的值,来判断是否为希望修改的值。由于wmic的返回代码比较复杂,所以一般不使用%ERRORLEVEL%来判断wmic是否正常执行。
Last edited by Hanyeguxing on 2010-3-28 at 14:52 ]
作者: czweb
时间: 2010-3-28 14:46
%ERRORLEVEL%不行,wmic不管什么参数都是返回成功,只有ReturnValue = 0;时才是对的,
是不是要用for循环读取外部文件来判断呀,不太会,帮人到底给写一下行吗
作者: Hanyeguxing
时间: 2010-3-28 14:54
Originally posted by czweb at 2010-3-28 14:46:
%ERRORLEVEL%不行,wmic不管什么参数都是返回成功,只有ReturnValue = 0;时才是对的,
是不是要用for循环读取外部文件来判断呀,不太会,帮人到底给写一下行吗
当wmic的返回信息中包含“错误”时,就会有%ERRORLEVEL%。
但如“无可用范例”等,是不会返回0以外的代码的。
WMIC可以get你尝试修改过的值,reg读取对应的注册表,都可以用啊
例如wmic computersystem where "name='abc'" call rename 123更改计算机名abc为123
这个时候就可以读%COMPUTERNAME%是否为123来判断。
Last edited by Hanyeguxing on 2010-3-28 at 15:00 ]
作者: czweb
时间: 2010-3-28 15:00
因为我写一个错误的域、用户名和密码,也是返回成功,
C:\Documents and Settings\cz>wmic computersystem where Name="%COMPUTERNAME%" cal
l JoinDomainOrWorkgroup Name="ss" username="aa" password="aa" fjoinoptions=1 acc
ountou=null
执行 (\\XC1\ROOT\CIMV2:Win32_ComputerSystem.Name="XC1")->JoinDomainOrWorkgroup()
方法执行成功。
输出参数:
instance of __PARAMETERS
{
ReturnValue = 2691;
};
所以只有判断ReturnValue才是有效的
Last edited by czweb on 2010-3-28 at 15:02 ]
作者: Hanyeguxing
时间: 2010-3-28 15:02
那就读ReturnValue是否为你需要的值来判断呗
作者: czweb
时间: 2010-3-28 15:03
可惜不会写,能帮忙吗

作者: lxzzr
时间: 2010-4-1 09:10
Originally posted by czweb at 2010-3-28 02:46 PM:
%ERRORLEVEL%不行,wmic不管什么参数都是返回成功,只有ReturnValue = 0;时才是对的,
错!!!
【1】%ERRORLEVEL%不是不行;
【2】ReturnValue = 0不一定是对的。