如何将SecureString转换回纯文本?
从例4中的微软文档。
$secureString = ConvertTo-SecureString -String 'Example' -AsPlainText
$secureString # 'System.Security.SecureString'
ConvertFrom-SecureString -SecureString $secureString -AsPlainText # 'Example'
Run Code Online (Sandbox Code Playgroud)
但是当我尝试以下操作时:
>> $secureString = ConvertTo-SecureString -String 'Example' -AsPlainText -Force
>> $secureString # 'System.Security.SecureString'
>> ConvertFrom-SecureString -SecureString $secureString -AsPlainText # 'Example'
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
ConvertFrom-SecureString : A parameter cannot be found that matches parameter name 'AsPlainText'.
At line:3 char:54
+ ... ertFrom-SecureString -SecureString $secureString -AsPlainText # 'Exam ...
+ ~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [ConvertFrom-SecureString], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.ConvertFromSecureStringCommand
Run Code Online (Sandbox Code Playgroud)
当我在没有-AsPlainText 的情况下运行这些命令时,它返回:
01000000d08c9ddf0115d1118c7a00c04fc297eb0100000063db09d0a5a25b4d92484ee7d5911cf90000000002000000000003660000c00000001000000098fcbc0d5e009078dd7a1dfe9f24d3380000000004800000a00000001000000027a7f841c320bc17b5e4febbcd3e49551000000005a133e9f864340d9d7b2473939156ef14000000f889bf5c0fc4799a5aaf435ebb15cd0920f24575
Run Code Online (Sandbox Code Playgroud)
这是 Microsoft 问题还是 PowerShell 5.1 不支持此问题
PowerShell 版本
Major Minor Build Revision
----- ----- ----- --------
5 1 18362 628
Run Code Online (Sandbox Code Playgroud)
Ben*_*est 21
它在 PowerShell 5.1 中不受支持。直到 PowerShell Core 7+ 才ConvertFrom-SecureString支持该-AsPlainText参数。
如果要从SecureStringPowerShell 7之前的纯文本中获取纯文本字符串,请使用以下方法:
$bstr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureString)
$plaintext = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($bstr)
Run Code Online (Sandbox Code Playgroud)
$plaintext将是您SecureString传入的明文字符串。
| 归档时间: |
|
| 查看次数: |
4015 次 |
| 最近记录: |