【问题标题】:ConvertTo-SecureString - Key not valid for use in specified state After RebootConvertTo-SecureString - 重新启动后密钥在指定状态下无效
【发布时间】:2015-02-28 09:09:44
【问题描述】:

我有一个 Powershell 脚本,它使用存储为文件中安全字符串的密码运行了几个月。当我今天去运行脚本时,我开始收到“密钥在指定状态下无效”。该脚本由 Active Directory 域帐户运行的计划任务调用。该帐户没有更改,我知道的唯一事件是服务器重新启动。什么可能导致此问题发生?

将我的数据转换回安全字符串再次解决了这个问题,但我很困惑为什么它首先会发生。

我通过以下方式创建密码文件:

Write-Host "Please enter the filename where you'd like to store the password:"
$passwordFile = Read-Host
Write-Host "Please enter the ftp password and press enter:"
read-host -AsSecureString | ConvertFrom-SecureString | Out-File $passwordFile
Write-Host "Your Password File ($passwordFile) has been created."

我像这样从文件中检索密码:

$FTPPassword = Get-Content $FTPPasswordFilePath
$script:FTPCredObj = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist $FTPUserName,($FTPPassword | ConvertTo-SecureString)

我确实注意到与用户个人资料有关的事件日志中有错误:

“Windows 找不到本地配置文件,正在使用临时配置文件让您登录。您对此配置文件所做的更改将在您注销时丢失。”

我作为任务用户执行 RDP 以更新包含安全字符串的文件,之后我没有注意到任何配置文件错误。

【问题讨论】:

    标签: windows powershell


    【解决方案1】:

    如果您使用临时个人资料登录,您将无权访问您个人资料中的资源。这将包括用于加密和解密 PowerShell 安全字符串的加密密钥。

    因此,根本问题是导致您的个人资料无法加载的原因。 (这不是编程问题,因此您应该与您的系统管理员交谈 - 或者如果是您,您可以在超级用户或服务器故障处询问。)

    请注意,该问题会在您下次注销并重新登录时再次出现,因为您现在已使用仅存储在临时配置文件中的密钥对密码进行了加密,该密钥将在您注销时被丢弃。

    【讨论】:

    • 这是我一直在寻找的答案。我以任务用户的身份 RDP'd 到该框,并注意到有两个用户已登录,我不得不强行断开一个。我没有看到与此登录相关的用户配置文件错误。访问 RDP 的两个用户能否阻止任务用户访问其个人资料?
    • @Barnes:不在功能齐全的系统上。
    猜你喜欢
    • 2017-10-03
    • 2014-06-24
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    相关资源
    最近更新 更多