#powershell
#powershell
Вопрос:
У меня есть команда Powershell, которую для целей автоматизации в нашей системе мониторинга я пытаюсь записать в одну строку.
По сути, мы проверяем несколько виртуальных машин Hyper-V, чтобы убедиться, что они реплицируются правильно. Для этого мы проверяем дату / время последней репликации и сравниваем их с текущей датой / временем. Вот однострочник, который у меня есть для проверки одной машины.
(new-timespan -start(get-vm termserv002| Measure-VMReplication | select -expand lastreplicationtime)).totalminutes
Это работает отлично. Тем не менее, мы хотели бы проверить ВСЕ виртуальные машины в этом поле Hyper-V. Я могу сделать это без запуска new-timespan, выполнив эту команду —
get-vm | where {$_.replicationstate -ne "Disabled"} | Measure-VMReplication | select vmname, lastreplicationtime
Это дает мне каждую виртуальную машину на коробке и время ее последней репликации.
В конечном счете, я хотел бы получить выходные данные VMName и LastReplicationTime в минутах от текущей даты / времени. Если я смогу сделать это в одной строке, запустите homerun!
Есть предложения? Независимо от того, как я пытаюсь объединить их вместе, я просто не могу правильно использовать синтаксис (или это невозможно).)
Ответ №1:
Я не могу это протестировать, но попробую:
get-vm | where {$_.replicationstate -ne "Disabled"} | Measure-VMReplication |
select vmname, @{n="LastReplicationTime";e={ (new-timespan -start ($_.lastreplicationtime) -end (get-date)).TotalMinutes }}
Комментарии:
1. Кажется, это сделало свое дело! Возможно, мне нужно еще кое-что доработать, но если я это сделаю, я открою новый поток! Спасибо!!
2. ОК — последующие действия — не уверен в протоколе. Если мне понадобится задать еще один вопрос, дайте мне знать. Любой простой способ просто показать виртуальным машинам, где время последней репликации>, скажем, 1?
3. добавьте это
| ? { $_.lastreplicationtime -gt 1 }
после приведенного выше кода.4. ВЫДАЮЩИЙСЯ! Большое спасибо, именно то, что мне было нужно! Я не мог понять эту часть ни за что на свете — настолько просто, что я не думал, что смогу использовать $ _.lastreplicationtime в тот момент, так как мы были в выражениях.