我正在尝试为多个计算机上运行的脚本创建存储凭据。我可以让它在我的机器上运行得很好但是我知道如果我想在其他计算机上运行它,我需要有一个自定义密钥用于convertto-securestring。我将密钥保存为csv和.txt。 问题是,当我尝试将文件中的密钥读取到变量并将其与ConvertTo-SecureString一起使用时,它会出错。是否可以将csv作为字节数组保存到变量中?
$encrypted = get-content .\Documents\powershell\encrypted_pass1.txt | ConvertTo-SecureString -key $key
答案 0 :(得分:1)
这就是我的所作所为。为了创建我的密钥,我使用了system.security.cryptography.rngcryptoserviceprovider :: create()方法。 和set-content和get-content的-encoding字节参数。 代码示例如下。
#Generate encryption key.
$key = New-Object byte[](32)
$rng = [System.Security.Cryptography.RNGCryptoServiceProvider]::Create()
$rng.GetBytes($key)
set-content -path ./key.txt -value $key -encoding byte
并解密并使用它..
$decryptkey = get-content -Encoding byte -Path .\key.txt
$encrypted = get-content .\securepassword.txt | ConvertTo-SecureString -key $decryptkey
$decryptptr = [Runtime.InteropServices.Marshal]::SecureStringToBSTR($encrypted)
$decrypted = [Runtime.InteropServices.Marshal]::PtrToStringAuto($decryptptr)
希望有所帮助。
富
答案 1 :(得分:0)
试试这个:
$Encrypted = Get-Content -Encoding Byte -Path .\Documents\PowerShell\encrypted_pass1.txt;