Я пытаюсь преобразовать пароль, который хранится в текстовом файле, в SecureString.Вот что я пытаюсь:
$pwdPath = 'C:\Password.txt'
$pwd = (ConvertTo-SecureString -Force -AsPlainText (Get-Content $pwdPath))
Когда я делаю это, пароль неверный, и я получаю ошибку, когда пытаюсь его использовать.Однако, если я передаю содержимое файла непосредственно в командной строке:
Тогда мы в порядке.Сначала я подумал, что в конце файла может быть дополнительный разрыв строки.Однако я попытался использовать .Trim()
и все такое.Если я посмотрю на длину файла в сравнении с длиной строки, я получу подсказку:
Файл в два раза больше числабайты в виде строки.Так что, возможно, проблема с кодировкой.Если посмотреть на первые несколько байтов:
Я не эксперт по кодированию текста, но выглядит как кодировка на основе UTF-16 (двабайт на символ) без спецификации в начале (97 - a
, 52 - 4
и т. д.).Я перепробовал все виды способов «конвертировать» этот файл во что-то, совместимое с ConvertTo-SecureString
, но до сих пор (например, Get-Content $pwdPath | Set-Content -Encoding ASCII ./test.txt
) я не нашел ничего, что приводило бы к действительному паролю.