我正在尝试使用批处理文件自动将特定密钥发送到AD。不幸的是,我无法使用任何其他语言。我正在使用以下结果:
manage-bde -protectors c: -get
并使用下一个代码中的数字密码ID:
manage-bde -protectors -adbackup c: -id {numerical password ID}
这是我到目前为止所做的事情(只是想获得正确的密钥):
@echo off
manage-bde -protectors c: -get
echo+
echo+
echo+
for /f "tokens=1,*" %%a in (' "manage-bde -protectors c: -get" ^| findstr ID') do set npi=%%b
echo+
echo+
echo My Numerical Password ID:
echo %npi%
echo+
pause
我得到的是:
BitLocker驱动器加密:配置工具版本6.1.7601
版权所有(C)Microsoft Corporation。保留所有权利。
卷C:[]
所有钥匙保护器
数字密码:
ID:{DEDAF9BC-C42A-45A4-BB5D-609ED1898923} - 我想要这个 -
密码:
648712-106084-513103-486041-654894-310619-687401-654068
TPM:
ID:{DEDAF9BC-C42A-45A4-BB5D-609ED1898923}
我的数字密码ID:
{DEDAF9BC-C42A-45A4-BB5D-609ED1898923}
按任意键继续 。 。 。
我认为它只会抓住第一个“ID”,但它一直指向TPM下的第二个。
知道我做错了吗?
感谢您的帮助,
Ĵ
答案 0 :(得分:1)
...
echo+
(set npi=)
for /f "tokens=1,*" %%a in (
' "manage-bde -protectors c: -get" ^| findstr ID'
) do IF NOT DEFINED npi set npi=%%b
...
如果具有现有值,则额外的SET强制npi为UNSET。对语句进行括号化可确保npi不会设置为该行的任何尾随空格。
FOR / F处理每一行输入,因此npi
首先设置为第一个值,然后设置为第二个值。如果IF NOT DEFINED
为er,则添加npi
可确保SET发生,但尚未定义,因此它会保留遇到的FIRST值。
答案 1 :(得分:1)
在if not defined
之前添加set
。如上面的脚本,set
被调用两次,因为有两行匹配findstr "ID"
。你最终会得到第二个,因为那是最后一个被解析的。 if not defined
捕获第一个,然后忽略所有其他。
在次要注意事项上,当您想要的只是第二个令牌时,没有理由捕获token=1,*
。
@echo off
manage-bde -protectors c: -get
echo+
echo+
echo+
set npi=
for /f "tokens=2" %%a in ('manage-bde -protectors c: -get ^| findstr "ID:"') do if not defined npi set "npi=%%a"
echo+
echo+
echo My Numerical Password ID:
echo %npi%
echo+
pause
想要在你的时候脱掉牙箍吗?将for
行替换为以下内容。
for /f "tokens=2 delims={}" %%a in ('manage-bde -protectors c: -get ^| findstr "ID:"') do if not defined npi set "npi=%%a"
答案 2 :(得分:0)
我知道这是一个老话题,但是我昨天才发现它,对我很有帮助。我只是想补充rojo的答案。
在Windows 10-1809中工作时,我发现返回的ID的顺序可能因计算机而异。如果您想要一个仅提取恢复密钥并将其发送到AD的脚本,则可以在您的manage-bde命令中添加-type(或-t)RecoveryPassword。
rojo的更新代码如下:
@echo off
manage-bde -protectors c: -get -t RecoveryPassword
echo+
echo+
echo+
set npi=
for /f "tokens=2" %%a in ('manage-bde -protectors c: -get -t RecoveryPassword ^| findstr "ID:"') do set "npi=%%a"
echo+
echo+
echo My Numerical Password ID:
echo %npi%
echo+
manage-bde -protectors -adbackup c: -ID %npi%
pause