Проблема с кодировкой текста в Powershell - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь преобразовать пароль, который хранится в текстовом файле, в SecureString.Вот что я пытаюсь:

$pwdPath = 'C:\Password.txt'
$pwd = (ConvertTo-SecureString -Force -AsPlainText (Get-Content $pwdPath))

Когда я делаю это, пароль неверный, и я получаю ошибку, когда пытаюсь его использовать.Однако, если я передаю содержимое файла непосредственно в командной строке:

enter image description here

Тогда мы в порядке.Сначала я подумал, что в конце файла может быть дополнительный разрыв строки.Однако я попытался использовать .Trim() и все такое.Если я посмотрю на длину файла в сравнении с длиной строки, я получу подсказку:

enter image description here

Файл в два раза больше числабайты в виде строки.Так что, возможно, проблема с кодировкой.Если посмотреть на первые несколько байтов:

enter image description here

Я не эксперт по кодированию текста, но выглядит как кодировка на основе UTF-16 (двабайт на символ) без спецификации в начале (97 - a, 52 - 4 и т. д.).Я перепробовал все виды способов «конвертировать» этот файл во что-то, совместимое с ConvertTo-SecureString, но до сих пор (например, Get-Content $pwdPath | Set-Content -Encoding ASCII ./test.txt) я не нашел ничего, что приводило бы к действительному паролю.

1 Ответ

0 голосов
/ 21 мая 2019

Итак, согласно @PetSerAl, для доступа к файлу Unicode без Bom, так как powershell не такой умный, как блокнот:

Get-Content $pwdPath -Encoding Unicode
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...