Настройка виртуальных машин с помощью PowerShell

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

Введение

В моей предыдущей статье «Настройка хостов Hyper-V с помощью PowerShell» здесь, в разделе статей на VirtualizationAdmin.com, мы рассмотрели некоторые возможности Windows PowerShell, встроенные в Windows Server 2012 и Windows Server 2012 R2, которые позволяют выполнять различные задачи по настройке Hyper-V. V hosts из командной строки PowerShell или запустив сценарии PowerShell. PowerShell можно использовать не только для управления хостами Hyper-V, но и для настройки и управления виртуальными машинами, работающими на этих хостах. В настоящей статье приведены несколько примеров того, что вы можете сделать в этой области. Приведенные ниже пояснения и процедуры взяты из моей книги «Руководство по обучению: «Установка и настройка Windows Server 2012 R2» (Microsoft Press, 2014). Также в конце этой статьи есть несколько дополнительных советов по этому вопросу, которые я почерпнул из более крупного сообщества ИТ-специалистов, включая почти 100 000 подписчиков нашего еженедельного информационного бюллетеня WServerNews, на который вы можете подписаться по адресу http://www.wservernews..com/subscribe.htm.

Создание виртуальных машин

Вы можете создавать новые виртуальные машины на узле Hyper-V с помощью диспетчера Hyper-V или Windows PowerShell. Вы можете использовать командлет New-VM для создания новой виртуальной машины с помощью Windows PowerShell. Например, чтобы создать новую виртуальную машину с именем SRV-A на HOST4, назначьте виртуальной машине 1 ГБ загрузочной памяти, подключите ее к виртуальному коммутатору с именем CONTOSO Virtual Switch, создайте новый виртуальный жесткий диск (файл VHDX) объемом 500 ГБ. в местоположении по умолчанию и сделайте виртуальный дисковод компакт-дисков загрузочным устройством по умолчанию, используйте следующую команду:

PS C:> New-VM -ComputerName HOST4 -Name SRV-A -MemoryStartupBytes 1GB `
-BootDevice CD -SwitchName "Виртуальный коммутатор CONTOSO" -NewVHDSizeBytes 500GB `
-Новый VHDPath SRV-A.vhdx
 
Название Состояние CPUUsage(%) MemoryAssigned(M) Время работы Статус
---- ----- ----------- ------------------ ------ ------
SRV-A Выкл. 0 0 00:00:00 Нормальная работа

Настройка виртуальных машин

После создания виртуальной машины может потребоваться дальнейшая настройка ее виртуального оборудования и параметров управления. Это можно сделать либо открыв настройки виртуальной машины в диспетчере Hyper-V, либо с помощью Windows PowerShell. Например, чтобы просмотреть параметры той же виртуальной машины с помощью Windows PowerShell, вы можете использовать командлет Get-VM, как показано здесь:

PS C:> Get-VM -Name SRV-A | Список форматов *
 
Имя ВМ: SRV-A
VMId: cabb9f25-1d4a-4ce0-884a-a04520ed0880
Идентификатор: cabb9f25-1d4a-4ce0-884a-a04520ed0880
Название: СРВ-А
Состояние: Выкл.
Рабочий статус: {ОК}
Первичный рабочий статус: ОК
Вторичный рабочий статус:
StatusDescriptions: {Работает нормально}
PrimaryStatusDescription: работает нормально
Описание вторичного статуса:
Статус: работает нормально
Стук сердца                 :
Состояние репликации: отключено
ReplicationHealth: не применимо
Режим репликации: нет
Использование ЦП: 0
Назначено памяти: 0
Требование к памяти: 0
Состояние памяти              :
SmartPagingFileInUse: Ложь
Время работы: 00:00:00
Версия служб интеграции:
ResourceMeteringEnabled: Ложь
Расположение конфигурации: C:ProgramDataMicrosoftWindowsHyper-V
Расположение файла моментального снимка: C:ProgramDataMicrosoftWindowsHyper-V
AutomaticStartAction: StartIfRunning
AutomaticStopAction: Сохранить
Автоматическая задержка старта: 0
SmartPagingFilePath: C:ProgramDataMicrosoftWindowsHyper-V
NumaAligned:
NumaNodesCount: 1
НумаСокетКаунт: 1
IsDeleted: Ложь
Имя компьютера: HOST4
Заметки                     :
Путь: C:ProgramDataMicrosoftWindowsHyper-V
Время создания: 13.08.2012 8:16:47
Искластеред: Ложь
Размер системных файлов: 28464.
Идентификатор родительского снимка:
РодительскийСнапшотИмя:
ПамятьЗапуск: 1073741824
Динамикмемориенаблед: ложь
Минимум памяти: 536870912
Максимум памяти: 1099511627776
Количество процессоров: 1
RemoteFxAdapter:
NetworkAdapters: {сетевой адаптер}
FibreChannelHostBusAdapters: {}
ComPort1: Microsoft.HyperV.PowerShell.VMComPort
ComPort2: Microsoft.HyperV.PowerShell.VMComPort
Дисковод: Microsoft.HyperV.PowerShell.VMFloppyDiskDrive
DVDDrives: {DVD-привод на IDE-контроллере номер 1 в местоположении 0}
Жесткие диски: {жесткий диск на IDE-контроллере номер 0 в расположении 0}
VMIntegrationService: {Синхронизация времени, Heartbeat, обмен парами ключ-значение, завершение работы...}

