ConvertTo-SecureString
Преобразует обычный текст или зашифрованные строки в безопасные строки.
Синтаксис
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
Указывает обычную текстовую строку для преобразования в защищенную. Командлеты защищенной строки помогают защищать секретные тексты. Текст шифруется в целях конфиденциальности и после использования удаляется из памяти компьютера. Если этот параметр используется для ввода обычного текста, система не сможет его защитить.
Type: | SwitchParameter |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
Начиная с PowerShell 7 параметр Force больше не требуется при использовании параметра AsPlainText . Хотя параметр не используется, он не был удален для обеспечения совместимости с более ранними версиями PowerShell.
Type: | SwitchParameter |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Key
Указывает ключ шифрования, используемый для преобразования исходной защищенной строки в зашифрованную стандартную строку. Допустимая длина ключа — 16, 24 и 32 байта.
Type: | Byte[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SecureKey
Указывает ключ шифрования, используемый для преобразования исходной защищенной строки в зашифрованную стандартную строку. Ключ должен быть предоставлен в формате защищенной строки. Защищенная строка будет преобразована в массив байтов для использования в качестве ключа. Допустимая длина безопасного ключа — 8, 12 и 16 кодовых точек.
Type: | SecureString |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-String
Задает строку для преобразования в защищенную строку.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Входные данные
Вы можете передать стандартную зашифрованную строку в этот командлет.
Выходные данные
Этот командлет возвращает созданный объект SecureString .
Примечания
Некоторые символы, например смайлы, соответствуют нескольким кодовым точкам в строке, содержащей их. Избегайте использования этих символов, так как они могут вызвать проблемы и недоразумения при использовании в пароле.