答案1
我会将 powershell 用作批处理文件中的一行程序。我总是这样做,因为从 cmd.exe 中获取东西很麻烦。
就像(我的一个.bat文件中)一样:
for /f %%a in ('powershell -Command "Get-Date -format yyyy_MM_dd__HH-mm-ss"') do ECHO %%a
尝试一下这个(因为它肯定有效):
@echo off
SetLocal
for /f "delims=" %%a in ('powershell -Command "Get-ItemPropertyValue -Path 'HKCU:Control Panel\Colors\' -Name ActiveBorder"') do Set ActiveBorder=%%a
echo ActiveBordervalues are %ActiveBordervalues%
EndLocal
我不使用 Symantec Endpoint Protection,所以我实际上无法查询您的密钥,但如果我使用了,我会尝试类似的方法...
@echo off
SetLocal
for /f "delims=" %%a in ('powershell -Command "Get-ItemPropertyValue -Path 'HKLM:SOFTWARE\Symantec\Symantec Endpoint Protection\currentversion\public-opstate' -Name DeployRunningVersion"') do Set DeployRunningVersion=%%a
echo DeployRunningVersion is %DeployRunningVersion%
EndLocal
如果您需要单独的 1.2.3.4,请设置“tokens=4 delims=。”并读取 %%a、%%b、%%c 和 %%d
是的,就在你的批处理文件中。:)
如果您尝试使用使用批量无分隔符(如 | 或内部引号)的特殊查询,则需要通过转义它们来扰乱查询。在 for 循环中(需要“命令”)找出答案可能是一件非常麻烦的事情。
祝你好运!希望它能奏效。