使用 Win8.1Pro Batch:无法验证 BitLocker 是否已应用加密

使用 Win8.1Pro Batch:无法验证 BitLocker 是否已应用加密

我正在编写一个脚本来帮助标准化 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')

相关内容