如何访问 Get-EC2SecurityGroup 的 IpPermissions 属性 的属性?

How can I access properties of the IpPermissions property of Get-EC2SecurityGroup?

  1. 我正在尝试获取安全组列表。 (成功 - 使用 Get-EC2SecurityGroup)
  2. 获取与每个安全组关联的特定 IP 权限的列表。 (成功 - 使用 (Get-EC2SecurityGroup).IpPermissions)
  3. 只有 return 结果,其中 FromPort = "xxx"(不成功 - 不确定如何访问结果列表中 return 的 FromPort 属性)

最终我想要完成的是:

  1. 获取现有安全组的列表,并遍历每个组。

  2. 在遍历每个组时,调用 IpPermissions,并查找特定的 FromPort "xxx".

  3. 如果 FromPort 匹配,记录其他属性:(FromPort, IpProtocol, IpRanges, ToPort, UserIdGroupPairs)

我遇到的问题

  1. 我不确定如何使用亚马逊对象进行循环

  2. 我似乎无法访问属性,即使它们似乎已命名并具有值。

  3. 我尝试过使用 -Filter 进行多次不同的迭代,但没有成功。

  4. 文档似乎是自引用的,我 运行 中的示例并没有深入到这种详细程度。

结果 return 来自 (Get-EC2SecurityGroup).IpPermissions

FromPort         : 123
IpProtocol       : tcp
IpRanges         : {0.0.0.0/0}
ToPort           : 123
UserIdGroupPairs : {}

这是一个按照您描述的方式运行的示例:

  • 按 FromPort 过滤安全组对象
  • 在匹配的安全组中,输出 IpProtocol、IpRanges、ToPort 和 UserIdGroupPairs。

代码:

# Example using port 22
PS C:\> $port = 22
PS C:\> Get-EC2SecurityGroup | 
    ? { $_.IpPermissions.FromPort -eq $port } | 
    % { $_.IpPermissions } | 
    Select -property IpProtocol, IpRanges, ToPort, UserIdGroupPairs

输出:

IpProtocol    IpRanges        ToPort UserIdGroupPairs
----------    --------        ------ ----------------
tcp           {0.0.0.0/0}     22     {}
...           ...             ...    ...