我试图从Powershell中的Azure命令az group list
返回的一系列“结果”(对象?)中选择一个属性吗?
我知道这听起来微不足道,但这是奇怪的地方,希望有一个简单的解释。
如果我运行Azure命令az group list -o table
(在我成功使用az login
登录之后),我将得到以下典型响应
PS src> az group list -o table
Name Location Status
---------------- ---------- ---------
group0 westeurope Succeeded
group1 westeurope Succeeded
group2 uksouth Succeeded
group3 westeurope Succeeded
group4 westeurope Succeeded
group5 westeurope Succeeded
group6 westeurope Succeeded
group7 uksouth Succeeded
group8 westeurope Succeeded
group9 westeurope Succeeded
但是,如果我尝试通过
仅选择Name
属性
az群组列表|选择-p名称
然后,我得到大约2个屏幕,其中包括空行,没有任何显示。所以问题是,上面的命令出了什么问题?以及我该如何解决?
我尝试了以下实验,以深入了解返回的对象的确切类型,并获得一些我不理解的结果。我希望这对具有更多Azure和Powershell经验的人有意义。
以下是假设您拥有蔚蓝帐户的非常容易重现问题的步骤。
- 启动Powershell,例如在Mac终端上,键入
pwsh
- 登录到天青
az login
- 键入
az group list -o table
观察到列表又回来了,并且格式正确。
- 键入
az group list | select -p name
观察几个充满空白行的屏幕。没有文字。
- 挠头,想知道发生了什么事吗? (笑)
地块厚度
az group list
本身会返回一些充满此
[
... lots of these ...
{
"id": "/subscriptions/this-is-super-wierd-i-cant-select-name-prop/resourceGroups/spikes","location": "westeurope","managedBy": null,"name": "spikes","properties": {
"provisioningState": "Succeeded"
},"tags": {},"type": null
}
]
但是,(az group list).getType()
返回
PS src> (az group list).getType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
最后,希望拼图的最后2个片段
PS src> (az group list)[0].getType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
因此,az group list
的返回类型似乎是array of objects
,或者它是object[]
的数组,我的能力在这里很刺耳。因此,仔细检查一下,我通过执行... (az group list)[0..10]
查询该数组的前10个元素,然后返回bizarely 10 strings!
。好的,我知道它应该是10个字符串,只是因为它是一台计算机,如果那是一台计算机,那么那才是真正的字符串。我只是不明白为什么。
[
{
"id": "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/somegroup","name": "admin","type": null
因此,为了简而言之,所有这些都是我想知道的,如何从azure查询的结果中仅选择一个属性?就我而言,我只想显示所有资源组的名称。
此az group list | select -p name
应该起作用,但是不起作用,我想知道如何正确执行它,并在此过程中找出为什么它不起作用,我们都可以了解有关Azure的知识和强大的过程,生活会很棒!
爱大家, 艾伦