Чтобы изменить эти параметры виртуальной машины, вы можете использовать командлет Set-VM и другие командлеты Hyper-V. В следующих разделах мы рассмотрим лишь некоторые из этих различных параметров виртуальной машины и способы их настройки. Дополнительные сведения о настройке параметров виртуальной машины см. в библиотеке TechNet по соответствующему разделу.

Добавление виртуальных дисков

Вы можете использовать Windows PowerShell для создания новых виртуальных дисков и добавления их к вашим виртуальным машинам. Например, предположим, что вы хотите создать и подключить динамически расширяемый диск данных объемом 500 ГБ к виртуальной машине SRV-A на HOST4. Вы можете начать с использования команды Get-VHD для отображения списка дисков, подключенных к SRV-A, следующим образом:

PS C:> Get-VM -VMName SRV-A | Выбрать объект VMId | Получить-VHD | `
Путь к списку форматов, VhdFormat, VhdType, Размер
 
Путь: C:UsersPublicDocumentsHyper-VVirtual Hard DisksSRV-A.vhdx
VHDФормат: VHDX
VhdType: динамический
Размер: 536870912000

Предыдущая команда использует возможности конвейера Windows PowerShell и работает следующим образом:

  1. Команда Get-VM –VMName SRV-A возвращает объект, представляющий виртуальную машину SRV-A.
  2. Выходные данные предыдущей команды затем передаются в команду Select-Object VMId, которая возвращает объект, представляющий GUID для SRV-A.
  3. Затем GUID для SRV-A передается в команду Get-VHD, чтобы указать, какая виртуальная машина должна быть запрошена для ее виртуальных дисков.
  4. Выходные данные команды Get-VHD затем форматируются в виде списка для отображения только тех свойств, которые представляют интерес, а именно: путь и имя файла виртуального диска, используемый формат, тип диска и размер диска.

Затем вы можете использовать командлет New-VHD для создания нового диска данных следующим образом:

PS C:> New-VHD -SizeBytes 500 ГБ `
-Путь "C:UsersPublicDocumentsHyper-VVirtual Hard DisksSRV-A-data.vhdx"
 
Имя компьютера: HOST4
Путь: C:UsersPublicDocumentsHyper-VVirtual Hard DisksSRV-A-data.vhdx
VHDФормат: VHDX
VhdType: динамический
Размер файла: 4194304
Размер: 536870912000
...

Затем вы можете использовать командлет Add-VMHardDiskDrive для подключения нового диска данных к расположению 1 на IDE-контроллере 0 следующим образом:

PS C:> Add-VMHardDiskDrive -VMName SRV-A `
-Путь "C:UsersPublicDocumentsHyper-VVirtual Hard DisksSRV-A-data.vhdx" `
-ControllerType IDE -ControllerNumber 0 -ControllerLocation 1
Затем вы можете использовать командлет Get-VHD, как и раньше, чтобы проверить результат:
PS C:> Get-VM -VMName SRV-A | Выбрать объект VMId | Получить-VHD | `
Путь к списку форматов, VhdFormat, VhdType, Размер
 
Путь: C:UsersPublicDocumentsHyper-VVirtual Hard DisksSRV-A.vhdx
VHDФормат: VHDX
VhdType: динамический
Размер: 536870912000
 
Путь: C:UsersPublicDocumentsHyper-VVirtual Hard DisksSRV-A-data.vhdx
VHDФормат: VHDX
VhdType: динамический
Размер: 536870912000

Кроме того, вы можете использовать командлет Get-VMHardDiskDrive для отображения всех дисков, подключенных к контроллерам IDE на виртуальной машине:

PS C:> Get-VMHardDiskDrive -VMName SRV-A | `
Список форматов ControllerNumber, ControllerLocation, Path
 
