我需要编写一个powershell脚本,我可以在任何机器上运行以连接到服务器。 安全字符串是否使用计算机或用户进行加密,即安全密码是否可以在域中的任何计算机上运行,或者只能在创建它的计算机上解密。如果是后者就在那里加密密码,这样我就可以在任何机器上运行脚本
答案 0 :(得分:11)
要在其他计算机上工作,您需要创建一个用于ConvertTo-SecureString和ConvertFrom-SecureString cmdlet的密钥。
PS C:\> $Key = (3,4,2,3,56,34,254,222,1,1,2,23,42,54,33,233,1,34,2,7,6,5,35,43)
PS C:\>$StandardString = ConvertFrom-SecureString $SecureString -Key $Key
http://www.leeholmes.com/blog/2006/06/01/securestrings-in-powershell/
默认情况下,SecureString cmlet使用Windows的Data Protection API 当他们将SecureString转换为纯文本和从纯文本转换 表示。加密密钥基于Windows登录 凭据,因此只有您可以解密已加密的数据。 如果您希望导出的数据在另一个系统上运行或单独运行 用户帐户,您可以使用允许您提供的参数集 明确的密钥。
答案 1 :(得分:0)
这是一个很好的问题。 Here's a link to how to save your credential。我得到了这个设置,我将在另一个帐户登录的另一台计算机上尝试我的凭据字符串。我会告诉你我的结果。
<强>更新强>
我不得不说这对我不起作用。我去了另一个人登录的机器。我在名为Get-MyCred
的脚本中设置了我的凭证:
$username = 'Domain\MyName'
$password = cat '\\server\share\securestring.txt' | convertto-securestring
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password
return $cred
当我运行获取密码的行时,我在其他人机器上收到错误。
ConvertTo-SecureString : Key not valid for use in specified state.
At line:1 char:56
+ Get-Content O:\BCKUP\MyScripts\Cred\securestring.txt | ConvertTo-SecureString
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [ConvertTo-SecureString], CryptographicException
+ FullyQualifiedErrorId : ImportSecureString_InvalidArgument_CryptographicError,Microsoft.PowerShell.Commands.ConvertToSecureStringCommand
当我使用凭据登录另一台计算机时,我甚至收到错误消息。