如何根据azure命令的输出在powershell中拆分字符串



我正在尝试编写一个powershell脚本。我需要从控制台获取一些输入/输出,并将其管道传输到一个split命令中,但我不知道如何操作。

我正在运行azure cli命令。。。列出一堆资源。我需要提取存储帐户的名称。以下是一些示例输出:

Name                  ResourceGroup    Location      Type   
------------------    -------------    ------------  ----------  
asdf1234-insights        jjResourceGrp     eastus    microsoft.insights/components
asdf1234-storage         jjResourceGrp     eastus    Microsoft.Storage/storageAccounts
asdf1234                 jjResourceGrp     eastus    Microsoft.Web/serverFarms
asdf1234                 jjResourceGrp     eastus    Microsoft.Web/sites

这是我现在使用的powershell命令,用于查找存储帐户:

az resource list -g jjResourceGrp -o table | Select-String -Pattern "storageAccounts"

但我真正需要的是提取";asdf1234存储";从那条线。如有任何帮助,我们将不胜感激。

正如Ash所指出的:
  • 最好使用PowerShell命令来输出其属性可以在上操作的对象,在这种情况下,这需要安装AzPowerShell模块(Install-Module Az(,然后允许您调用Get-AzStorageAccount

  • 如果您与外部程序交互,如azCLI,则必须处理文本(字符串(输出,这会使后续处理变得复杂:

    • 下一个最佳选项是处理外部程序的结构化文本输出格式(如果可用(,如CSV或JSON;事实上,正如Ash所指出的,azCLI的默认输出格式JSON,因此您可以省略-o table,并使用ConvertFrom-Json进一步处理输出

    • 如果没有,则需要基于的文本解析,通常基于正则表达式,例如通过-replace-split运算符。


按照要求回答问题(因为文本解析非常有趣(:

switch语句及其-Regex交换机提供了一个简洁的解决方案:

switch -Regex (az resource list -g jjResourceGrp -o table) {
'^(w+).*bstorageAccountsb' {
$Matches[1]; break
}
}

相关内容

  • 没有找到相关文章

最新更新