是否可以在 PowerShell 中将安全字符串与变量和不安全字符串连接起来?
我有一个公式用于我们的独立环境(无域)中的本地管理员密码。我想将该公式的一部分安全地存储在文件中,然后获取它,将其转换为常规字符串,并将其与另一个对象和另一个字符串连接以形成密码。
我的意图不是在我整理的工作流程中以纯文本形式公开我们的公式。还有另一种我想念的方式吗?机器太多,无法轻松地单独存储每个密码。
是否可以在 PowerShell 中将安全字符串与变量和不安全字符串连接起来?
我有一个公式用于我们的独立环境(无域)中的本地管理员密码。我想将该公式的一部分安全地存储在文件中,然后获取它,将其转换为常规字符串,并将其与另一个对象和另一个字符串连接以形成密码。
我的意图不是在我整理的工作流程中以纯文本形式公开我们的公式。还有另一种我想念的方式吗?机器太多,无法轻松地单独存储每个密码。
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
但是,安全字符串的加密密钥与创建安全字符串的用户和计算机相关联,因此它不能在另一台计算机上使用或由其他用户使用。您可以解决此问题,但这需要使用您生成的密钥加密安全字符串,并且每当需要解密安全字符串时,该密钥必须以纯文本(或更确切地说是纯字节)的形式提供。这有点违背了首先加密它的目的。
最重要的是,如果您有足够的机器来让存储单独的密码变得很麻烦,那么您也有足够的机器来认真考虑将它们放入域中。