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

最终我想要完成的是:

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

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

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

我遇到的问题

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

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

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

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

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

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

1 回答 1

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     {}
...           ...             ...    ...
于 2015-05-29T20:53:58.427 回答