Номер контроллера: 0
Расположение контроллера: 0
Путь: C:UsersPublicDocumentsHyper-VVirtual Hard DisksSRV-A.vhdx
 
Номер контроллера: 0
Расположение контроллера: 1
Путь: C:UsersPublicDocumentsHyper-VVirtual Hard DisksSRV-A-data.vhdx

Просмотр страницы контроллера IDE 0 и ее подстраниц в диалоговом окне «Параметры» для виртуальной машины в диспетчере Hyper-V подтвердит успешность процедуры.

Добавление и настройка виртуальных сетевых адаптеров

Вы также можете использовать Windows PowerShell для просмотра, добавления, удаления и настройки виртуальных сетевых адаптеров как сетевого, так и устаревшего типа. Например, предположим, что вы хотите добавить второй виртуальный сетевой адаптер в виртуальную машину, подключить его к виртуальному коммутатору на узле и включить DHCP Guard и Router Guard на адаптере. Для этого вы можете начать с использования командлета Get-VMNetworkAdapter для отображения списка виртуальных сетевых адаптеров, установленных на виртуальной машине:

PS C:> Get-VMNetworkAdapter -VMName SRV-B
 
Имя IsManagementOs VMName SwitchName MacAddress Статус IP-адреса
---- -------------- ------ ---------- ---------- ------ -----------
Сетевой адаптер False SRV-B CONTOSO Virtua... 00155D0BE600 {}

Далее вы можете использовать Add-VMNetworkAdapter для создания нового адаптера и подключения его к нужному виртуальному коммутатору:

PS C:> Add-VMNetworkAdapter -VMName SRV-B -VMNetworkAdapterName "Сетевой адаптер 2" `
-SwitchName "УПРАВЛЕНИЕ Виртуальным коммутатором"

Затем вы можете снова использовать Get-VMNetworkAdapter, чтобы проверить результат:

PS C:> Get-VMNetworkAdapter -VMName SRV-B
 
Имя IsManagementOs VMName SwitchName MacAddress Статус IP-адреса
---- -------------- ------ ---------- ---------- ------ -----------
Сетевой адаптер False SRV-B CONTOSO Virt... 00155D0BE600 {}
Сетевой адаптер 2 False SRV-B MANAGEMENT V... 000000000000 {}

Вы можете направить вывод предыдущей команды в командлет Format-List, чтобы определить, включены ли DHCP Guard и Router Guard на адаптере:

PS C:> Get-VMNetworkAdapter -VMName SRV-B -VMNetworkAdapterName "Сетевой адаптер 2" `
| Список форматов DhcpGuard, RouterGuard
 
DHCPGuard: выкл.
RouterGuard: Выкл.

Теперь используйте Set-VMNetworkAdapter, чтобы включить обе эти функции на адаптере:

PS C:> Set-VMNetworkAdapter -VMName SRV-B -VMNetworkAdapterName "Сетевой адаптер 2" `
-DhcpGuard вкл. -RouterGuard вкл.
Повторный запуск Get-VMNetworkAdapter проверяет результат:
PS C:> Get-VMNetworkAdapter -VMName SRV-B -VMNetworkAdapterName "Сетевой адаптер 2" `
| Список форматов DhcpGuard, RouterGuard
 
DHCPGuard: вкл.
RouterGuard: вкл.

Настройка динамической памяти

Вы также можете использовать командлет Set-VM для включения и настройки динамической памяти для виртуальной машины с помощью Windows PowerShell. Например, предположим, что вы хотите включить динамическую память для виртуальной машины с именем SRV-B, работающей на HOST4, и настроить максимальный объем ОЗУ на 4 ГБ. Для этого сначала необходимо остановить виртуальную машину, поскольку вы не можете включить или отключить динамическую память во время работы виртуальной машины. Для этого можно использовать командлет Stop-VM следующим образом:

PS C:> Stop-VM -Name SRV-B -ComputerName HOST4

