是否可以在PowerShell中将安全字符串与变量和不安全的字符串连接起来?
我有一个公式,用于我们的独立环境(无域)中的本地管理员密码。我想将该公式的一部分安全地存储在文件中,然后将其转换为常规字符串,并将其与另一个对象和另一个字符串连接以形成密码。
我的目的不是在我正在整理的工作流程中以纯文本形式公开我们的公式。还有另一种我失踪的方式吗?机器太多,无法单独轻松存储每个密码。
答案 0 :(得分:2)
Credential
个对象允许您解密安全字符串(source):
PS C:\> $pw = 'bar' | ConvertTo-SecureString -AsPlainText -Force
PS C:\> $pw.GetType().FullName
System.Security.SecureString
PS C:\> $cred = New-Object Management.Automation.PSCredential 'foo', $pw
PS C:\> $cred.GetType().FullName
System.Management.Automation.PSCredential
PS C:\> $cred.UserName
foo
PS C:\> $cred.Password
System.Security.SecureString
PS C:\> $cred.GetNetworkCredential().Password
bar
但是,安全字符串的加密密钥与创建安全字符串的用户和计算机绑定,因此无法在其他计算机或其他用户上使用。您可以解决此问题,但这需要使用您生成的密钥加密安全字符串,并且每当需要解密安全字符串时,该密钥必须以纯文本(或简称字节)提供。哪种方式首先打败了加密它的目的。
最重要的是,如果你有足够的机器来存储单独的密码麻烦,你也有足够的机器认真考虑将它们放在域中。