Управление несколькими серверами для Hyper-V (часть 4)

Опубликовано: 20 Апреля, 2023

  • Управление несколькими серверами для Hyper-V (часть 3)

Введение

Я закончил предыдущую статью этой серии, продемонстрировав технику чтения списка виртуальных машин из текстового файла и последующего получения информации об этих виртуальных машинах. Этот метод может быть чрезвычайно полезен, потому что он дает вам простой способ категоризировать ваши виртуальные машины. Например, если вы заинтересованы в периодической проверке работоспособности ваших серверов Exchange, вы можете создать текстовый файл со списком всех ваших серверов Exchange, а затем создать сценарий PowerShell, который проверяет этот файл. Точно так же вы можете создать текстовый файл для своих контроллеров домена или для своих серверов SharePoint.

Независимо от того, как вы планируете использовать текстовые файлы, содержащие списки виртуальных машин, вам необходимо создать текстовые файлы, прежде чем вы сможете их использовать. Создание текстовых файлов не представляет большой сложности, если у вас всего несколько виртуальных машин, но этот процесс может стать чрезвычайно утомительным и трудоемким для организаций, имеющих большое количество виртуальных машин. Создание текстовых файлов также может быть проблематичным для организаций, которые часто создают новые виртуальные машины.

Если вы хотите использовать текстовые файлы для управления виртуальной машиной, вы можете избежать некоторых сложностей создания текстовых файлов, автоматизировав процесс. На самом деле вы можете использовать командлеты PowerShell для создания текстовых файлов, которые впоследствии можно использовать для управления виртуальными машинами. В этой статье я покажу вам, как это делается.

Базовое создание текстового файла

Существует несколько различных способов создания простого текстового файла в PowerShell. Чаще всего для этой цели используется командлет Set-Content. Предположим, например, что вы хотите добавить фразу Hello World в текстовый файл с именем TEST.TXT. Вы можете сделать это с помощью следующей команды PowerShell:

Set-Content – Значение «Hello World» – Путь C:TempTest.txt

Хотя это, вероятно, самый популярный командлет для создания текстового файла, в этой статье я буду использовать другой командлет. Командлет, который я буду использовать, называется Out-File. Оба командлета предназначены для создания текстовых файлов, но поскольку мы собираемся заполнить текстовый файл именами виртуальных машин, использование командлета Out-File приведет к немного меньшему кодированию. С учетом сказанного, если вы хотите создать текстовый файл с именем TEST.TXT, содержащий фразу Hello World, с помощью командлета Out-File, команда для этого будет выглядеть так:

«Привет, мир» | Исходящий файл – путь к файлу C:TempTest.txt

Добавление имен виртуальных машин в текстовый файл

До сих пор я показывал вам некоторые приемы добавления необработанного текста в текстовый файл, но эта статья не об этом. Моя цель при написании этой статьи — показать вам, как автоматизировать процесс создания текстового файла. В этом случае нам нужно будет написать код PowerShell, который извлекает имена виртуальных машин, а затем добавляет эти имена виртуальных машин в текстовый файл.

Самый простой способ достичь этой цели — использовать командлет Get-VM для получения имен виртуальных машин, а затем использовать командлет Out-File для добавления имен этих виртуальных машин в текстовый файл. Предположим, например, что вы хотите создать текстовый файл с именем My-VMs.txt, содержащий имена всех виртуальных машин, находящихся на хост-сервере. Команда для этого будет:

Получить виртуальную машину | Out-File – FilePath C:TempMy-VMs.txt

Вы можете увидеть команду и ее вывод на рисунке A.

Изображение 15483
Рисунок A: Мы создали текстовый файл, содержащий имена наших виртуальных машин.

Как вы можете видеть на рисунке выше, процесс создания текстового файла прошел успешно, но у нас есть еще немного работы. Командлет включал не только имена виртуальных машин, но и такую информацию, как состояние виртуальной машины и использование памяти. Эта информация полезна, если мы хотим создать отчет об использовании ресурсов ВМ, но для наших целей она не подойдет. Текстовый файл должен содержать имена виртуальных машин и ничего больше. К счастью, это очень легко сделать. Команда для этого:

Получить виртуальную машину | Формат имени таблицы –HideTableHeaders | Out-File – FilePath C:TempMy-VMs.txt

Приведенная выше команда работает так же, как и предыдущая команда, но я внес два изменения. Во-первых, я добавил команду Format-Table Name. Это приводит к тому, что выходные данные командлета Get-VM скрывают все, кроме имен виртуальных машин. Однако имя столбца по-прежнему отображается над списком виртуальных машин. Чтобы избавиться от имени столбца, чтобы у нас был просто необработанный список имен виртуальных машин, мы должны добавить параметр –HideTableHeaders.

Заполнение текстового файла

Ранее я показал вам способ добавления имен всех виртуальных машин на заданном хосте в текстовый файл. Однако часто удобнее создавать текстовые файлы, содержащие имена виртуальных машин, отвечающих определенным критериям. Например, вы можете создать текстовый файл, содержащий имена всех ваших виртуализированных контроллеров домена.

Для этого вы можете использовать ту же базовую технику создания текстовых файлов, которую я продемонстрировал ранее. Однако команду нужно немного расширить, чтобы мы могли фильтровать список имен виртуальных машин.

Чтобы показать вам, как может работать такая команда, представьте, что вы хотите создать текстовый файл, содержащий все ваши виртуализированные контроллеры домена. В такой ситуации могут быть полезны соглашения об именах. Например, мой тестовый сервер содержит два виртуализированных контроллера домена (Lab15DC и Lab15DC2). Поскольку оба контроллера домена имеют похожие имена, я мог бы использовать формат именования для составления списка.

Чтобы показать вам, что я имею в виду, взгляните на следующую команду:

Get-VM – имя Lab15DC*

Эта команда возвращает имена всех виртуальных машин, имена которых начинаются с Lab15DC, как показано на рисунке B.

Изображение 15484
Рисунок B. Командлет Get-VM может возвращать определенные имена виртуальных машин.

Мы можем легко включить эту технику в команду, которая использовалась ранее для создания текстового файла. Полная команда будет выглядеть так:

Get-VM – имя Lab15DC* | Формат имени таблицы –HideTableHeaders | Исходящий файл – FilePath C:TempDCs.txt

Чтобы увидеть, как эта команда выглядит в действии, взгляните на рисунок C. На этом рисунке я использовал команду, указанную выше, для создания текстового файла с именем DCs.txt. Затем я использовал командлет Get-Content для извлечения и отображения содержимого созданного файла. Как видно на рисунке, текстовый файл содержит только имена моих виртуализированных контроллеров домена.

Изображение 15485
Рисунок C: Мы можем автоматически создать текстовый файл, содержащий имена виртуализированных контроллеров домена.

Очевидно, что создание списка имен виртуальных машин, а затем отображение этих имен само по себе не очень полезно. Однако, как вы видели в предыдущей статье, этот список можно использовать для автоматизации процесса управления виртуальными машинами. Вы можете использовать эту технику для разработки сценариев, которые можно запускать на нескольких виртуальных машинах.

Вывод

Hyper-V 3.0 упрощает выполнение операций с удаленными виртуальными машинами или удаленными хост-серверами. Вы даже можете автоматизировать действия по управлению, написав их через PowerShell.

  • Управление несколькими серверами для Hyper-V (часть 3)