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" присутствует как первый символ.

0
задан 12 January 2017 в 21:53
1 ответ

Просмотр документации для TrimStart :

«Метод TrimStart удаляет из текущей строки все ведущие символы, которые находятся в параметре trimChars. Операция обрезки останавливается, когда встречается символ, которого нет в trimChars. "

« D »- это символ в вашем массиве символов, который нужно удалить, поэтому TrimStart делает это, поскольку он не встретил никаких символов, которых еще нет в вашем массиве.

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

1
ответ дан 4 December 2019 в 16:23

Теги

Похожие вопросы