ConvertTo-SecureString
Преобразует обычный текст или зашифрованные строки в безопасные строки.
Синтаксис
Secure (по умолчанию)
ConvertTo-SecureString
[-String] <String>
[[-SecureKey] <SecureString>]
[<CommonParameters>]
PlainText
ConvertTo-SecureString
[-String] <String>
[-AsPlainText]
[-Force]
[<CommonParameters>]
Open
ConvertTo-SecureString
[-String] <String>
[-Key <Byte[]>]
[<CommonParameters>]
Описание
Командлет ConvertTo-SecureString преобразует зашифрованные стандартные строки в безопасные строки. Он также может преобразовать обычный текст в безопасные строки. Он используется с ConvertFrom-SecureString и Read-Host. Безопасная строка, созданная командлетом, может использоваться с командлетами или функциями, для которых требуется параметр типа SecureString. Безопасная строка может быть преобразована обратно в зашифрованную стандартную строку с помощью командлета ConvertFrom-SecureString. Это позволяет хранить его в файле для последующего использования.
Если преобразованная стандартная строка была зашифрована с помощью ConvertFrom-SecureString с помощью указанного ключа, этот же ключ должен быть указан в качестве значения параметра Key или SecureKey командлета ConvertTo-SecureString.
Замечание
Дополнительные сведения о защите данных SecureString см. в разделе Как безопасно SecureString?.
Примеры
Пример 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 параметр принудительного не требуется при использовании параметра AsPlainText. Однако, включая параметр Force, гарантирует совместимость инструкции с более ранними версиями.
$Secure_String_Pwd = ConvertTo-SecureString "P@ssW0rD!" -AsPlainText -Force
Осторожность
Следует избегать использования строк обычного текста в скрипте или из командной строки. Обычный текст может отображаться в журналах событий и журналах команд.
Параметры
-AsPlainText
Задает строку обычного текста для преобразования в безопасную строку. Командлеты безопасной строки помогают защитить конфиденциальный текст. Текст шифруется для конфиденциальности и удаляется из памяти компьютера после его использования. Если этот параметр используется для предоставления обычного текста в качестве входных данных, система не может защитить входные данные таким образом.
Свойства параметра
| Тип: | SwitchParameter |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
PlainText
| Position: | 1 |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Force
Начиная с PowerShell 7 параметр Force больше не требуется при использовании параметра AsPlainText. Хотя параметр не используется, он не был удален для обеспечения совместимости с более ранними версиями PowerShell.
Свойства параметра
| Тип: | SwitchParameter |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
PlainText
| Position: | 2 |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Key
Указывает ключ шифрования, используемый для преобразования исходной безопасной строки в зашифрованную стандартную строку. Допустимые длины ключей: 16, 24 и 32 байта.
Свойства параметра
| Тип: | Byte[] |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
Open
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-SecureKey
Указывает ключ шифрования, используемый для преобразования исходной безопасной строки в зашифрованную стандартную строку. Ключ должен быть предоставлен в формате безопасной строки. Безопасная строка будет преобразована в массив байтов, который будет использоваться в качестве ключа. Допустимые длины безопасного ключа: 8, 12 и 16 точек кода.
Свойства параметра
| Тип: | SecureString |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
Secure
| Position: | 1 |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-String
Указывает строку для преобразования в безопасную строку.
Свойства параметра
| Тип: | String |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
(All)
| Position: | 0 |
| Обязательно: | True |
| Значение из конвейера: | True |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
CommonParameters
Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.
Входные данные
String
Вы можете передать стандартную зашифрованную строку в этот командлет.
Выходные данные
SecureString
Этот командлет возвращает созданный объект SecureString.
Примечания
Некоторые символы, такие как смайлики, соответствуют нескольким точкам кода в строке, содержащей их. Избегайте использования этих символов, так как они могут вызвать проблемы и недоразумения при использовании в пароле.