powershell - Powershell 拆分和修剪以删除空格和逗号
问题描述
我有一个 az 命令的输出,它给了我大约 50 行,我想将每一行输入到一个 foreach 循环中以更改一些配置。问题是每一行都以逗号结尾,并且输出的开头和结尾都有一个 [ ] 字符。举个例子
[
"/subscriptions/11c112-f823-4d5a-8615-8b96d08caf35/resourceGroups/resource-group-name/providers/Microsoft.Web/sites/website-name-1",
"/subscriptions/11c112-f823-4d5a-8615-8v9f9s9a9c9a/resourceGroups/resource-group-name/providers/Microsoft.Web/sites/website-name-2",
"/subscriptions/11c112-f823-4d5a-8615-8b96d08caf35/resourceGroups/resource-group-name/providers/Microsoft.Web/sites/website-name-3"
]
我需要完成一个列表,其中仅包含“”中的文本的新行,我尝试将其保存为变量并执行 $variable.split(",") 但这给了我没有逗号,之间的空白行每个,我仍然有 [] 字符。有人可以帮我指导吗?
解决方案
由于您有一个 Json 输出,因此您可以做的最好的事情是使用ConvertFrom-Json
andConvertTo-Json
函数将您的 json 字符串转换为 PSCustom 对象表示。
这些将允许您将 Json 字符串转换为对象,轻松进行所需的操作,而无需处理字符转义和直接使用字符串。
然后,当您结束时,如果您再次需要 Json,您可以轻松地将其转换回来。ConvertTo-Json
将为您处理所有事情(字符转义、格式化等)。
这是一个例子。
$AzCommandOutput =
@'
[
"/subscriptions/11c112-f823-4d5a-8615-8b96d08caf35/resourceGroups/resource-group-name/providers/Microsoft.Web/sites/website-name-1",
"/subscriptions/11c112-f823-4d5a-8615-8v9f9s9a9c9a/resourceGroups/resource-group-name/providers/Microsoft.Web/sites/website-name-2",
"/subscriptions/11c112-f823-4d5a-8615-8b96d08caf35/resourceGroups/resource-group-name/providers/Microsoft.Web/sites/website-name-3"
]
'@ | ConvertFrom-Json
$MyArray = [System.Collections.Generic.List[PSObject]]$AzCommandOutput
for ($i = 0; $i -lt $MyArray.Count; $i++) {
# Do needed manipulation
$MyArray[$i] = $MyArray[$i] -replace 'resource-group-name','My-Resource-Group'
}
#If ever you need the oputput in json format again...
$NewOutput = $MyArray | ConvertTo-Json
推荐阅读
- android - Android通知栏自定义内容未显示
- ms-access - 在 MS Access 的列中标记损坏的超链接
- vue.js - 无法覆盖 vuetify 中的样式
- docker - Kubernetes Pod 问题
- c# - asp.net c# 类中的无效令牌“for”,生成随机码
- user-interface - 使用 PyQt 和 Panda3D 创建应用程序逻辑
- android - ListView 适配器在滚动时切换搜索栏位置
- python - 在 python 中使用 selenium Web 驱动程序检索变量文本的文本
- c# - 在另一个模型列表中的模型列表中求和和分组
- javascript - 当 nextTick 不起作用时,如何让 Vue 从 .vue 文件中立即更新实际的 DOM?