如何从.cred文件中提取PSCredential的密码及报错解决
问题根源
你遇到的错误是因为直接将SecureString类型的密码输出到文件,实际保存的是System.Security.SecureString这个无效字符串,而非可解析的加密密码内容。当读取时ConvertTo-SecureString无法识别这种格式,自然返回null,导致后续创建PSCredential实例失败。
修正后的代码
保存凭证的函数
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList ($Username, $PWord) # 将SecureString转换为可持久化的加密字符串 $encryptedPassword = $cred.Password | ConvertFrom-SecureString $encryptedPassword | Out-File "some\path\$($cred.Username).cred" -Force
获取凭证的函数
# 使用-Raw参数确保读取完整的加密字符串,避免换行拆分导致格式错误 $encryptedPassword = Get-Content "some\path\$($Username).cred" -Raw $securePassword = $encryptedPassword | ConvertTo-SecureString $cred = New-Object System.Management.Automation.PSCredential -ArgumentList $Username, $securePassword return $cred
关键注意点
- 这种加密方式绑定当前用户账户和机器环境,只能在保存凭证的同一用户、同一台机器下读取。
- 必须通过
ConvertFrom-SecureString将SecureString转为加密文本才能持久化,反之用ConvertTo-SecureString还原为SecureString。
内容的提问来源于stack exchange,提问作者undetected
相关产品推荐
相关产品推荐

