Vamos ter este exemplo de código PS:
$Secr = $Encrypted | ConvertTo-SecureString -Key $Key
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Secr)
$Decrypted = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
As variáveis $Secr
e $BSTR
são usadas apenas uma vez.
É possível colocá-lo em um one-liner para evitar essas variáveis temporárias?
Eu tentei eliminar $Secr
, mas isso não funciona:
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Encrypted | ConvertTo-SecureString -Key $Key)
$Decrypted = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
Outro exemplo é:
$GetKey = Get-Content "C:\temp\AESKey.AES.Key"
$Text = "Test Message"
$Encrypted = ConvertTo-SecureString $Text -AsPlainText -Force | ConvertFrom-SecureString -key $GetKey
É possível eliminar $GetKey
variável?
Como fazer dar certo? Qual é a sintaxe correta?
Use o operador de agrupamento
(...)
ou o operador de subexpressão$(...)
para avaliar seus pipelines de comando no lugar das expressões variáveis:(Você pode remover as quebras de linha para um "true oneliner", apenas introduzido para facilitar a leitura)
Mesmo tratamento para o segundo exemplo - simplesmente substitua a expressão variável pelos pipelines apropriados aninhados no
(...)
operador de agrupamento - ou, no caso de expressões literais mais simples, como strings, pule o operador completamente:Consulte a seção Operadores especiais do
about_Operators
tópico de ajuda para obter mais informações