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

时间:2015-05-29 20:35:25

标签: powershell amazon-web-services amazon-ec2 aws-powershell

  1. 我正在尝试获取安全组列表。 (成功 - 使用Get-EC2SecurityGroup)
  2. 获取与每个安全组关联的特定IPPermissions的列表。 (成功 - 使用(Get-EC2SecurityGroup).IpPermissions)
  3. 仅返回FromPort =" xxx" (不成功 - 不确定如何访问结果列表中返回的FromPort属性)
  4. 最终我要完成的是:

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

    2. 在循环浏览每个组时,调用IpPermissions,并查找特定的FromPort" xxx"。

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

    4. 我遇到的问题

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

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

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

      4. 文档似乎是自我引用的,我遇到的示例并没有达到这个详细程度。

      5. 从(Get-EC2SecurityGroup)返回的结果.IpPermissions

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

1 个答案:

答案 0 :(得分:1)

以下是您所描述的示例:

  • 按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     {}
...           ...             ...    ...