从 Az Devops 结果中检索 Powershell 中的信息
Retrieving information in Powershell from Az Devops result
我正在通过 azure CLI (az devops security group membership list --id "xxx"
) 从 Azure Devops 检索组信息。不幸的是,结果在 Powershell 中无法使用。
这是结果json,我需要邮件地址。
{
"DESCRIPTOR": {
"descriptor": "DESCRIPTOR",
"directoryAlias": "DIRECTORYALIAS",
"displayName": "DISPLAYNAME",
"domain": "DOMAIN",
"legacyDescriptor": LEGACYDESCRIPTOR,
"mailAddress": "MAILADDRESS",
"metaType": "METATYPE",
"origin": "ORIGIN",
"originId": "ORIGINID",
"principalName": "PRINCIPALNAME",
"subjectKind": "SUBJECTKIND",
"url": "URL"
},
.....
}
有人处理过结果并知道如何获取邮件地址吗?
谢谢!
简答:您应该可以通过 $result.'DESCRIPTOR'.mailAddress
.
到达 mailAddress
属性
原因和方法如下:
PS C:\> $result = az devops security group membership list --id "xxx" --organization "yyy" | ConvertFrom-Json
PS C:\> $result.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False PSCustomObject System.Object
PS C:\Users\BHANNADE> $result | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
aad.NmEzOTc1MTIt...xYr58NWZkLTg4MDQtY2QxZGUxODkzMWQ4 NoteProperty System.Management.Automation.PSCustomObject ...
aad.Y2I1NjM2NjIt...mZi03NzA5LTg4MWQtNDZjZmI5NjRjYWMy NoteProperty System.Management.Automation.PSCustomObject ...
这告诉我们 $result
是一个 PowerShell 自定义对象,其描述符本身是成员 (NoteProperties)。
因此,$result.'DESCRIPTOR'.mailAddress
应该让你到达mailAddress
属性:
PS C:\> $result.'aad.NmEzOTc1MTIt...xYr58NWZkLTg4MDQtY2QxZGUxODkzMWQ4'.mailAddress
abc.xyz@email.com
更新:
一个团队中可能有多个成员,因此您的 $result
可能包含多个对象。您可以提取所有电子邮件地址,如下所示:
$properties = $result | Get-Member -MemberType Properties | Select-Object -ExpandProperty Name
$mailAddresses = @()
$mailAddresses += $properties.ForEach({$result.$_.mailAddress})
您可以直接将 Azure CLI 与 Global Parameters --query
一起使用,您可以获得这样的邮件地址:
az devops security group membership list --id "xxx" --query "DESCRIPTOR.mailAddress"
此外,您可以使用 --output
更改输出格式。
我正在通过 azure CLI (az devops security group membership list --id "xxx"
) 从 Azure Devops 检索组信息。不幸的是,结果在 Powershell 中无法使用。
这是结果json,我需要邮件地址。
{
"DESCRIPTOR": {
"descriptor": "DESCRIPTOR",
"directoryAlias": "DIRECTORYALIAS",
"displayName": "DISPLAYNAME",
"domain": "DOMAIN",
"legacyDescriptor": LEGACYDESCRIPTOR,
"mailAddress": "MAILADDRESS",
"metaType": "METATYPE",
"origin": "ORIGIN",
"originId": "ORIGINID",
"principalName": "PRINCIPALNAME",
"subjectKind": "SUBJECTKIND",
"url": "URL"
},
.....
}
有人处理过结果并知道如何获取邮件地址吗?
谢谢!
简答:您应该可以通过 $result.'DESCRIPTOR'.mailAddress
.
mailAddress
属性
原因和方法如下:
PS C:\> $result = az devops security group membership list --id "xxx" --organization "yyy" | ConvertFrom-Json
PS C:\> $result.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False PSCustomObject System.Object
PS C:\Users\BHANNADE> $result | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
aad.NmEzOTc1MTIt...xYr58NWZkLTg4MDQtY2QxZGUxODkzMWQ4 NoteProperty System.Management.Automation.PSCustomObject ...
aad.Y2I1NjM2NjIt...mZi03NzA5LTg4MWQtNDZjZmI5NjRjYWMy NoteProperty System.Management.Automation.PSCustomObject ...
这告诉我们 $result
是一个 PowerShell 自定义对象,其描述符本身是成员 (NoteProperties)。
因此,$result.'DESCRIPTOR'.mailAddress
应该让你到达mailAddress
属性:
PS C:\> $result.'aad.NmEzOTc1MTIt...xYr58NWZkLTg4MDQtY2QxZGUxODkzMWQ4'.mailAddress
abc.xyz@email.com
更新:
一个团队中可能有多个成员,因此您的 $result
可能包含多个对象。您可以提取所有电子邮件地址,如下所示:
$properties = $result | Get-Member -MemberType Properties | Select-Object -ExpandProperty Name
$mailAddresses = @()
$mailAddresses += $properties.ForEach({$result.$_.mailAddress})
您可以直接将 Azure CLI 与 Global Parameters --query
一起使用,您可以获得这样的邮件地址:
az devops security group membership list --id "xxx" --query "DESCRIPTOR.mailAddress"
此外,您可以使用 --output
更改输出格式。