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