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

PowerShell中REG_MULTI_SZ转指定格式字符串的技术求助

REG_MULTI_SZ类型注册表值转换为PowerShell数组的问题

我正在将Roger Zanders开发的Reg2PS工具改编为适配Intune的PowerShell脚本,用于便捷配置注册表。参考原工具的C#代码后,发现它处理REG_MULTI_SZ类型的逻辑更为完善。

通过reg.exe导出的REG_MULTI_SZ类型注册表值示例及预处理代码如下:

$PlainValue = '"MultiStringProperty"=hex(7):56,00,61,00,6c,00,75,00,65,00,31,00,00,00,56,00,\61,00,6c,00,75,00,65,00,32,00,00,00,56,00,61,00,6c,00,75,00,65,00,33,00,00,\00,00,00'

# 获取值部分  
$Value = $PlainValue.Split("=")[1]

# 移除Hex描述
$Value = $Value.Replace( "hex(7):","" )

# 移除reg.exe用于换行的反斜杠
$Value = $Value.Replace("\","")

我的目标是将处理后的十六进制值转换为@("Value1","Value2","Value3")格式的PowerShell数组字符串。尝试了以下两种转换方式:

# 方法1:通过Unicode编码转换
$Value1 = $Value -split (",") | % { [INT]"0x$_" }
$Value1 = [Text.Encoding]::Unicode.GetString($Value1)

# 方法2:逐字节转换为字符后拼接
$Value2 = $Value -split (",") | % { [char][byte]"0x$_" }
$Value2 = $Value2 -join ''

但遇到了问题:转换后的字符串无法通过.split(" ")正确分割;如果提前用分隔符",00,00,00,"分割再转换,PowerShell又会出现数字转换错误。

想确认两个问题:

  • 是我的理解有误,还是PowerShell的转换逻辑存在问题?有没有更合适的分割方式?
  • REG_MULTI_SZ的值中是否允许包含空格?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 11:52:41