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

如何将微软工具返回的分号分隔键值对字符串转换为PowerShell对象?

快速转换分号分隔键值对为PowerShell对象

我完全懂你不想重复造轮子的想法——确实不用自己逐段解析,咱们可以利用PowerShell现有命令来快速转换,这里有两个最直接的方案:

方案1:转成JSON后用ConvertFrom-Json(最通用)

这种方法核心是把你的字符串格式转换成标准JSON,再用原生命令解析,步骤清晰且适配同类型的键值对格式:

# 定义输入字符串
$inputStr = "Author: First.Last; Name: RootConfiguration; Version: 2.0.0; GenerationDate: 06/01/2022 13:18:10; GenerationHost: Server;"

# 处理成标准JSON格式
$jsonStr = "{" + ($inputStr.TrimEnd(';') -replace '(\w+):\s*(.*?)(?=;|$)', '"$1": "$2"' -replace ';', ',') + "}"

# 转换为PowerShell对象
$configObj = $jsonStr | ConvertFrom-Json

# 验证结果(示例)
$configObj.Author
$configObj.GenerationDate

关键步骤解释:

  • TrimEnd(';'):移除字符串末尾多余的分号,避免生成无效JSON
  • 第一个正则-replace '(\w+):\s*(.*?)(?=;|$)', '"$1": "$2"':精准匹配键: 值格式,给键和值都加上双引号,转换成JSON标准键值对
  • -replace ';', ',':把分号分隔符替换成JSON要求的逗号分隔符
  • 最后用{}包裹,形成完整的JSON对象结构

方案2:用ConvertFrom-String(适合固定格式场景)

如果你的字符串格式完全固定,也可以用ConvertFrom-String配合模板直接提取字段,可读性更强:

# 定义输入字符串
$inputStr = "Author: First.Last; Name: RootConfiguration; Version: 2.0.0; GenerationDate: 06/01/2022 13:18:10; GenerationHost: Server;"

# 创建匹配格式的模板
$template = @'
Author: {Author*: First.Last}; Name: {Name: RootConfiguration}; Version: {Version: 2.0.0}; GenerationDate: {GenerationDate: 06/01/2022 13:18:10}; GenerationHost: {GenerationHost: Server};
'@

# 转换为对象
$configObj = $inputStr | ConvertFrom-String -TemplateContent $template

# 验证结果(示例)
$configObj.Name
$configObj.Version

模板说明:

  • {字段名: 示例值}:告诉ConvertFrom-String按照这个格式提取对应字段的内容
  • {Author*: ...}中的*表示这是必填的锚点字段,帮助命令更准确地匹配整体格式

这两种方法都不用手动写循环逐段解析,完全复用了PowerShell的原生命令,完美贴合你“避免重复造轮子”的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 23:07:36