Powershell安全密码可在任何机器上运行

时间:2013-03-22 21:58:40

标签: powershell passwords

我需要编写一个powershell脚本,我可以在任何机器上运行以连接到服务器。 安全字符串是否使用计算机或用户进行加密,即安全密码是否可以在域中的任何计算机上运行,​​或者只能在创建它的计算机上解密。如果是后者就在那里加密密码,这样我就可以在任何机器上运行脚本

2 个答案:

答案 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

当我使用凭据登录另一台计算机时,我甚至收到错误消息。