如何在PowerShell中从System.Array提取objectId纯字符串值?
解决PowerShell中提取objectId纯字符串的问题
别用字符串匹配的方式处理对象数组,这是绕远路还容易出错的做法。$spCreated是Object[]类型,里面的元素应该是已经解析好的PowerShell对象,直接通过属性访问就能拿到纯值:
# 假设数组里只有一个目标对象,直接取第一个元素的objectId属性 $objectId = $spCreated[0].objectId如果$spCreated里的元素还是未解析的JSON字符串,先把字符串转成对象再提取:
# 遍历数组找到包含objectId的JSON字符串,转成对象后取值 foreach ($item in $spCreated) { if ($item -match 'objectId') { $obj = $item | ConvertFrom-Json $objectId = $obj.objectId break # 找到第一个就退出循环 } }要是你非得用字符串处理的方式(不推荐),可以用正则匹配直接提取目标值:
$z = $spCreated | Where-Object { $_ -match '"objectId":\s*"([^"]+)"' } $objectId = $matches[1]
以上方法得到的$objectId就是不带引号和逗号的纯字符串abc1234-abc1234-abc1234-abc1234-abc1234。
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

