Я написал сценарий для резервного копирования ключей 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 делает это, поскольку он не встретил никаких символов, которых еще нет в вашем массиве.
В будущем, пожалуйста, сначала прочтите документацию по рассматриваемому методу.