我正在编写一个脚本来帮助标准化 Windows 8.1 Pro 映像。在此部分中,我尝试使用以下脚本验证 BitLocker 是否已加密驱动器:
:VerifyEncryption
REM Verifies if the OS is encrypted
cls
echo Verifying if the primary drive is encrypted by BitLocker...
cd %SystemRoot%\system32
for /F "tokens=1*" %%G in ('MANAGE-BDE -STATUS ^| FIND /I "ENCRYPTION_METHOD:"') do (
IF "%%H"=="NONE" (
GOTO :ENCRYPT
) ELSE (
GOTO :DONTENCRYPT
)
)
:DONTENCRYPT
echo Encrypted.
pause
exit
:ENCRYPT
echo Not Encrypted.
pause
exit
无论机器是否加密,我总是得到“已加密”。即使我没有收到错误,它仍然默认为下一行,而没有实际进行检查。有人能解释一下吗?
答案1
如果区分大小写。您应该使用如果我或匹配输出的大小写管理-bde-状态:
IF "%%H"=="None"
或者,不区分大小写:
IF /I "%%H"=="NONE"
类似地,还需要在这行中匹配命令的输出:
for /F "tokens=1*" %%G in ('MANAGE-BDE -STATUS ^| FIND /I "ENCRYPTION_METHOD:"') do (
您正在寻找加密方法:,但需要搜索加密方法:(删除下划线)。由于有额外的空间,您还需要更改代币=1*到代币=2*::
for /F "tokens=2*" %%G in ('MANAGE-BDE -STATUS ^| FIND /I "ENCRYPTION METHOD:"') do (
答案2
这适用于 Windows 8、Windows 10 和 Server 2012R2(均为 64 位):
FOR /F "skip=10 tokens=2*" %%t in ('manage-bde c: -STATUS')
这个适用于Windows 7(64位):
FOR /F "skip=10 tokens=2*" %%t in ('manage-bde -STATUS')