1

Я ищу очень простой скрипт, чтобы подсчитать количество запущенных экземпляров EC2 в AWS с помощью PowerShell. Я нашел несколько методов, но по какой-то причине, когда я их пробовал, я не получаю ожидаемых результатов.Как подсчитать количество экземпляров EC2?

Ближайший у меня есть это:

$instancestate = (get-ec2instance).instances.state.name 
$instancestate 

, которая возвращает:

stopped 
running 
stopped 
stopped 
running 

(список продолжается в течение примерно 80 экземпляров)

Я хотел бы иметь ответ, что рассчитывает те, которые работают.

+0

Вы пробовали: '(получить-ec2instance) .count'? – arco444

+0

может быть что-то вроде '$ instancestate = get-ec2instance | где {$ _. instance.state.name -eq "running"}; $ count = $ instancestate | мерительный объект | выберите -expandproperty count'? – Paul

+0

К сожалению, ни одно из вышеперечисленных решений не работает. Первый будет считать все экземпляры (а не только те, которые работают как в вопросе). Второй не почитает _.instances.state.name - по какой-то причине он снова возвращает все экземпляры (фильтр не работает - он показывает все запущенные и также остановленные). Я считаю, что это может быть ошибка в CmdLet PowerShell. –

ответ

-1

http://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Get-EC2Instance.html&tocid=Get-EC2Instance

Из этого выглядит следующим образом будет работать (я не уверен, о синтаксисе фильтра):

$i = Get-EC2Instance -Filter @{Name = "instance-state-name"; Value = "running"} 
$i.Count 
+0

К сожалению, это не сработает. Это ошибка «Get-EC2Instance: Can not bind parameter» Фильтр '. Невозможно создать объект типа «Amazon.EC2.Model.Filter» –

+0

Здесь вы идете: пример с использованием фильтра: http://docs.aws.amazon.com/powershell/latest/userguide/pstools-ec2-launch. HTML – Swonkie

1

Я не уверен, о других, но я предпочитаю явно присвойте мои фильтры ec2 переменным, а затем перечислите их при вызове что-то вроде Get-EC2Instance. Это упрощает работу с фильтрами, если вам нужно фильтровать несколько условий.

Вот рабочий пример того, что вы после этого, где у меня есть 6 погонных экземпляры:

# Create the filter 
PS C:\> $filterRunning = New-Object Amazon.EC2.Model.Filter -Property @{Name = "instance-state-name"; Value = "running"} 

# Force output of Get-EC2Instance into a collection. 
PS C:\> $runningInstances = @(Get-EC2Instance -Filter $filterRunning) 

# Count the running instances (more literally, count the collection iterates) 
PS C:\> $runningInstances.Count 
6