Я хочу получить пароль восстановления BitLocker через powershell, указав идентификатор ключа восстановления. Я знаю, что это можно сделать с помощью приложения Active Directory Users and Computers, что я и пытаюсь воспроизвести.
Мой процесс в настоящее время выглядит следующим образом:
- Запрашивает у пользователя идентификатор ключа восстановления
- Получить все объекты AD, для которых ObjectClass равен msFVE-RecoveryInformation
- Отфильтруйте эти результаты по DistinguishedName, что должно позволить мне получить нужную мне индивидуальную запись.
- Запишите полученный пароль восстановления BitLocker
Проблема, с которой я сталкиваюсь, заключается в том, что при использовании переменной в предложении Where-Object я не получаю никаких результатов. Если я ввожу жесткий код в идентификатор ключа восстановления, он просто отлично работает.
Вот код, который у меня есть:
$key = (read-host -Prompt "Enter starting portion of recovery key ID (8 Digits)").ToUpper()
$recoveryInformation = Get-ADObject -Filter 'ObjectClass -eq "msFVE-RecoveryInformation"' | Where-Object {$_.DistinguishedName -like "*$key*"}
echo $recoveryInformation
Я попытался сделать это несколькими разными способами, и все они закончились одним и тем же результатом, когда жестко закодированное значение сработало бы, а переменная - нет. Это наводит меня на мысль, что это то, что я получаю от пользователя, но я врезался в стену. Любая помощь будет принята с благодарностью.
Конечный результат
В конце концов, проблема с моим кодом заключается в том, что я использовал where-object вместо where. После того, как я сделал это изменение, все заработало так, как я планировал.
Примеры, предоставленные postanote , дают намного лучший результат и, безусловно, более устойчивы. Последний пример - лучший, чтобы дать конечный результат, который я искал.