错误:ConvertTo-SecureString:密钥无效,无法在指定状态

时间:2016-08-17 06:00:18

标签: powershell

我们有一个脚本用于存储文本文件的密码,然后邮件脚本从密码文本文件中调用/重新使用此密码来运行主脚本。 更改密码后,我收到了以下错误。

Script used to generate secure password:
"Password" | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File "D:\Scripts\Password.txt"

我们现在得到错误:

At C:\Scripts\Lync_HealthCheck_Prod.ps1:1199 char:82
+ $PasswrdS = Get-Content C:\Windows\System32\SecStrng.sec | convertto-securest
ring <<<<
    + CategoryInfo          : InvalidArgument: (:) [ConvertTo-SecureString], C
   ryptographicException
    + FullyQualifiedErrorId : ImportSecureString_InvalidArgument_Cryptographic
   Error,Microsoft.PowerShell.Commands.ConvertToSecureStringCommand

New-Object : Exception calling ".ctor" with "2" argument(s): "Cannot process ar
gument because the value of argument "password" is null. Change the value of ar
gument "password" to a non-null value."
At C:\Scripts\Lync_HealthCheck_Prod.ps1:1218 char:27
+  $Creds1      = New-Object <<<<  System.Management.Automation.PSCredential -A
rgumentList $CheckUser1, $PasswrdS
    + CategoryInfo          : InvalidOperation: (:) [New-Object], MethodInvoca
   tionException
    + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.Power
   Shell.Commands.NewObjectCommand

如果你能提供帮助,会很棒。

2 个答案:

答案 0 :(得分:2)

错误消息声称您正在处理null值:

  

&#34;无法处理参数因为参数的值&#34;密码&#34;一片空白。

因此,请仔细检查您是否真正从密码文件中读取了好的内容。 C:\Windows\System32中的位置非常暗示进程正在从错误的位置查找它。

$PasswrdS = Get-Content C:\Windows\System32\SecStrng.sec

答案 1 :(得分:0)

完全相同的问题,由于sec文件上的NTFS权限不匹配。获取内容可以,但不能调用Convertto-SecureString。 创建密码文件的用户不是执行程序的用户。 我完全控制了这两个用户的文件。现在可以了。

更准确地说:我连接了运行,删除和重新创建包含凭证的安全文件所需的帐户。此文件仅对此帐户有用