【发布时间】:2021-10-28 16:49:39
【问题描述】:
我正在寻找一个非常基本的脚本来使用 PowerShell 在 AWS 上计算正在运行的 EC2 实例的数量。我找到了几种方法,但由于某种原因,当我尝试它们时,我没有得到预期的结果。
我最接近的是:
$instancestate = (get-ec2instance).instances.state.name
$instancestate
返回:
stopped
running
stopped
stopped
running
(该列表持续了大约 80 个实例)
我希望得到一个计算那些正在运行的响应。
【问题讨论】:
-
你试过了吗:
(get-ec2instance).count? -
可能类似于
$instancestate = get-ec2instance | where {$_.instances.state.name -eq "running"}; $count = $instancestate | measure-object | select -expandproperty count? -
不幸的是,上述解决方案都不起作用。第一个将计算所有实例(不仅仅是那些在问题中运行的实例)。第二个不尊重 _.instances.state.name - 由于某种原因,它再次返回所有实例(过滤器不起作用 - 它显示所有正在运行和停止的实例)。我相信这可能是 PowerShell CmdLet 中的一个错误。
-
好的,那么我猜
(get-ec2instance).instances.state.name返回一个数组?如果是这样你可以试试(get-ec2instance).instances.state.name | where {$_ -eq "running"}如果不是请告诉我们它返回什么类型的对象 -
您可以通过在 $instancestate (
$instancestate.gettype()) 上使用.gettype()来获取对象类型。这只是猜测。根据您描述的输出(请始终包括有问题的完整输出)替换 @ 987654329@ 和$_.value可能会起作用
标签: powershell amazon-web-services amazon-ec2 aws-powershell