Назад | Перейти на главную страницу

TrimStart () неправильно обрезает строку

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

В будущем, пожалуйста, сначала прочтите документацию по рассматриваемому методу.