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. Если при создании безопасной строки ключ не указан, строка шифруется API защиты данных Windows (DPAPI).

Note

Дополнительные сведения о защите данных 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. Чтобы использовать параметр asPlainText , параметр Force также должен быть включен в команду.

$Secure_String_Pwd = ConvertTo-SecureString "P@ssW0rD!" -AsPlainText -Force

Осторожность

Следует избегать использования строк обычного текста в скрипте или из командной строки. Обычный текст может отображаться в журналах событий и журналах команд.

Параметры

-AsPlainText

Задает строку обычного текста для преобразования в безопасную строку. Командлеты безопасной строки помогают защитить конфиденциальный текст. Текст шифруется для конфиденциальности и удаляется из памяти компьютера после его использования. Если этот параметр используется для предоставления обычного текста в качестве входных данных, система не может защитить входные данные таким образом. Чтобы использовать этот параметр, необходимо также указать параметр Force.

Свойства параметров

Тип:SwitchParameter
Значение по умолчанию:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

PlainText
Position:1
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Force

Подтверждает, что вы понимаете последствия использования параметра AsPlainText и по-прежнему хотите использовать его.

Свойства параметров

Тип:SwitchParameter
Значение по умолчанию:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

PlainText
Position:2
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Key

Указывает ключ шифрования, используемый для преобразования исходной безопасной строки в зашифрованную стандартную строку. Допустимые длины ключей: 16, 24 и 32 байта. Если ключ не соответствует ключу, используемому для шифрования исходной безопасной строки, возвращается недопустимое значение. Если зашифрованная строка была создана без ключа, не следует использовать ключ для преобразования его обратно в безопасную строку.

Свойства параметров

Тип:

Byte[]

Значение по умолчанию:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

Open
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-SecureKey

Указывает ключ шифрования, используемый для преобразования исходной безопасной строки в зашифрованную стандартную строку. Ключ должен быть предоставлен в формате безопасной строки. Допустимые длины безопасного ключа: 8, 12 и 16 точек кода. Если ключ не соответствует ключу, используемому для шифрования исходной безопасной строки, возвращается недопустимое значение. Если зашифрованная строка была создана без ключа, не следует использовать ключ для преобразования его обратно в безопасную строку.

Свойства параметров

Тип:SecureString
Значение по умолчанию:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

Secure
Position:1
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-String

Указывает строку для преобразования в безопасную строку.

Свойства параметров

Тип:String
Значение по умолчанию: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.

Примечания

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