【发布时间】:2016-01-31 13:00:37
【问题描述】:
我需要在我的脚本中存储一些 SMTP 服务器的凭据,但我自然不希望密码以明文形式存储。
到目前为止,我一直在像这样加密密码:
"password" | ConvertTo-SecureString -AsPlainText -Force |
ConvertFrom-SecureString
并在这样的脚本中使用它:
$password = "(the long string generated from above command)"
$username = "Test@testdomain.com"
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $username,($password | ConvertTo-SecureString)
但是,在生成 $cred 对象时,我收到以下错误:
ConvertTo-SecureString : 密钥在指定状态下无效。
【问题讨论】:
-
您想如何/在哪里使用该脚本?您不能简单地获取加密字符串并在任何地方神奇地解密它而无需提供密钥。对创建加密字符串的用户而言,解密看似有效的原因是因为它通过Data Protection API 绑定到用户密码,Windows 对当前用户透明地处理它。