ConvertTo-SecureString (Microsoft.PowerShell.Security)
ConvertTo-SecureString
- Модуль:
- Microsoft.PowerShell.Security
Преобразует обычный текст или зашифрованные строки в защищенные строки.
Синтаксис
ConvertTo-SecureString
[-String] <String>
[[-SecureKey] <SecureString>]
[<CommonParameters>]ConvertTo-SecureString
[-String] <String>
[-AsPlainText]
[-Force]
[<CommonParameters>]ConvertTo-SecureString
[-String] <String>
[-Key <Byte[]>]
[<CommonParameters>]Описание
Командлет ConvertTo-SecureString преобразует зашифрованные стандартные строки в защищенные строки. Он также может преобразовывать обычный текст в защищенные строки. Он используется с ConvertFrom-SecureString и Read-Host. Защищенную строку, созданную командлетом, можно использовать с командлетами или функциями, которым требуется параметр типа SecureString. Защищенную строку можно преобразовать обратно в зашифрованную стандартную строку с помощью командлета ConvertFrom-SecureString. Это позволяет сохранить его в файле для дальнейшего использования.
Если преобразуемая стандартная строка была зашифрована с помощью ConvertFrom-SecureString с использованием указанного ключа, этот же ключ должен быть указан в качестве значения Key или SecureKey . параметр командлета ConvertTo-SecureString.
Примечание
Обратите внимание, что согласно DotNet содержимое SecureString не шифруется в системах, отличных от Windows.
Примеры
Пример 1. Преобразование защищенной строки в зашифрованную строку.
В этом примере показано, как создать защищенную строку на основе пользовательского ввода, преобразовать защищенную строку в зашифрованную стандартную строку, а затем преобразовать зашифрованную стандартную строку обратно в защищенную строку.
PS C:\> $Secure = Read-Host -AsSecureString
PS C:\> $Secure
System.Security.SecureString
PS C:\> $Encrypted = ConvertFrom-SecureString -SecureString $Secure
PS C:\> $Encrypted
01000000d08c9ddf0115d1118c7a00c04fc297eb010000001a114d45b8dd3f4aa11ad7c0abdae98000000000
02000000000003660000a8000000100000005df63cea84bfb7d70bd6842e7efa79820000000004800000a000
000010000000f10cd0f4a99a8d5814d94e0687d7430b100000008bf11f1960158405b2779613e9352c6d1400
0000e6b7bf46a9d485ff211b9b2a2df3bd6eb67aae41
PS C:\> $Secure2 = ConvertTo-SecureString -String $Encrypted
PS C:\> $Secure2
System.Security.SecureStringПервая команда использует параметр AsSecureString командлета Read-Host для создания защищенной строки. После ввода команды все вводимые символы преобразуются в защищенную строку, а затем сохраняются в переменной $Secure.
Вторая команда отображает содержимое переменной $Secure. Поскольку переменная $Secure содержит защищенную строку, PowerShell отображает только тип System.Security.SecureString.
Третья команда использует командлет ConvertFrom-SecureString для преобразования защищенной строки в переменной $Secure в зашифрованную стандартную строку. Он сохраняет результат в переменной $Encrypted.
Четвертая команда отображает зашифрованную строку в значении переменной $Encrypted.
Пятая команда использует командлет ConvertTo-SecureString для преобразования зашифрованной стандартной строки в переменной $Encrypted обратно в защищенную строку. Результат сохраняется в переменной $Secure2. Шестая команда отображает значение переменной $Secure2. Тип SecureString указывает, что команда выполнена успешно.
Пример 2. Создание защищенной строки из зашифрованной строки в файле.
В этом примере показано, как создать защищенную строку из зашифрованной стандартной строки, сохраненной в файле.
$Secure = Read-Host -AsSecureString
$Encrypted = ConvertFrom-SecureString -SecureString $Secure -Key (1..16)
$Encrypted | Set-Content Encrypted.txt
$Secure2 = Get-Content Encrypted.txt | ConvertTo-SecureString -Key (1..16)Первая команда использует параметр AsSecureString командлета Read-Host для создания защищенной строки. После ввода команды все вводимые символы преобразуются в защищенную строку, а затем сохраняются в переменной $Secure.
Вторая команда использует командлет ConvertFrom-SecureString для преобразования защищенной строки в переменной $Secure в зашифрованную стандартную строку с использованием указанного ключа. Содержимое сохраняется в переменной $Encrypted.
Третья команда использует оператор конвейера (|) для отправки значения переменной $Encrypted в командлет Set-Content, который сохраняет значение в файле Encrypted.txt.
Четвертая команда использует командлет Get-Content для получения зашифрованной стандартной строки в файле Encrypted.txt. Команда использует оператор конвейера для отправки зашифрованной строки в командлет ConvertTo-SecureString, который преобразует ее в защищенную строку с использованием указанного ключа. Результаты сохраняются в переменной $Secure2.
Пример 3. Преобразование простой текстовой строки в защищенную строку.
Эта команда преобразует обычную текстовую строку P@ssW0rD! в защищенную строку и сохраняет результат в переменной $Secure_String_Pwd.
Начиная с PowerShell 7, параметр Force не требуется при использовании параметра AsPlainText. Однако включение параметра Force гарантирует совместимость оператора с более ранними версиями.
$Secure_String_Pwd = ConvertTo-SecureString "P@ssW0rD!" -AsPlainText -ForceОсторожность
Вам следует избегать использования простых текстовых строк в сценарии или из командной строки. Простой текст может отображаться в журналах событий и журналах истории команд.
Параметры
-AsPlainText
Указывает обычную текстовую строку для преобразования в защищенную строку. Командлеты безопасной строки помогают защитить конфиденциальный текст. Текст шифруется в целях конфиденциальности и удаляется из памяти компьютера после использования. Если вы используете этот параметр для предоставления обычного текста в качестве входных данных, система не сможет защитить эти входные данные таким образом.
- Тип :
SwitchParameter
- Позиция:
1
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Force
Начиная с PowerShell 7, параметр Force больше не требуется при использовании параметра AsPlainText. Хотя этот параметр не используется, он не был удален для обеспечения совместимости с более ранними версиями PowerShell.
- Тип :
SwitchParameter
- Позиция:
2
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Key
Указывает ключ шифрования, используемый для преобразования исходной защищенной строки в зашифрованную стандартную строку. Допустимые длины ключей — 16, 24 и 32 байта.
- Тип :
Байт[]
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-SecureKey
Указывает ключ шифрования, используемый для преобразования исходной защищенной строки в зашифрованную стандартную строку. Ключ должен быть предоставлен в формате защищенной строки. Защищенная строка будет преобразована в массив байтов, который будет использоваться в качестве ключа. Допустимая длина безопасного ключа составляет 8, 12 и 16 кодовых точек.
- Тип :
SecureString
- Позиция:
1
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-String
Указывает строку для преобразования в защищенную строку.
- Тип :
String
- Позиция:
0
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
False
Входы
Строка
В этот командлет можно передать стандартную зашифрованную строку.
Выходы
SecureString
Этот командлет возвращает созданный объект SecureString.
Примечания
Некоторые символы, например смайлы, соответствуют нескольким кодовым точкам в строке, которая их содержит. Избегайте использования этих символов, поскольку они могут вызвать проблемы и недоразумения при использовании в пароле.