Я написал сценарий для резервного копирования ключей Bitlocker в Active Directory. Отлично работает, если идентификатор пароля не начинается с буквы «D». Вот сценарий
#Get recovery info
$recoveryinfo = manage-bde -protectors -get c:
#Check if bitlocker key could be located
If ($recoveryinfo -match 'All Key Protectors')
{
$recoveryinfo
$arr = $recoveryinfo | Select-String -Pattern 'ID:'
$arr[1] = $arr[1].ToString().TrimStart('ID: {')
$arr[1] = $arr[1].ToString().TrimEnd('}')
$key = $arr[1]
$key = '{' + $key + '}'
#Backup bitlocker key to active directory
manage-bde -protectors -adbackup C: -id $key
}
Else
{
$recoveryinfo
}
См. http://i.imgur.com/yryoDHM.png . Обратите внимание, что в $ key отсутствует первый символ d.
Я изменил сценарий, и, похоже, он работает для всех идентификаторов паролей, но я хотел бы понять, почему моя первая попытка не удалась, чтобы я мог избежать ошибки в будущих сценариях. Вот улучшенный скрипт:
#Get recovery info
$recoveryinfo = manage-bde -protectors -get c:
#Check if bitlocker key could be located
If ($recoveryinfo -match 'All Key Protectors')
{
$recoveryinfo
$arr = $recoveryinfo | Select-String -Pattern 'ID:'
$arr[1] = $arr[1].ToString().Substring(11, 36)
$key = $arr[1]
$key = '{' + $key + '}'
#Backup bitlocker key to active directory
manage-bde -protectors -adbackup C: -id $key
}
Else
{
$recoveryinfo
}
См. http://i.imgur.com/IY3cwri.png . Обратите внимание, как "d" присутствует как первый символ.
Просмотр документации для TrimStart :
«Метод TrimStart удаляет из текущей строки все ведущие символы, которые находятся в параметре trimChars. Операция обрезки останавливается, когда встречается символ, которого нет в trimChars. "
« D »- это символ в вашем массиве символов, который нужно удалить, поэтому TrimStart делает это, поскольку он не встретил никаких символов, которых еще нет в вашем массиве.
В будущем, пожалуйста, сначала прочтите документацию по рассматриваемому методу.