You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

含逗号、问号或冒号的PowerShell SecureString无法正常使用求助

问题解决方法

你的脚本失效并非密码里的特殊字符导致,核心问题是读取密钥文件时未将内容转换为符合要求的字节数组。ConvertFrom-SecureString要求密钥是16/24/32字节的AES密钥,而Get-Content $KeyFile默认读取的是字符串格式,会导致加密逻辑异常,在密码含特殊字符时问题会被触发。

修正后的完整脚本

# 创建SecureString对象并加密存储
$PasswordFile = "X:\pwd\password.txt" # 存储加密后的密码
$KeyFile = "X:\pwd\password.key" # AES密钥文件路径

# 读取密钥并转换为字节数组(关键修正)
$Key = Get-Content $KeyFile -Raw | ForEach-Object { [byte[]]$_ }

# 直接转换带特殊字符的密码为SecureString
$Password = ConvertTo-SecureString "azerty,12?34:5" -AsPlainText -Force

# 加密并写入文件
$Password | ConvertFrom-SecureString -Key $Key | Out-File $PasswordFile -Force

补充说明

  1. 合法密钥的生成方式:如果你的密钥文件是手动创建的,需确保它符合AES密钥规范,可通过以下命令生成标准密钥:
# 生成32字节AES密钥并保存到文件
$Key = New-Object Byte[] 32
[Security.Cryptography.RNGCryptoServiceProvider]::Create().GetBytes($Key)
$Key | Out-File $KeyFile -Force
  1. 密码无需转义:ConvertTo-SecureString -AsPlainText -Force可以直接处理包含逗号、问号、冒号等任意特殊字符的字符串,不需要添加任何转义符。

内容的提问来源于stack exchange,提问作者Alexandre Nogard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 07:15:07