如何从WMIC检查ReturnValue

问题描述

我正在设置一个简单的批处理文件,以在MS sql Express服务器上配置一些内容。配置项之一是启用TCP / IP协议。我已经将其与以下命令配合使用:

WMIC /NAMESPACE:\\root\Microsoft\sqlServer\ComputerManagement15 PATH ServerNetworkProtocol Where ProtocolName='Tcp' CALL SetEnable

现在我要检查它是否有效。如果可以,我得到输出

Executing (\\PCNAME\root\Microsoft\sqlServer\ComputerManagement15:ServerNetworkProtocol.InstanceName="sqlEXPRESS",ProtocolName="Tcp")->SetEnable()
Method execution successful.
Out Parameters:
instance of __ParaMETERS
{
        ReturnValue = 0;
};

为此,我必须以管理员身份运行批处理文件。如果没有,我将得到输出

Executing (\\PCNAME\root\Microsoft\sqlServer\ComputerManagement15:ServerNetworkProtocol.InstanceName="sqlEXPRESS",ProtocolName="Tcp")->SetEnable()
Method execution successful.
Out Parameters:
instance of __ParaMETERS
{
        ReturnValue = 2147942405;
};

唯一的区别是ReturnValue。如何检查返回值,例如根据返回值是否为0或其他值回显“成功”或“失败”?

我也愿意通过使用另一个wmic命令来检查是否启用了TCP / IP来解决该问题,但是我一直没有找到解决方法

解决方法

您可以尝试:

for /F "tokens=2 delims==; " %R in ('wmic /NameSpace:\\root\Microsoft\SqlServer\ComputerManagement15 path ServerNetworkProtocol where ProtocolName='Tcp' call SetEnable ^| findstr /RC:"\<ReturnValue ="') do @echo/%R

提取ReturnValue的值,或者,如果您只想将其与零进行比较:

wmic /NameSpace:\\root\Microsoft\SqlServer\ComputerManagement15 path ServerNetworkProtocol where ProtocolName='Tcp' call SetEnable | findstr /RC:"\<ReturnValue = 0;\>" && (echo zero) || (echo non-zero)