0

バッチ ファイルを使用して特定のキーを 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
Copyright (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 の下で 2 番目の ID を指し続けます。

私が間違っていることは何か分かりますか?

助けてくれてありがとう、

J

4

3 に答える 3

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、最初の値が最初に設定され、次に 2 番目の値が設定されます。を追加すると、まだ定義されていないIF NOT DEFINED場合に SET が発生することが保証npiされるため、最初に検出された値が保持されます。

于 2013-03-20T00:52:57.797 に答える
1

の前に を追加しif not definedますset。上記のスクリプトがあるように、set一致する行が 2 つあるため、 が 2 回呼び出されていますfindstr "ID"。それが最後に解析されるため、2番目のものになります。 if not defined最初の 1 つをキャプチャし、他のすべてを無視します。

token=1,*マイナーな注意として、2 番目のトークンだけが必要な場合にキャプチャする理由はありません。

@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"
于 2013-03-20T00:54:08.867 に答える
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
于 2019-02-14T19:23:58.290 に答える