我正在尝试编写一个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存储";从那条线。如有任何帮助,我们将不胜感激。
最好使用PowerShell命令来输出其属性可以在上操作的对象,在这种情况下,这需要安装
Az
PowerShell模块(Install-Module Az
(,然后允许您调用Get-AzStorageAccount
。如果您与外部程序交互,如
az
CLI,则必须处理文本(字符串(输出,这会使后续处理变得复杂:下一个最佳选项是处理外部程序的结构化文本输出格式(如果可用(,如CSV或JSON;事实上,正如Ash所指出的,
az
CLI的默认输出格式是JSON,因此您可以省略-o table
,并使用ConvertFrom-Json
进一步处理输出如果没有,则需要基于的文本解析,通常基于正则表达式,例如通过
-replace
和-split
运算符。
按照要求回答问题(因为文本解析非常有趣(:
switch
语句及其-Regex
交换机提供了一个简洁的解决方案:
switch -Regex (az resource list -g jjResourceGrp -o table) {
'^(w+).*bstorageAccountsb' {
$Matches[1]; break
}
}