ConvertTo-SecureString

将加密的标准字符串转换为安全字符串。 它还可以将纯文本转换为安全字符串。 它与 ConvertFrom-SecureString 和读取主机一起使用。

语法

ConvertTo-SecureString
              [-String] <String>
              [[-SecureKey] <SecureString>]
              [<CommonParameters>]
ConvertTo-SecureString
              [-String] <String>
              [-AsPlainText]
              [-Force]
              [<CommonParameters>]
ConvertTo-SecureString
              [-String] <String>
              [-Key <Byte[]>]
              [<CommonParameters>]

说明

ConvertTo-SecureString cmdlet 将加密的标准字符串转换为安全字符串。 它还可以将纯文本转换为安全字符串。 它与 ConvertFrom-SecureString 和读取主机一起使用。 cmdlet 创建的安全字符串可用于需要 SecureString 类型的参数的 cmdlet 或函数。 可以使用 ConvertFrom-SecureString cmdlet 将安全字符串转换回加密的标准字符串。 这样,就可以将其存储在文件中供以后使用。

如果使用指定密钥 ConvertFrom-SecureString 加密了要转换的标准字符串,则必须提供与 ConvertTo-SecureString cmdlet 的 密钥SecureKey 参数的值相同的密钥。

示例

示例 1:将安全字符串转换为加密字符串

PS C:\> $Secure = Read-Host -AsSecureString
PS C:\> $Secure
System.Security.SecureString PS C:\> $Encrypted = ConvertFrom-SecureString -SecureString $Secure
PS C:\> $Encrypted
01000000d08c9ddf0115d1118c7a00c04fc297eb010000001a114d45b8dd3f4aa11ad7c0abdae9800000000002000000000003660000a8000000100000005df63cea84bfb7d70bd6842e7
efa79820000000004800000a000000010000000f10cd0f4a99a8d5814d94e0687d7430b100000008bf11f1960158405b2779613e9352c6d14000000e6b7bf46a9d485ff211b9b2a2df3bd
6eb67aae41 PS C:\> $Secure2 = ConvertTo-SecureString -String $Encrypted
PS C:\> $Secure2
System.Security.SecureString

此示例演示如何从用户输入创建安全字符串,将安全字符串转换为加密的标准字符串,然后将加密的标准字符串转换回安全字符串。

第一个命令使用 Read-Host cmdlet 的 AsSecureString 参数来创建安全字符串。 输入命令后,键入的任何字符将转换为安全字符串,然后保存在$Secure变量中。

第二个命令显示$Secure变量的内容。 由于$Secure变量包含安全字符串,因此 Windows PowerShell 仅显示 System.Security.SecureString 类型。

第三个命令使用 ConvertFrom-SecureString cmdlet 将$Secure变量中的安全字符串转换为加密的标准字符串。 它将结果保存在$Encrypted变量中。

第四个命令在$Encrypted变量的值中显示加密字符串。

第五个命令使用 ConvertTo-SecureString cmdlet 将$Encrypted变量中的加密标准字符串转换回安全字符串。 它将结果保存在 $Secure 2 变量中。 第六个命令显示 $Secure 2 变量的值。 SecureString 类型指示命令成功。

示例 2:从文件中的加密字符串创建安全字符串

PS C:\> $Secure = Read-Host -AsSecureString
PS C:\> $Encrypted = ConvertFrom-SecureString -SecureString $Secure -Key (1..16)
PS C:\> $Encrypted | Set-Content Encrypted.txt
PS C:\> $Secure2 = Get-Content Encrypted.txt | ConvertTo-SecureString -Key (1..16)

此示例演示如何从保存在文件中的加密标准字符串创建安全字符串。

第一个命令使用 Read-Host cmdlet 的 AsSecureString 参数来创建安全字符串。 输入命令后,键入的任何字符将转换为安全字符串,然后保存在$Secure变量中。

第二个命令使用 ConvertFrom-SecureString cmdlet 通过指定的密钥将$Secure变量中的安全字符串转换为加密的标准字符串。 内容保存在$Encrypted变量中。

第三个命令使用管道运算符 (|) 将$Encrypted变量的值发送到 Set-Content cmdlet,该 cmdlet 将该值保存在 Encrypted.txt 文件中。

第四个命令使用 Get-Content cmdlet 获取 Encrypted.txt 文件中的加密标准字符串。 该命令使用管道运算符将加密字符串发送到 ConvertTo-SecureString cmdlet,该 cmdlet 使用指定的密钥将其转换为安全字符串。 结果保存在 $Secure 2 变量中。

示例 3:将纯文本字符串转换为安全字符串

PS C:\> $Secure_String_Pwd = ConvertTo-SecureString "P@ssW0rD!" -AsPlainText -Force

此命令P@ssW0rD转换纯文本字符串! 放入安全字符串,并将结果存储在 $Secure_String_Pwd 变量中。 若要使用 AsPlainText 参数,还必须在命令中包含 Force 参数。

参数

-AsPlainText

指定要转换为安全字符串的纯文本字符串。 安全字符串 cmdlet 有助于保护机密文本。 文本已加密以用于隐私,并在使用后从计算机内存中删除。 如果使用此参数提供纯文本作为输入,则系统无法以这种方式保护该输入。 若要使用此参数,还必须指定 Force 参数。

类型:SwitchParameter
Position:1
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-Force

确认你了解使用 AsPlainText 参数的含义,并且仍想要使用它。

类型:SwitchParameter
Position:2
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-Key

指定将安全字符串转换为加密标准字符串时要使用的加密密钥。 有效密钥长度为 16、24 和 32 字节。

类型:Byte[]
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-SecureKey

指定将安全字符串转换为加密标准字符串时要使用的加密密钥。 必须以安全字符串的格式提供密钥。 在用作密钥之前,安全字符串将转换为字节数组。 有效密钥长度为 16、24 和 32 字节。

类型:SecureString
Position:1
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-String

指定要转换为安全字符串的字符串。

类型:String
Position:0
默认值:None
必需:True
接受管道输入:True
接受通配符:False

输入

String

可以通过管道将标准加密字符串传递给 ConvertTo-SecureString

输出

SecureString

ConvertTo-SecureString 返回 SecureString 对象。