ConvertTo-SecureString
将加密的标准字符串转换为安全字符串。它还可以将纯文本转换为安全字符串。此 Cmdlet 与 ConvertFrom-SecureString 和 Read-Host 一起使用。
语法
ConvertTo-SecureString [-Key <Byte[]>] [-String] <string> [<CommonParameters>]
ConvertTo-SecureString [-AsPlainText] [-Force] [-String] <string> [<CommonParameters>]
ConvertTo-SecureString [[-SecureKey] <SecureString>] [-String] <string> [<CommonParameters>]
说明
ConvertTo-SecureString cmdlet 将加密的标准字符串转换为安全字符串。它还可以将纯文本转换为安全字符串。此 Cmdlet 与 ConvertFrom-SecureString 和 Read-Host 一起使用。该 cmdlet 创建的安全字符串可以与需要类型为 SecureString 的参数的 cmdlet 或函数一起使用。使用 ConvertFrom-SecureString cmdlet,可以将安全字符串转换回加密的标准字符串。这样就可以将该字符串存储在文件中,以供将来使用。
如果要转换的标准字符串是通过对指定密钥使用 ConvertFrom-SecureString 进行加密的,则必须提供与 ConvertTo-SecureString cmdlet 的 Key 或 SecureKey 参数值相同的密钥。
参数
-AsPlainText
指定要转换为安全字符串的纯文本字符串。安全字符串 cmdlet 有助于保护机密文本。对该文本进行加密以保持隐私性,并在使用该文本后将其从计算机内存中删除。如果使用此参数将纯文本提供为输入,则系统无法保护采用此方式的输入。若要使用此参数,则还必须指定 Force 参数。
是否为必需? |
false |
位置? |
2 |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Force
请确认您已了解使用 AsPlainText 参数的含义,并且仍希望使用该参数。
是否为必需? |
false |
位置? |
3 |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Key <Byte[]>
指定将安全字符串转换为加密的标准字符串时要使用的加密密钥。有效的密钥长度为 16、24 和 32 个字节。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-SecureKey <SecureString>
指定将安全字符串转换为加密的标准字符串时要使用的加密密钥。该密钥必须以安全字符串的格式提供。安全字符串在用作密钥之前将转换为一个字节数组。有效的密钥长度为 16、24 和 32 个字节。
是否为必需? |
false |
位置? |
2 |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-String <string>
指定要转换为安全字符串的字符串。
是否为必需? |
true |
位置? |
1 |
默认值 |
|
是否接受管道输入? |
true (ByValue) |
是否接受通配符? |
false |
<CommonParameters>
此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.
输入和输出
输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。
输入 |
System.String 可以将标准的加密字符串通过管道传递到 ConvertTo-SecureString。 |
输出 |
System.Security.SecureString ConvertTo-SecureString 返回 SecureString 对象。 |
示例 1
C:\PS>$secure = read-host -assecurestring
C:\PS> $secure
System.Security.SecureString
C:\PS> $encrypted = convertfrom-securestring -securestring $secure
C:\PS> $encrypted
01000000d08c9ddf0115d1118c7a00c04fc297eb010000001a114d45b8dd3f4aa11ad7c0abdae9800000000002000000000003660000a8000000100000005df63cea84bfb7d70bd6842e7
efa79820000000004800000a000000010000000f10cd0f4a99a8d5814d94e0687d7430b100000008bf11f1960158405b2779613e9352c6d14000000e6b7bf46a9d485ff211b9b2a2df3bd
6eb67aae41
C:\PS> $secure2 = convertto-securestring -string $encrypted
C:\PS> $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 变量中的加密的标准字符串转换回安全字符串。它将结果保存在 $secure2 变量中。第六个命令显示 $secure2 变量的值。SecureString 类型指示该命令已成功。
示例 2
C:\PS>$secure = read-host -assecurestring
C:\PS> $encrypted = convertfrom-securestring -secureString $secure -key (1..16)
C:\PS> $encrypted | set-content encrypted.txt
C:\PS> $secure2 = get-content encrypted.txt | convertto-securestring -key (1..16)
说明
-----------
此示例演示如何通过保存在文件中的加密的标准字符串创建安全字符串。
第一个命令使用 Read-Host cmdlet 的 AsSecureString 参数创建一个安全字符串。在输入该命令后,所键入的所有字符都将转换为安全字符串并随后保存在 $secure 变量中。
第二个命令使用 ConvertFrom-SecureString cmdlet 通过指定的密钥将 $secure 变量中的安全字符串转换为加密的标准字符串。内容保存在 $encrypted 变量中。
第三个命令使用管道运算符 (|) 将 $encrypted 变量的值发送到 Set-Content cmdlet,后者将该值保存在 Encrypted.txt 文件中。
第四个命令使用 Get-Content cmdlet 获取 Encrypted.txt 文件中的加密的标准字符串。该命令使用管道运算符将加密的字符串发送到 ConvertTo-SecureString cmdlet,后者使用指定的密钥将该加密字符串转换为安全字符串。结果保存在 $secure2 变量中。
示例 3
C:\PS>$secure_string_pwd = convertto-securestring "P@ssW0rD!" -asplaintext -force
说明
-----------
此命令将纯文本字符串“P@ssW0rD!”转换为安全字符串,并将结果存储在 $secure_string_pwd 变量中。若要使用 AsPlainText 参数,则此命令还必须包括 Force 参数。