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 .

Примечание.

Обратите внимание, что содержимое 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

Входные данные

String

Вы можете передать стандартную зашифрованную строку в этот командлет.

Выходные данные

SecureString

Этот командлет возвращает созданный объект SecureString .

Примечания

Некоторые символы, такие как смайлики, соответствуют нескольким точкам кода в строке, содержащей их. Избегайте использования этих символов, так как они могут вызвать проблемы и недоразумения при использовании в пароле.