如何检查 WMIC 命令的 ReturnValue 的值?

如何检查 WMIC 命令的 ReturnValue 的值?

运行 WMIC 命令时,有时 ReturnValue 不为零,表示出现错误,例如:

wmic.exe ComputerSystem where "Name='%computername%'" call Rename Name="%newname%"

或者

%WPath% /Namespace:\\root\default PATH SystemRestore Call Enable "C:\"

我分别尝试过:

for /F "tokens=2 delims==;" %R in (
wmic.exe ComputerSystem where "Name='%computername%'" call Rename Name="%newname%" ^| findstr /RC:"\<ReturnValue =\>"'
) do echo %R

和 :

%WPath% /Namespace:\\root\default PATH SystemRestore Call Enable "C:\"|find "ReturnValue = 0" >nul && goto :next

但这似乎不起作用...有人可以帮忙处理和解决这些问题吗?

答案1

Windows 客户端的弃用功能文章
[09/01/2023] ✅ Windows 10 ✅ Windows 11

Windows 管理规范命令行 (WMIC) 工具。
Windows 10 版本 21H1 和 Windows Server 21H1 通用版本中已弃用 WMIC 工具。此工具已被适用于 WMI 的 Windows PowerShell 取代。
笔记:此弃用仅适用于命令行管理工具

WMI 本身不受影响。21H1


使用或调用 Powershell

set "_var=NEWMANECOMPUTER"
powershell -ExecutionPolicy Bypass -NoLogo -NoProfile -C  "Rename-Computer -ComputerName "." -NewName $env:_var 2>$null ; $?" | find "True" >nul && echo/Done! || echo/nOp!

观察1:您可以在不执行操作的情况下测试命令行为-WhatIf | -wi

Powershell -ExecutionPolicy Bypass -NoLogo -NoProfile -C "Rename-Computer -ComputerName "." -NewName $env:_var 2>$null -wi ; $?" | find "True" >nul && echo/Done! || echo/nOp!

观察2:要更改名称,您需要管理员凭据来执行此操作,并重新启动才能生效

Rename-Computer -ComputerName "." -NewName $env:_var -Restart

观察3:注意允许组成你的%NewComputerName%变量并满足 15 个字符的最大长度


这同样适用于:

wmic /Namespace:\\root\default PATH SystemRestore Call Enable "C:\"
powershell -NoP -Ex -By -C "Enable-ComputerRestore -Drive 'C:'; $?" | find "True" >nul && echo/Done! || echo/nOp!"

  • 其他资源:

相关内容