我一直在尝试为我的团队创建一种更简单的方法来获取我们网络上设备的 bitlocker 状态。在这里和其他网站上检查了一堆单独的答案后,我设法拼凑了一个几乎可以工作的批处理脚本,但是它似乎并没有正确地提取条目。代码如下:
@echo off
color a
title BitLocker Checking
:start
cls
setlocal EnableDelayedExpansion
set i=0
for /F %%a in ('net view') do (
set line=%%a
if "!line:~0,2!" equ "\\" (
set /A i+=1
echo [!i!] !line:~2!
set comp[!i!]=!line:~2!
)
)
echo.
echo.
echo Choose a computer.
choice /c 12345678 >nul
set name=!comp[%errorlevel%]!
cls
for /f "tokens=1,2 delims=[]" %%A in ('manage-bde -status -computername %name% ^| find "Conversion Status"') do set derp=%%B
if "%name%"=="" goto start
echo The status of %name% is %derp%
echo.
echo.
echo %derp% | clip
echo. %derp% copyied to clipboard.
echo.
echo Press any key.
pause
goto start
当我单独使用该manage-bde -status -computername %name% | find "Conversion Status"
线路并为其提供计算机名时,它似乎正确地拉动了转换状态行(例如,如果机器上的 bitlocker 已关闭,则“转换状态:完全解密”)。但是,如果留在批处理文件的上下文中,它会输出“计算机名称goeshere 的状态是”,然后是一个空白,就好像它没有将 Find 命令中的数据获取到变量 %B 中一样。
有人有什么建议吗?自从我编写批处理命令以来已经有一段时间了,所以有点生疏。