Powershell 如何筛选';Get-EC2ImageByName';要获取最新的稳定AMI-ID(不是rc)?
我已经通过Powershell 如何筛选';Get-EC2ImageByName';要获取最新的稳定AMI-ID(不是rc)?,powershell,amazon-web-services,amazon-ami,aws-powershell,Powershell,Amazon Web Services,Amazon Ami,Aws Powershell,我已经通过Get-EC2ImageByName成功地收集了AMI ID,但是我正在尝试确定一种方法来获取最新的“not rc”AMI 我目前运行: Get-EC2ImageByName -Names *amzn-ami-pv*x86_64*ebs* - | Select-Object -ExpandProperty "ImageId" -First 1 它给了我: ami-978639e4 当我跑步时: Get-EC2ImageByName -Names *amzn-ami-pv*x86_6
Get-EC2ImageByName
成功地收集了AMI ID,但是我正在尝试确定一种方法来获取最新的“not rc”AMI
我目前运行:
Get-EC2ImageByName -Names *amzn-ami-pv*x86_64*ebs* - | Select-Object -ExpandProperty "ImageId" -First 1
它给了我:
ami-978639e4
当我跑步时:
Get-EC2ImageByName -Names *amzn-ami-pv*x86_64*ebs*
前两项是:
Architecture : x86_64
BlockDeviceMappings : {/dev/sda1}
CreationDate : 2016-02-27T22:30:03.000Z
Description : Amazon Linux AMI 2016.03.rc-0 x86_64 PV EBS
Hypervisor : xen
ImageId : ami-978639e4
ImageLocation : amazon/amzn-ami-pv-2016.03.rc-0.x86_64-ebs
ImageOwnerAlias : amazon
ImageType : machine
KernelId : aki-52a34525
Name : amzn-ami-pv-2016.03.rc-0.x86_64-ebs
OwnerId : 137112412989
Platform :
ProductCodes : {}
Public : True
RamdiskId :
RootDeviceName : /dev/sda1
RootDeviceType : ebs
SriovNetSupport :
State : available
StateReason :
Tags : {}
VirtualizationType : paravirtual
Architecture : x86_64
BlockDeviceMappings : {/dev/sda1}
CreationDate : 2016-02-10T22:22:22.000Z
Description : Amazon Linux AMI 2015.09.2 x86_64 PV EBS
Hypervisor : xen
ImageId : ami-a93484da
ImageLocation : amazon/amzn-ami-pv-2015.09.2.x86_64-ebs
ImageOwnerAlias : amazon
ImageType : machine
KernelId : aki-52a34525
Name : amzn-ami-pv-2015.09.2.x86_64-ebs
OwnerId : 137112412989
Platform :
ProductCodes : {}
Public : True
RamdiskId :
RootDeviceName : /dev/sda1
RootDeviceType : ebs
SriovNetSupport :
State : available
StateReason :
Tags : {}
VirtualizationType : paravirtual
我试图忽略“rc”条目,并获取名称中没有“rc”的第一个AMI ID,或者仅获取第一个“not rc”AMI ID。
在本例中,我想要的AMI-ID是:
ami-a93484da
有人知道不使用“-Skip 1
”就可以实现这一点的方法吗?
(我避免使用“-Skip 1
”,因为我试图使脚本可重复,例如,如果有2个或更多的“rc”版本
感谢您的帮助!假设名称的其他部分均未更改,您可以使用正则表达式对递增的“rc数字”值进行验证。您可以使用此表达式:
".rc-\d+."
此表达式检查字符串“.rc digits.”在字符串中的任何位置,其中的数字可以是一个或多个数字。从那里,您可以对所需的输出进行排序和筛选
下面是一个快速的现场测试,我将执行以下操作:
- 获取与您提供的名称匹配的图像
- 通过管道将结果传输到Where对象(别名:?)并使用
筛选出结果,在这里我显式查找与表达式不匹配的结果-notmatch
- 按最新的AMI CreationDate排序。(这假设较新的版本在以后启动)
- 选择要输出的ImageId、名称和CreationDate
- 将整个表达式包装在
中以强制输出为集合,然后通过指定@()
来检索该集合中的第一项[0]
PS C:/>@(Get-EC2ImageByName-Names“amzn-ami-pv*x86_64*ebs*”)`
其中对象{$\名称-notmatch.rc-\d+。“}|`
排序创建日期-描述|`
选择ImageId、名称、创建日期[0]
输出:
ImageId Name CreationDate
------- ---- ------------
ami-d4f7ddbe amzn-ami-pv-2015.09.2.x86_64-ebs 2016-02-10T22:21:22.000Z
ImageId名称CreationDate
------- ---- ------------
ami-d4f7ddbe amzn-ami-pv-2015.09.2.x86_64-ebs 2016-02-10T22:21:22.000Z
只是为了更新,我认为主要的问题是我试图收集以下信息:
amzn-ami-pv-2015.09.2.x86_64-ebs
不是这个:amzn-ami-pv-2016.03.rc-0.x86_64-ebs