Затем вы можете использовать командлет Set-VM, чтобы включить динамическую память для виртуальной машины и установить максимальный объем ОЗУ на 4 ГБ следующим образом:

PS C:> Set-VM -Name SRV-B -ComputerName HOST4 -DynamicMemory -MemoryMaximumBytes 4GB

Теперь вы можете использовать Start-VM для перезапуска остановленной виртуальной машины:

PS C:> Start-VM -Name SRV-B -ComputerName HOST4

Наконец, вы можете использовать Get-VM для проверки результата:

PS C:> Get-VM -Name SRV-B -ComputerName HOST4 | `
Список форматов DynamicMemoryEnabled,MemoryMaximum
 
Динамикмемориэнаблед: Истина
Максимум памяти: 4294967296

Теперь скажем, что позже вы решите, что 3 ГБ будет лучшим значением для максимальной оперативной памяти, чем 4 ГБ. Используя параметр –Passthru, указывающий, что объект должен быть передан в конвейер, вы можете внести изменения и проверить результат с помощью одной команды Windows PowerShell следующим образом:

PS C:> Stop-VM -Name SRV-B -ComputerName HOST4 -Passthru | Set-VM-DynamicMemory `
-Максимум байтов памяти 3GB -Проход через | Старт-ВМ-Проход | Получить виртуальную машину | `
Список форматов DynamicMemoryEnabled,MemoryMaximum
 
Динамикмемориэнаблед: Истина
Максимум памяти: 3221225472

Т ИП:
Дополнительные сведения об использовании параметра –Passthru см. в разделе «Использование параметра PowerShell Passthru и возврат объектов».

Настройка управления пропускной способностью

Вы также можете использовать командлет Set-VMNetworkAdapter для настройки параметров управления пропускной способностью для виртуального сетевого адаптера с помощью Windows PowerShell. Командлет Set-VMNetworkAdapter позволяет указать максимальную и минимальную пропускную способность либо в мегабитах в секунду (Мбит/с), либо в виде относительного веса от 0 до 100. Последний подход можно использовать для управления пропускной способностью виртуального сетевого адаптера. по сравнению с другими виртуальными сетевыми адаптерами, подключенными к тому же виртуальному коммутатору. Например, вы можете использовать следующую команду для реализации справедливого распределения пропускной способности, при котором каждому виртуальному сетевому адаптеру для указанных виртуальных машин назначается одинаковый минимальный вес пропускной способности:

PS C:> Get-VMNetworkAdapter -VMName SRV-A,SRV-B,SRV-C | Set — вмнетворкадаптер
-MinimumBandwidthWeight 1

Вы также можете настроить минимальную пропускную способность (абсолютную или относительную) для виртуального коммутатора с помощью командлета Set-VMSwitch. Это также можно сделать при создании нового виртуального коммутатора с помощью командлета New-VMSwitch. Этот параметр нельзя настроить с помощью диспетчера Hyper-V.

Некоторые дополнительные советы

Наконец, вот еще несколько советов по этому вопросу, которые я почерпнул от своих коллег по ИТ и от читателей нашего информационного бюллетеня WServerNews.com.

Проверка состояния компонентов интеграции

При переносе виртуальной машины на более новую версию Windows Server необходимо также обновить компоненты интеграции на виртуальной машине. Чтобы проверить текущий статус компонентов интеграции для виртуальных машин на вашем хосте, вы можете использовать эту команду:

Получить виртуальную машину | ft имя, версия служб интеграции, состояние служб интеграции

Проверка состояния запущенных виртуальных машин

Если вы хотите просмотреть конфигурацию виртуальных машин, которые в данный момент работают на хосте, вы можете использовать эту команду:

Get-VM -имя_компьютера <имя> | где-объект {$_.State -eq 'Выполняется'}

Миграция виртуальных машин между хостами AMD и Intel

Начиная с Hyper-V 2008 R2, вы можете осуществлять миграцию виртуальных машин между хостами Hyper-V, которые имеют разные архитектуры процессоров, например, AMD или Intel. Однако перед этим убедитесь, что для параметра CompatibilityForMigrationEnabled на ваших виртуальных машинах установлено значение True. Вы можете сделать это следующим образом:

Получить виртуальную машину | Set-VMProcessor — CompatibilityForMigrationEnabled $True

Дополнительные ресурсы

Сведения о синтаксисе командлетов Hyper-V и примеры использования см. в разделе «Командлеты Hyper-V в Windows PowerShell».