如何从 WMIC 检查 ReturnValue

How to check ReturnValue from WMIC

我正在设置一个简单的批处理文件来在 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;
};

唯一的区别是返回值。如何检查 return 值,例如根据我得到的 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)