11

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

4

2 回答 2

13

要在其他计算机上工作,您需要创建用于 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 在将 SecureString 转换为纯文本表示或从纯文本表示转换时使用 Windows 的数据保护 API。加密密钥基于您的 Windows 登录凭据,因此只有您可以解密已加密的数据。 如果您希望导出的数据在另一个系统或单独的用户帐户上工作,您可以使用允许您提供显式密钥的参数集。

于 2013-03-22T23:16:14.967 回答
0

这是一个很好的问题。这是如何保存您的凭证的链接。我已经设置好了,我将在使用另一个帐户登录的另一台计算机上尝试我的凭据字符串。我会让你知道我的结果。

更新

我不得不说它对我不起作用。我在其他人的机器上以他们的身份登录。我在一个名为的脚本中设置了我的凭据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

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

于 2013-03-22T22:09:48.700 回答