Использование фильтрации вывода результатов командлета Get-View задача не очень простая. В том плане, что обычные приемы, применяемые как в случае с PowerCLI, так и PowerShell не всегда срабатывает.
Как нам получить только ВМ с именем "TestVM"?
Используем дополнительно символ крышки ^
то получим ошибку - мол в перечислении "от w до T" ([^New-TestVM] w в алфавите стоит после T. Объяснить фильтру что знак "-" - это вовсе не перечисление у меня не получилось.
При этом использование дефиса в "обычном", выражении, отрабатывает как надо:
Давайте получим все ВМ, имена которых содержат только буквы латинского алфавита, причем этих букв 5
Как видим, в вывод не вошла ВМ с именем AD-CS.
А теперь выведем давайте получим все ВМ, имена которых содержат только буквы латинского алфавита, но этих букв от 1 до 5
На этот раз мы воспользовались квантификаторами.
Квантификаторы позволяют указывать диапазон в формате {x,y}, где х — минимально необходимое, а у — максимально возможное количество символов
Все ВМ, имена которых заканчиваются на цифры
Все ВМ, имена которых содержит пробел
Все ВМ, имена которых заканчиваются на цифры
Еще одна конструкция, о которой необходимо упомянуть - это Альтернатива.
Данный вывод не содержит ВМ "Test_VM_3". Давайте выведем и эту ВМ.
Выведем список всех ВМ
то получим одну ВМ.
Но если выполним
То имеем в выводе уже четыре ВМ, которые содержат в своем имени символы "TestVM".
Используем \z
В случае с Get-View мы не можем использовать обычные операторы, как-то "равно - не - равно" (-eq, -ne), поэтому воспользуемся регулярными выражениями.
Регулярные выражения (Regular Expressions, RegExp) — это специализированный язык для поиска и обработки текста. Основой регулярных выражений являются управляющие символы (метасимволы), а само регулярное выражение по сути является шаблоном, определяющим правила поиска.
Используем \z
В данном примере мы указали, что хотим вывести все ВМ, имя которых заканчиваются на TestVM.
Можно использовать следующие равнозначные символы: $,
\Zили
\z
Как нам получить только ВМ с именем "TestVM"?
Используем дополнительно символ крышки ^
Теперь мы получили ВМ, которая называется именно TestVM.
И фильтр буквально означает следующее: начало строки, TestVM, конец строки.
Теперь выведем все ВМ, имена которых не содержат TestVM, для чего используем квадратные скобки [] и ^
В статье PowerCLI. Использование Get-View. Часть 2. я упоминал что использование фильтра в выражениях довольно сложно, с использованием регулярных выражений мы можем сделать то, что операторами сравнения у нас тогда не получалось.
Получим список всех не включенных ВМ.
Как видим, в этот список вошла и приостановленная ВМ. Т.е. фильтр отработал корректно.
Но если мы захотим вывести все ВМ, кроме, например New-TestVM
При этом использование дефиса в "обычном", выражении, отрабатывает как надо:
Давайте получим все ВМ, имена которых содержат только буквы латинского алфавита, причем этих букв 5
Как видим, в вывод не вошла ВМ с именем AD-CS.
А теперь выведем давайте получим все ВМ, имена которых содержат только буквы латинского алфавита, но этих букв от 1 до 5
На этот раз мы воспользовались квантификаторами.
Квантификаторы позволяют указывать диапазон в формате {x,y}, где х — минимально необходимое, а у — максимально возможное количество символов
Все ВМ, имена которых заканчиваются на цифры
Все ВМ, имена которых содержит пробел
Все ВМ, имена которых заканчиваются на цифры
Еще одна конструкция, о которой необходимо упомянуть - это Альтернатива.
Символ | (вертикальная черта) в регулярных выражениях означает «или» и позволяет выбрать один из нескольких вариантов.
Вернемся к выводу виртуальных машин с именами, содержащими TestVM
Комментариев нет:
Отправить комментарий