ConvertTo-SecureString密钥在指定状态下无效
问题描述:
以特定用户身份运行脚本时出现错误,但不是以我自己的用户帐户身份运行。这在Windows 2012R2上。 Powershell模块已安装并已使用一段时间,但使用其他帐户可阻止其运行。因为我已经能够运行它了,所以我觉得我可以排除脚本中缺少的任何文件或错误的命令。脚本的其余部分依赖于此。我也使用将通过自动化运行命令的服务帐户运行convertto-securestring选项,但它仍然不起作用。ConvertTo-SecureString密钥在指定状态下无效
这是我跑转换的密码
$password = "password"
$secureStringPwd = $password | ConvertTo-SecureString -AsPlainText -Force
$secureStringText = $secureStringPwd | ConvertFrom-SecureString
Set-Content "E:\temp\ExportedPassword.txt" $secureStringText`
这是
line 4 $pwdTxt = Get-Content "E:\temp\ExportedPassword.txt"
line 5 $securePwd = $pwdTxt | ConvertTo-SecureString
ConvertTo-SecureString : Key not valid for use in specified state.
At E:\temp\get_user_cliffsv4.ps1:5 char:24
+ $securePwd = $pwdTxt | ConvertTo-SecureString
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [ConvertTo-SecureString],
CryptographicException
+ FullyQualifiedErrorId :
ImportSecureString_InvalidArgument_CryptographicError,Microsoft.PowerShell.
Commands.ConvertToSecureStringCommand
我已经通过运行该脚本无数次试图为用户B运行后的错误信息安全密码脚本自动化软件,但是当测试时,由于这个错误我不得不作为我的个人帐户运行该命令,为了解决这个问题,我可以完成测试,我调用了该选项。我的问题是,我使用的帐户是否缺少任何特定的权利?我必须在该帐户下安装Powershell扩展,还是可以在PS或服务器上设置/更改某些内容,以便服务帐户运行此脚本?提前致谢!
答
问题不在于服务帐户运行命令的能力,而在于系统帐户正在运行该命令,因此它传递的安全密码不可用。我发现这个链接提供了一个脚本,用于安排脚本使用系统帐户运行,从而通过系统创建文件,系统将正确使用密码文件并正确传递凭据。感谢Keith Francis和代码托管网站,我非常感谢这些社区提供支持。
正如你已经发现了你自己; SecureStrings,凭证等默认使用用户特定的密钥进行加密,因此它们不能在不同的用户帐户之间共享(或泄漏)。 –
是的,得到了这个系统帐户的工作,所以甚至比用户运行服务更好。我们有一个流程来让每台主机上创建的密钥以这种方式运行我们的服务。 –