【发布时间】:2017-10-03 09:55:54
【问题描述】:
以特定用户而不是我自己的用户帐户运行脚本时出现错误。这是在 Windows 2012R2 上。 Powershell 模块已安装并已使用一段时间,但使用另一个帐户会阻止它运行。因为我已经能够运行它,所以我觉得我可以排除脚本中任何丢失的文件或错误的命令。脚本的其余部分依赖于此。我还使用将通过自动化运行命令的服务帐户运行了 convertto-securestring 选项,但它仍然无法正常工作。
这是我用来转换密码的安全密码脚本
$password = "password"
$secureStringPwd = $password | ConvertTo-SecureString -AsPlainText -Force
$secureStringText = $secureStringPwd | ConvertFrom-SecureString
Set-Content "E:\temp\ExportedPassword.txt" $secureStringText`
这是尝试以用户 B 身份运行后的错误消息
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
我已通过自动化软件多次运行此脚本,但在测试时,由于此错误,我不得不以我的个人帐户运行命令,为了解决此问题以便完成测试,我调用了该选项。我的问题是,我使用的帐户是否缺少任何特定权利?我是否必须在该帐户下安装 Powershell 扩展,或者我可以在 PS 或服务器上设置/更改某些内容以允许服务帐户运行此脚本?提前致谢!
【问题讨论】:
-
如您所见; SecureStrings、Credentials 等默认情况下使用用户特定的密钥加密,因此它们不能在不同的用户帐户之间共享(或:泄露)。
-
是的,可以使用系统帐户,因此比用户运行服务还要好。我们有一个流程可以在我们以这种方式运行服务的每台主机上创建密钥。
标签: powershell password-protection powershell-4.0 securestring