让我们看一下 PS 代码示例:
$Secr = $Encrypted | ConvertTo-SecureString -Key $Key
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Secr)
$Decrypted = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
变量$Secr
和$BSTR
只使用一次。
是否可以将其放入一行以避免这些临时变量?
我试图消除$Secr
,但这不起作用:
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Encrypted | ConvertTo-SecureString -Key $Key)
$Decrypted = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
另一个例子是:
$GetKey = Get-Content "C:\temp\AESKey.AES.Key"
$Text = "Test Message"
$Encrypted = ConvertTo-SecureString $Text -AsPlainText -Force | ConvertFrom-SecureString -key $GetKey
是否可以消除$GetKey
变量?
如何让它发挥作用?正确的语法是什么?
使用分组运算符
(...)
或子表达式运算符$(...)
代替变量表达式来计算命令管道:(您可以删除“真正的单行符”的换行符,仅为了可读性而引入)
对第二个示例进行相同的处理 - 只需将变量表达式替换为嵌套在
(...)
分组运算符中的适当管道 - 或者,对于更简单的文字表达式(如字符串),完全跳过运算符:有关详细信息,请参阅
about_Operators
帮助主题的特殊运算符部分