[トップページ] [FAQ 一覧]

対象:インスタンス

Get-EC2Instanceの戻り値をInstance ID でフィルタしたときにはまった原因と対処





問題


Get-EC2Instanceの戻り値をInstance ID でフィルタしたときに苦労したので、そのときの状況をメモとして残します。

以下のコードではうまくフィルタできませんでした。i-0c* で i-0c12345 などのインスタンスIDをフィルタしようとしましたが失敗しました。

失敗例:

(Get-EC2Instance)| Where {($_.Instances).InstanceId -like "i-0c*"}



原因


GetType()で調査するとinstances は Listであることが分かりました。


PS C:\> (Get-EC2Instance)| ForEach-object {$_.Instances.GetType()}

IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True List`1 System.Object
True True List`1 System.Object




よって以下のとおり(結果が1台の場合は) list の先頭でチェックすればよいことが分かりました。

失敗例:

(Get-EC2Instance)| Where {($_.Instances).InstanceId -like "i-0c*"}



成功例:

(Get-EC2Instance)| Where {($_.Instances[0]).InstanceId -like "i-0c*"}



最終的に以下のようなコードとなりました。(インスタンスIDを指定してプライベートIPを出力しています)


(((Get-EC2Instance)| Where {($_.Instances[0]).InstanceId -like "i-0c*"} ).Instances) | select -ExpandProperty PrivateIpAddress


【超重要】本ページは2019/09/04に記載されました。情報が古くなっている可能性があります。








[ 一覧に戻る]


【注意事項】本ページの内容は個人的に調査した結果がであり内容が正しいことは保証されません。
またAWSサービスは常に改良、アップデートされており本ページの内容が古く誤った内容になる可能性もあります。変更になっても本ページが正しく更新されるとは限りません。
あくまでも参考程度でご覧ください。内容により発生したいかなる時間的損害、金銭的損害、その他の損害に関しても何人も保証しません。