Hyper-V Windows Server 2008 RUS

Microsoft Hyper-V — система аппаратной виртуализации для x64-систем на основе гипервизора
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 856
Стаж: 5 лет 8 месяцев
Откуда: Вологодская область
Поблагодарили: 37 раз
Контактная информация:

Hyper-V Windows Server 2008 RUS

Сообщение Артём Мамзиков »

В продолжение темы Hyper-V от 2012 RUS
Была задача сделать мониторинг Hyper-V на Server 2008, больше интересовало нагрузка жесткого проца памяти и сети.

В целом на самом сервере был заббикс агент и виртуалках так же были заббикс агенты т.е. в целом было видно состояние сервера снаружи и изнутри виртуалок.

Были загружены шаблоны с заббикс шары выполнен их импорт и далее их адаптация под сервер 2008.

Сразу скажу что на 2008 только начиналось внедрение Hyper-V и часть функций отсутствовала в сравнении с 2012.
На 2008 нет: репликаций и кластеров, так же отсутствует модуль в powershell Module-PSHyperv команда Get-VM
Так же в шаблонах не заработал ключ perf_counter на rus windows нужно было указать perf_counter_en так как название было en

Пример:
Логический диск\Среднее время чтения с диска
\Logical Disk(*)\Avg. Disk sec/Read
root\CIMV2 Win32_PerfFormattedData_PerfDisk_LogicalDisk
AvgDisksecPerRead Среднее время чтения с диска - это время в секундах, затрачиваемое в среднем на одну операцию чтения данных с диска.
Элемент заббикс
perf_counter_en[\Logical Disk(*)\Avg. Disk sec/Read]
perf_counter_en[\236(*)\208]
perf_counter[\Логический диск(*)\Среднее время чтения с диска (с)]
wmi.get[root\cimv2, select AvgDisksecPerRead FROM Win32_PerfFormattedData_PerfDisk_LogicalDisk WHERE Name='_Total']

Из всего шаблона в начале заработало минимум элементов данных ну и далее была переделка изменения чтоб хоть как то его заставить работать.
Вкратце кому лень читать ставим модуль Module-PSHyperv в PowerShell (версию рекомендуют не ниже 3.0) Пример установки Модуль PowerShell можно модуль не ставить просто не будет работать часть элементов

Далее скачиваем шаблон и скрипт (скрипт уже изменен под модуль 2008 сервера)
Hyper-V для Windows Server 2008.zip
Hyper-V для Windows Server 2008.zip
(58.09 КБ) 58 скачиваний

Для Windows Server 2008 R2
Установить Net Framework 2 , 4.2
Обновить агента обновления
Ставим обновление Win7AndW2K8R2-KB3191566-x64
Получаем полсе перезагрузки powershell версияю 5.1 (выполнить команду host для просмотра версии)

Import-Module HyperV http://pshyperv.codeplex.com/releases
Вариант импорта модуля %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -noexit -command import-module Hyperv
Проверка C:\Windows\System32\WindowsPowerShell\v1.0\Modules должен быть модуль Hyperv
Команды проверки
Показать
UserParameter=<ключ>,<команда>
UserParameter=ключ[*],команда $1

В элемент данных пишем
ключ[1переменная,2переменная,3переменная,и тд]

Что было для разных шаблонов и скриптов
UserParameter=replica.state,powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\Replica.ps1" $1
UserParameter=hyperv.host[*],powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\hyperv_host.ps1" -ActionType "$1" -Key "$2" -Value "$3"
UserParameter=hyperv_replica_discover,powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\hyperv_replica_discover.ps1"
UserParameter=hyperv_replica[*],powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\hyperv_replica.ps1" $1 $2
UserParameter=windowscsvfs.discovery[*],powershell -NoProfile -ExecutionPolicy Bypass -File C:\zabbix\Scripts\win_clustersv.ps1 $1
UserParameter=ms.hyperv[*],powershell -NoProfile -NoLogo -File "C:\Zabbix\Scripts\zbx-hyperv.ps1" $1

-NoProfile Не загружает профиль PowerShell
-NoLogo Скрывает баннер авторских прав при запуске программы
-ExecutionPolicy Задает политику выполнения по умолчанию для текущего сеанса и сохраняет ее в переменной среде
Bypass - разрешён запуск любых PS файлов (предупреждения не выводятся) используется для автоматического запуска PS скриптов
-File является путем к файлу, сценарий выполняется в локальной области ("с последовательной точкой"), чтобы функции и переменные, создаваемые сценарием, были доступны в текущем сеансе.
Введите путь к файлу сценария и любые параметры.
File должен быть последним параметром в команде.
Все значения, введенные после параметра File , обрабатываются как путь к файлу скрипта и параметры, передаваемые этому скрипту


Прием входных переменных
1. Самый простой встроенную переменную $args
$args[0] $args[1] и т.д. аргументы должны вводиться ровно в том порядке, в каком они указаны в сценарии
.\service.ps1 spooler SRV1

2. Более эффективным
Param (
[string]$service,
[string]$computer
)
Get-Service -ServiceName $service -ComputerName $computer
.\service.ps1 -Service spooler -Computer SRV1
.\service.ps1 -Serv spooler -Comp SRV1
Имена можно и совсем опустить, хотя это и не очень правильно, примет значения параметров в том порядке, в каком они указаны в команде
\service.ps1 spooler SRV1

3. Более сложный способ передачи параметров (обязательные, указывать для каждого позицию и многое другое)
как обязательные для заполнения (Mandatory=$true) и для каждого задана своя позиция (оба параметра обязательно должны быть указаны и должны идти строго в определенном порядке)
ограничение в 3 символа (ValidateLength(1,3):
Position – Позиция переменной при вызове функции;
Пример
CmdletBinding()]

Param (
[Parameter (Mandatory=$true)]
[string]$service,

[Parameter (Mandatory=$true)]
[ValidateLength(1,3)]
[string]$computer
)

Get-Service -ServiceName $service -ComputerName $computer
Команда пример
.\service.ps1 -Service spooler -Computer SRV1

Помощь help about_functions_advanced_parameters



обычный элемент replica.state
Запрос тест
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\1\Replica.ps1"


hyperv.host[*]
обычный элемент hyperv.host[get,host_stat,all]
Обнаружение
hyperv.host[discover,vsw]
hyperv.host[discover,vm]
hyperv.host[discover,va]
hyperv.host[discover,vm_na]
hyperv.host[discover,vm_sd]
Запрос тест
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\1\hyperv_host.ps1" -ActionType "get" -Key "host_stat" -Value "all"
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\1\hyperv_host.ps1" -ActionType "discover" -Key "vsw" -Value ""
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\1\hyperv_host.ps1" -ActionType "discover" -Key "vm" -Value ""


Обнаружение
hyperv_replica_discover
Запрос тест
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\1\hyperv_replica_discover.ps1"


Прототипы элементов
hyperv_replica[*]
Запрос тест
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\1\hyperv_replica.ps1" $1 $2

hyperv_replica[health,{#SRVNAME}]
hyperv_replica[lastsync,{#SRVNAME}]


windowscsvfs.discovery[*]
Обнаружение
windowscsvfs.discovery[name]
windowscsvfs.discovery[path]
Запрос тест
powershell -NoProfile -ExecutionPolicy Bypass -File C:\zabbix\Scripts\1\win_clustersv.ps1 name
powershell -NoProfile -ExecutionPolicy Bypass -File C:\zabbix\Scripts\1\win_clustersv.ps1 path



ms.hyperv[*]
1 обычный элемент ms.hyperv[full]
Обнаружение
ms.hyperv[lld]
Запрос тест
powershell -NoProfile -NoLogo -File "C:\Zabbix\Scripts\1\zbx-hyperv.ps1 lld
powershell -NoProfile -NoLogo -File "C:\Zabbix\Scripts\1\zbx-hyperv.ps1 full

Прототипы зависимые элементы данных
ms.hyperv.vm[{#VM.NAME},"CPUUsage"]
ms.hyperv.vm[{#VM.NAME},"IntSvcState"]
ms.hyperv.vm[{#VM.NAME},"IntSvcVer"]
ms.hyperv.vm[{#VM.NAME},"Memory"]
ms.hyperv.vm[{#VM.NAME},"NumaNodes"]
ms.hyperv.vm[{#VM.NAME},"NumaSockets"]
ms.hyperv.vm[{#VM.NAME},"ReplHealth"]
ms.hyperv.vm[{#VM.NAME},"ReplMode"]
ms.hyperv.vm[{#VM.NAME},"ReplState"]
ms.hyperv.vm[{#VM.NAME},"State"]
ms.hyperv.vm[{#VM.NAME},"Uptime"]
{#VM.NAME} - где имя виртуальной машины



Объединяем все в 1 скрипт

Делаем 1 скрипт HyperV.ps1
UserParameter=HyperV[*],powershell -NoProfile -NoLogo -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName "$1" -ActionType "$2" -Key "$3" -Value "$4"

$1 - входной это у нас будут блоки скриптов их имена replica ; hyperv.host ; hyperv_replica_discover ; hyperv_replica ; windowscsvfs ; ms.hyperv

powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName "replica" (нет Get-VMReplication)

powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "get" -Key "host_stat" -Value "all"
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "get" -Key "vm_stat" -Value "Имя виртуальной машины"
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vsw" -Value ""
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vm" -Value ""
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "va" -Value ""
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vm_na" -Value ""
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vm_sd" -Value ""

powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv_replica_discover -ActionType "" -Key "" -Value "" (нет Get-VMReplication)

powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv_replica -ActionType "health" -Key "{#SRVNAME}" -Value "" (нет Get-VMReplication)
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv_replica -ActionType "lastsync" -Key "{#SRVNAME}" -Value "" (нет Get-VMReplication)

powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName windowscsvfs -ActionType "name" -Key "" -Value "" (нет win32_PerfFormattedData_CsvFsPerfProvider_ClusterCSVFileSystem)
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName windowscsvfs -ActionType "path" -Key "" -Value "" (нет Get-ClusterSharedVolume)

powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName ms.hyperv -ActionType "full" -Key "" -Value ""
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName ms.hyperv -ActionType "lld" -Key "" -Value ""
О запросах через wmic.exe и perf_counter
wmic.exe и perf_counter
Показать
Счетчики производительности Windows используя ключ perf_counter[].
Для того чтобы найти цифровые эквиваленты, выполните regedit, а затем найдите HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009



Напримере https://www.vmgu.ru/articles/microsoft- ... thout-scom
Performance Monitor (Системный монитор) команда запуска perfmon но нас интересуют больше запросы через wmi для zabbix
Процессор
Диск
Память
Сеть

Процессор
Для cmd Запрос всей таблицы
wmic.exe /NAMESPACE:\\root\CIMV2 PATH Win32_PerfFormattedData_HvStats_HyperVHypervisorLogicalProcessor

посмотреть суммарную нагрузку на физический процессор которую создают все виртуальные машины и сам гипервизор
Логический процессор низкоуровневой оболочки Hyper-V \ % общего времени работы
\Hyper-V Hypervisor Logical Processor(_Total)\% Total Run Time
root\CIMV2 SELECT * FROM Win32_PerfFormattedData_HvStats_HyperVHypervisorLogicalProcessor WHERE PercentTotalRunTime = 1",,48)
Элементы заббикс
perf_counter_en[\Hyper-V Hypervisor Logical Processor(_Total)\% Total Run Time]
wmi.get[root\cimv2, select PercentTotalRunTime FROM Win32_PerfFormattedData_HvStats_HyperVHypervisorLogicalProcessor WHERE Name='_Total']

определить, процессор какой именно виртуальной машины создает наибольшую нагрузку
Виртуальный процессор низкоуровневой оболочки Hyper-V \ % общего времени работы
\Hyper-V Hypervisor Virtual Processor\% Total Run Time
root\CIMV2 SELECT * FROM Win32_PerfFormattedData_HvStats_HyperVHypervisorVirtualProcessor WHERE PercentTotalRunTime=1",,48)
Элемент заббикс
perf_counter_en[\Hyper-V Hypervisor Virtual Processor(_Total)\% Total Run Time]
wmi.get[root\cimv2, select PercentTotalRunTime FROM Win32_PerfFormattedData_HvStats_HyperVHypervisorVirtualProcessor WHERE Name='_Total']


Диск
Для cmd Запрос всей таблицы
wmic.exe /NAMESPACE:\\root\CIMV2 PATH Win32_PerfFormattedData_PerfDisk_LogicalDisk

Время затраченное системой (гипервизором в целом и виртуальными машинами) на чтение/запись информации с жесткого диска
Значение данных не должно превышать 25мс, иначе будут наблюдаться проблемы с производительностью которые нужно решать

Логический диск\Среднее время чтения с диска
\Logical Disk(*)\Avg. Disk sec/Read
root\CIMV2 Win32_PerfFormattedData_PerfDisk_LogicalDisk
AvgDisksecPerRead Среднее время чтения с диска - это время в секундах, затрачиваемое в среднем на одну операцию чтения данных с диска.
Элемент заббикс
perf_counter_en[\Logical Disk(*)\Avg. Disk sec/Read]
perf_counter_en[\236(*)\208]
perf_counter[\Логический диск(*)\Среднее время чтения с диска (с)]
wmi.get[root\cimv2, select AvgDisksecPerRead FROM Win32_PerfFormattedData_PerfDisk_LogicalDisk WHERE Name='_Total']

Логический диск\Среднее время записи на диск (с)
\Logical Disk(*)\Avg. Disk sec/Write
root\CIMV2 Win32_PerfFormattedData_PerfDisk_LogicalDisk
AvgDisksecPerWrite Среднее время записи на диск - это время в секундах, затрачиваемое в среднем на одну операцию записи данных на диск.
Элемент заббикс
perf_counter_en[\LogicalDisk(*)\Avg. Disk sec/Write]
perf_counter_en[\236(*)\210]
perf_counter[\Логический диск(*)\Среднее время записи на диск (с)]
wmi.get[root\cimv2, select AvgDisksecPerWrite FROM Win32_PerfFormattedData_PerfDisk_LogicalDisk WHERE Name='_Total']


AvgDisksecPerTransfer Среднее время обращения к диску - это время в секундах, затрачиваемое в среднем на один обмен данными с диском.

AvgDiskBytesPerRead Средний размер одного чтения с диска (байт) - это среднее количество байт данных, полученных с диска при выполнении операций чтения.
AvgDiskBytesPerTransfer Средний размер одного обмена с диском (байт) - это среднее количество байт данных, переданных при выполнении операций чтения или записи.
AvgDiskBytesPerWrite Средний размер одной записи на диск (байт) - это среднее количество байт данных, переданных на диск при выполнении операций записи.
AvgDiskQueueLength Средняя длина очереди диска - это среднее общее количество запросов на чтение и на запись, которые были поставлены в очередь для соответствующего диска в течение интервала измерения.
AvgDiskReadQueueLength Средняя длина очереди записи на диск - это среднее количество запросов на запись, которые были поставлены в очередь для соответствующего диска в течение интервала измерения.
AvgDiskWriteQueueLength Средняя длина очереди чтения диска - это среднее количество запросов на чтение, которые были поставлены в очередь для соответствующего диска в течение интервала измерения
Caption Название
CurrentDiskQueueLength Текущая длина очереди диска - это количество невыполненных запросов к диску во время сбора сведений о загруженности. Сюда включаются запросы, обслуживаемые
во время проведения замера. Этот показатель представляет собой конкретное текущее значение, и не является средним значением по некоторому интервалу времени.
Многошпиндельные дисковые устройства могут обрабатывать одновременно несколько запросов, остальные имеющиеся запросы будут ожидать обслуживания.
Этот счетчик может отражать постоянные изменения длины очереди, показывая то большую, то малую ее длину, но если имеется перегрузка дискового устройства,
то вероятно, что значение этого счетчика будет большим постоянно. Время задержки обработки запросов пропорционально длине этой очереди минус количество
шпинделей дисковых устройств. Для хорошей производительности системы среднее значение этого счетчика не должно превышать двух.

Description Описание
DiskBytesPersec Скорость обмена с диском (байт/с) - это скорость, с которой происходит обмен данными с этим диском при выполнении операций чтения или записи.
DiskReadBytesPersec Скорость чтения с диска (байт/с) - это скорость, с которой происходит передача данных с этого диска при выполнении операций чтения.
DiskReadBytesPersec Среднее время чтения с диска (с) - это время в секундах, затрачиваемое в среднем на одну операцию чтения данных с диска
DiskReadsPersec
DiskTransfersPersec Среднее время обращения к диску(с) - это время в секундах, затрачиваемое в среднем на один обмен данными с диском.
DiskWritesPersec Среднее время записи на диск (с) - это время в секундах, затрачиваемое в среднем на одну операцию записи данных на диск.
DiskWriteBytesPersec Скорость записи на диск (байт/с) - это скорость, с которой происходит передача данных на этот диск при выполнении операций записи.
FreeMegabytes Свободно мегабайт - показывает объем незанятого пространства на диске в мегабайтах. Один мегабайт равен 1048576 байтам.
Frequency_Object Периодичность(частота) объекта
Frequency_PerfTime Время увеличения частоты
Frequency_Sys100NS
Name Имя
PercentDiskReadTime % активности диска при чтении - Процент активности диска при чтении - это процент времени, затраченного выбранным дисковым устройством на обработку запросов на чтение данных.
PercentDiskTime % активности диска - Процент активности диска - это процент времени, затраченного выбранным дисковым устройством на обработку запросов на чтение и запись данных.
PercentDiskWriteTime % активности диска при записи - Процент активность диска при записи - это процент времени, затраченного выбранным дисковым устройством на обработку запросов на запись данных.
PercentFreeSpace % свободного места - Процент свободного места - это доля свободного места, имеющегося на логическом диске, по отношению к общему объему выбранного логического диска.
PercentIdleTime Процент времени бездействия - Процент времени бездействия говорит о том, какую часть времени интервала измерения диск бездействовал.
SplitIOPerSec Ращеплений ввода-вывода сек - Счетчик расщеплений ввода-вывода/сек - сообщает о частоте, с которой операции ввода-вывода диска оказываются расщепленными на несколько операций ввода-вывода. Расщепление операций ввода-вывода может происходить либо из-за того, что запрошен слишком большой блок данных, который не может быть передан за одну операцию, либо из-за фрагментации диска.
Timestamp_Object
Timestamp_PerfTime
Timestamp_Sys100NS


Обращений записи на диск/сек - это частота выполнения операций записи на этот диск.
Обращений к диску/сек - это частота выполнения операций чтения и записи на этот диск.
Обращений чтения с диска/сек - это частота выполнения операций чтения с этого диска.

Средний размер одного обмена с диском (байт) - это среднее количество байт данных, переданных при выполнении операций чтения или записи.
Средний размер одного чтения с диска (байт) - это среднее количество байт данных, полученных с диска при выполнении операций чтения.
Средний размер одной записи на диск (байт) - это среднее количество байт данных, переданных на диск при выполнении операций записи.




Память
Для того что бы посмотреть количество страниц памяти записанных/считанных с жесткого диска, для хост и гостевых систем
Если значение больше 500, значит либо недостаточно физической памяти, либо используется «битая» планка памяти
Память\Обмен страниц/с
\Memory\Pages/sec
root\CIMV2 Win32_PerfFormattedData_PerfOS_Memory PagesPersec
Элемент заббикс
perf_counter_en[\Memory\Pages/sec]
perf_counter_en[\4\40]
perf_counter[\Память\Обмен страниц/с]
wmi.get[root\cimv2, select PagesPersec FROM Win32_PerfFormattedData_PerfOS_Memory]


Если же вы используете Dynamic Memory, то вам необходимо пользоваться:
15754 Hyper-V Dynamic Memory Balancer Балансировщик динамической памяти Hyper-V
и
15770 Hyper-V Dynamic Memory VM Виртуальная машина с динамической памятью Hyper-V

root\CIMV2 Win32_PerfRawData_BalancerStats_HyperVDynamicMemoryBalancer
root\CIMV2 Win32_PerfRawData_BalancerStats_HyperVDynamicMemoryVM
Элемент заббикс
wmi.get[root\cimv2, select AvailableMemory FROM Win32_PerfFormattedData_BalancerStats_HyperVDynamicMemoryBalancer]
wmi.get[root\cimv2, select .GuestVisiblePhysicalMemory FROM Win32_PerfFormattedData_BalancerStats_HyperVDynamicMemoryVM WHERE Name='Имя ВМ']

\Memory\Pages/sec Кол-во страниц памяти записанных/считанных с жесткого диска, для хост и гостевых систем
Если значение больше 500, значит либо недостаточно физической памяти, либо используется «битая» планка памяти
Это прерывание возникает, когда искомая страница памяти оказывается выгруженной на диск в данный момент. Однако в этот счетчик попадают и рабочие ситуации, связанные с кэшем и отображенными в память (memory-mapped) файлами. Поэтому по нему нельзя однозначно судить о недостатке памяти.

Совместно рассматривать стоит Memory\Pages Input/sec и \Memory\Page Reads/sec

1. \Memory\Pages/sec
2. \Memory\Page Reads/sec - дополнение к 1 (кол-во чтение с диска страниц секунду, при подкачке)
3. \Memory\Pages Input/sec - 2 и 3 расматриваем совместно (кол-во страниц чтения, прочитанных с диска)
4. \Memory\Cache Faults (учитывает промахи подсистемы кэшировани)
5. \Memory\Transition Faults/sec (скорость, с которой обрабатываются так называемые soft faults — ошибки страниц, без обращения к диску, равно кол-ву таких страниц)
6. \Memory\Available MBytes (кол-во доступной процессам Оперативной (физической памяти), ориентировочно должно быть выше 5 000 КВ)

1, 2, 3 - постоянно находятся на высоком уровне, а 4 - а Низком (ОС активно работает с файлом подкачки, это говорит о недостатке памяти)

4 - Высок ( активная работа с большими файлами, это не должно длиться долго)

6. Уменьшение значений свободной Оперативной памяти, сопровождаемое ростом \Memory\Pages/sec и \Memory\Page Reads/sec, может свидетельствовать о недостатке памяти (Постоянное и равномерное уменьшение счетчика указывает на утечку памяти в одном из приложений)

LogicalDisk\Avg. Disk Queue Length , PhysicalDisk\Avg. Disk Queue Length - следят за количеством запросов, стоящих в очереди к диску.
Считается, что если очередь к диску длительное время включает более двух запросов, это может быть индикатором проблемы.
1400 Avg. Disk Queue Length Средняя длина очереди диска

{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Pages/sec].min(5)}>1500 or
{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Pages/sec].min(3m)}>{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Cache Faults/sec].min(3m)} and
{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Page Reads/sec].min(3)}>{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Cache Faults/sec].min(3m)} and
{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Pages Input/sec].min(3)}>{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Cache Faults/sec].min(3m)} and
{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Cache Faults/sec].min(5m)}<190 or
{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Cache Faults/sec].min(10m)}>1000


+Сеть
root\CIMV2 Win32_PerfFormattedData_Tcpip_NetworkInterface
root\CIMV2 Win32_PerfRawData_Tcpip_NetworkInterface
Для определения числа потоков ждущих сетевого адаптера
Показания всегда должно быть 0, если же оно равно 1 или 2, значит сеть – узкое место в вашей системе.
\Сетевой интерфейс\Длина очереди вывода
\Network Interface(*)\Output Queue Length
\510(*)\544
OutputQueueLength
Пример Ключа заббикс
perf_counter_en[\Network Interface(*)\Output Queue Length]
wmi.get[root\cimv2,"select OutputQueueLength from Win32_PerfFormattedData_Tcpip_NetworkInterface where Name='Intel[R] I350 Gigabit Network Connection'"]
wmi.get[root\cimv2,"select OutputQueueLength from Win32_PerfFormattedData_Tcpip_NetworkInterface where Name='Intel[R] I350 Gigabit Network Connection _2'"]


Общая нагрузка в Байт/сек для интерфейса
\Сетевой интерфейс\Всего байт/с
\Network Interface(*)\Bytes Total/sec
\510(*)\388
BytesTotalPersec
Пример ключа заббикс
perf_counter_en[\Network Interface(*)\Bytes Total/sec]
wmi.get[root\cimv2,"select BytesTotalPersec from Win32_PerfFormattedData_Tcpip_NetworkInterface where Name='Intel[R] I350 Gigabit Network Connection'"]
wmi.get[root\cimv2,"select BytesTotalPersec from Win32_PerfFormattedData_Tcpip_NetworkInterface where Name='Intel[R] I350 Gigabit Network Connection _2'"]


Для того что бы определить какой именно виртуальный сетевой адаптер (какой именно виртуально машины) создает нагрузку
\Виртуальный сетевой адаптер Hyper-V\Байт/сек
\Hyper-V Virtual Network Adapter(*)\Bytes/sec (для каждой виртуальной машины)
\15704(*)\15708
root\CIMV2 Win32_PerfFormattedData_NvspNicStats_HyperVVirtualNetworkAdapter
root\CIMV2 Win32_PerfRawData_NvspNicStats_HyperVVirtualNetworkAdapter
значение берем из BytesPersec ,а имя смотрим в Name
Пример Элемент заббикс
wmi.get[root\cimv2,select BytesSentPersec from Win32_PerfFormattedData_NvspNicStats_HyperVVirtualNetworkAdapter where Name='PowerDNS_Сетевой адаптер_7b7d1101-ba12-48c8-b1e6-b1286d1843b1--68c7afc6-e184-48c4-a053-c0b0d86ff51a']

Для cmd Запрос всей таблицы
wmic.exe /NAMESPACE:\\root\CIMV2 PATH Win32_PerfRawData_NvspNicStats_HyperVVirtualNetworkAdapter



Еще некоторые пути
root\CIMV2 Win32_PerfFormattedData_EthernetPerfProvider_HyperVLegacyNetworkAdapter
+ root\CIMV2 Win32_PerfFormattedData_BalancerStats_HyperVDynamicMemoryBalancer
root\CIMV2 Win32_PerfFormattedData_GmoPerfProvider_HyperVVMSaveSnapshotandRestore
+ root\CIMV2 Win32_PerfFormattedData_HvStats_HyperVHypervisor
+ root\CIMV2 Win32_PerfFormattedData_HvStats_HyperVHypervisorLogicalProcessor
+ root\CIMV2 Win32_PerfFormattedData_HvStats_HyperVHypervisorPartition
root\CIMV2 Win32_PerfFormattedData_HvStats_HyperVHypervisorRootPartition
+ root\CIMV2 Win32_PerfFormattedData_HvStats_HyperVHypervisorRootVirtualProcessor
+ root\CIMV2 Win32_PerfFormattedData_HvStats_HyperVHypervisorVirtualProcessor
root\CIMV2 Win32_PerfFormattedData_IdePerfProvider_HyperVVirtualIDEController
root\CIMV2 Win32_PerfFormattedData_NvspNicStats_HyperVVirtualNetworkAdapter
root\CIMV2 Win32_PerfFormattedData_NvspPortStats_HyperVVirtualSwitchPort
+- root\CIMV2 Win32_PerfFormattedData_NvspSwitchStats_HyperVVirtualSwitch
root\CIMV2 Win32_PerfFormattedData_RemotePerfProvider_HyperVVMRemoting
root\CIMV2 Win32_PerfFormattedData_StorageStats_HyperVVirtualStorageDevice
root\CIMV2 Win32_PerfFormattedData_VidPerfProvider_HyperVVMVidNumaNode
+ root\CIMV2 Win32_PerfFormattedData_VidPerfProvider_HyperVVMVidPartition
root\CIMV2 Win32_PerfFormattedData_VmbusStats_HyperVVirtualMachineBus
+ root\CIMV2 Win32_PerfFormattedData_VmmsVirtualMachineStats_HyperVVirtualMachineHealthSummary
root\CIMV2 Win32_PerfFormattedData_VmmsVirtualMachineStats_HyperVVirtualMachineSummary
root\CIMV2 Win32_PerfFormattedData_VmTaskManagerStats_HyperVTaskManagerDetail
root\CIMV2 Win32_PerfRawData_BalancerStats_HyperVDynamicMemoryBalancer
root\CIMV2 Win32_PerfRawData_BalancerStats_HyperVDynamicMemoryVM
root\CIMV2 Win32_PerfRawData_EthernetPerfProvider_HyperVLegacyNetworkAdapter
root\CIMV2 Win32_PerfRawData_GmoPerfProvider_HyperVVMSaveSnapshotandRestore
root\CIMV2 Win32_PerfRawData_StorageStats_HyperVVirtualStorageDevice
root\CIMV2 Win32_PerfRawData_HvStats_HyperVHypervisor
root\CIMV2 Win32_PerfRawData_HvStats_HyperVHypervisorLogicalProcessor
root\CIMV2 Win32_PerfRawData_HvStats_HyperVHypervisorPartition
root\CIMV2 Win32_PerfRawData_HvStats_HyperVHypervisorRootPartition
root\CIMV2 Win32_PerfRawData_HvStats_HyperVHypervisorRootVirtualProcessor
root\CIMV2 Win32_PerfRawData_HvStats_HyperVHypervisorVirtualProcessor
root\CIMV2 Win32_PerfRawData_IdePerfProvider_HyperVVirtualIDEController
root\CIMV2 Win32_PerfRawData_VidPerfProvider_HyperVVMVidNumaNode
root\CIMV2 Win32_PerfRawData_VidPerfProvider_HyperVVMVidPartition
root\CIMV2 Win32_PerfRawData_VmbusStats_HyperVVirtualMachineBus
root\CIMV2 Win32_PerfRawData_VmmsVirtualMachineStats_HyperVVirtualMachineHealthSummary
root\CIMV2 Win32_PerfRawData_VmmsVirtualMachineStats_HyperVVirtualMachineSummary
root\CIMV2 Win32_PerfRawData_VmTaskManagerStats_HyperVTaskManagerDetail

\root\virtualization


Обнаружение сетевого адаптера Hyper-V
-нету Win32_PerfFormattedData_Tcpip_NetworkAdapter
есть Win32_PerfFormattedData_Tcpip_NetworkInterface

Обнаружение виртуальной машины Hyper-V
+ Win32_PerfFormattedData_BalancerStats_HyperVDynamicMemoryVM
есть Win32_PerfFormattedData_BalancerStats_HyperVDynamicMemoryBalancer instance


Обнаружение сетевого адаптера виртуальной машины Hyper-V
+ Win32_PerfFormattedData_NvspNicStats_HyperVVirtualNetworkAdapter


Обнаружение устройства хранения виртуальной машины Hyper-V
-нету Win32_PerfFormattedData_Counters_HyperVVirtualStorageDevice
есть Win32_PerfFormattedData_StorageStats_HyperVVirtualStorageDevice
есть Win32_PerfRawData_StorageStats_HyperVVirtualStorageDevice

Обнаружение виртуального коммутатора Hyper-V
+ Win32_PerfFormattedData_NvspSwitchStats_HyperVVirtualSwitch

+Win32_PerfRawData_NvspSwitchStats_HyperVVirtualSwitch

- win32_networkadapter
+Win32_NetworkAdapter

+Win32_PnPEntity

+Win32_PerfRawData_NvspNicStats_HyperVVirtualNetworkAdapter

-нету win32_PerfFormattedData_CsvFsPerfProvider_ClusterCSVFileSystem


Выгрузка списком
Get-WmiObject -Namespace root\CIMV2 -List >> spisok.log

Начиная с Windows Server 2008 и вплоть до Windows Server 2008 R2 пространство имен, используемое для управления гипервизором, называлось "root\virtualization" (он же V1)
Windows Server 2012 представила рефакторизованное пространство имен "root\virtualization\v2" (добавить классы utils), предлагая также версию V1 для обратной совместимости с существующими инструментами
2012 R2 кращает поддержку пространства имен V1

Get-VM команда выполняется через модуль повершела в модуле површела запрос идет
Get-WmiObject -computername $Server -NameSpace $HyperVNamespace -Query $WQL | Add-Member -MemberType ALIASPROPERTY -Name "VMElementName" -Value "ElementName" -PassThru

Запрос в WMI идет в \root\virtualization класс Msvm_ComputerSystem например имена виртуалок ElementName


get-vm
Host VMElementName State Up-Time (mS) Owner

Новый вид
Name State CPUUsage(%) MemoryAsigned(M) Uptime Status Version


Счетчики производительности Windows
perf_counter
perf_counter[счетчик,<период>]
perf_counter_en[счетчик,<период>]
perf_instance.discovery[объект]
perf_instance_en.discovery[объект]
regedit, а затем найдите HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009 Counter EN - язык
regedit, а затем найдите HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\019 Counter RU - язык
Путь на конкретные службы HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\%servicename%\Performance
Чтобы получить полный список счетчиков производительности для мониторинга, вы можете выполнить: typeperf -qx

Пример
RU
2 Система
18 Байт записи файлов/с
EN
2 System
18 File Write Bytes/sec
Запрос
zabbix_get -s 192.168.xxx.xxx -k 'perf_counter[\2\18]' ответ45770939.055905
zabbix_get -s 192.168.xxx.xxx -k 'perf_counter_en[\2\18]' ответ 41674909.435581
zabbix_get -s 192.168.xxx.xxx -k 'perf_counter[\Система\Байт записи файлов/с]' ответ 74881757.832684
zabbix_get -s 192.168.xxx.xxx -k 'perf_counter_en[\System\File Write Bytes/sec]' ответ 40644644.840874

zabbix_get -s 192.168.xxx.xxx -k 'perf_counter_en[\Hyper-V Hypervisor Logical Processor(Hv LP 0)\% Total Run Time]'
ответ 29.749775

16012 Раздел низкоуровневой оболочки Hyper-V
16012 Hyper-V Hypervisor Partition
Запрос элемента
perf_counter[\Раздел низкоуровневой оболочки Hyper-V]
perf_counter_en[\Hyper-V Hypervisor Partition]
perf_counter[\16012]
или
15306 Hyper-V Hypervisor
15310 Partitions
perf_counter_en[\Hyper-V Hypervisor\Partitions]
perf_counter_en[\15306\15310]

Выборка чисто по слову Hyper без подразделов
RU
15654 Порт виртуального коммутатора Hyper-V
15318 Логический процессор низкоуровневой оболочки Hyper-V
15306 Низкоуровневая оболочка Hyper-V
15370 Корневой раздел низкоуровневой оболочки Hyper-V
15396 Корневой виртуальный процессор низкоуровневой оболочки Hyper-V
16012 Раздел низкоуровневой оболочки Hyper-V
16038 Виртуальный процессор низкоуровневой оболочки Hyper-V
16382 Удаленное взаимодействие Hyper-V VM
16402 Диспетчер памяти рабочего процесса виртуальной машины Hyper-V
15704 Виртуальный сетевой адаптер Hyper-V
16366 Виртуальный IDE-контроллер Hyper-V
16352 Устаревший сетевой адаптер Hyper-V
15792 Шина VMBus Hyper-V
15770 Виртуальная машина с динамической памятью Hyper-V
15754 Балансировщик динамической памяти Hyper-V
16388 Восстановление, снимок и сохранение виртуальной машины Hyper-V
15852 Сведения о диспетчере задач Hyper-V
15998 Виртуальное запоминающее устройство Hyper-V
15592 Виртуальный коммутатор Hyper-V
15584 Узел NUMA VID виртуальной машины Hyper-V
15574 Драйвер Hyper-V VM Vid
16216 Раздел Hyper-V VM Vid
16338 Очередь сообщений VID виртуальной машины Hyper-V
16376 Hyper-V VM IO APIC
15846 Сводные данные о работоспособности виртуальных машинах Hyper-V
15800 Сводные данные о виртуальных машинах Hyper-V

EN
15654 Hyper-V Virtual Switch Port
15318 Hyper-V Hypervisor Logical Processor
15324 Hypervisor Run Time
15362 % Hypervisor Run Time
15306 Hyper-V Hypervisor
15370 Hyper-V Hypervisor Root Partition
15396 Hyper-V Hypervisor Root Virtual Processor
15400 Hypervisor Run Time
15402 Hypercalls/sec
15404 Hypercalls Cost
15512 GPA Space Hypercalls/sec
15514 Logical Processor Hypercalls/sec
15516 Long Spin Wait Hypercalls/sec
15518 Other Hypercalls/sec
15520 Synthetic Interrupt Hypercalls/sec
15522 Virtual Interrupt Hypercalls/sec
15524 Virtual MMU Hypercalls/sec
15526 Virtual Processor Hypercalls/sec
15532 % Hypervisor Run Time
15546 Hypercalls Base
16012 Hyper-V Hypervisor Partition
16038 Hyper-V Hypervisor Virtual Processor
16042 Hypervisor Run Time
16044 Hypercalls/sec
16046 Hypercalls Cost
16154 GPA Space Hypercalls/sec
16156 Logical Processor Hypercalls/sec
16158 Long Spin Wait Hypercalls/sec
16160 Other Hypercalls/sec
16162 Synthetic Interrupt Hypercalls/sec
16164 Virtual Interrupt Hypercalls/sec
16166 Virtual MMU Hypercalls/sec
16168 Virtual Processor Hypercalls/sec
16174 % Hypervisor Run Time
16188 Hypercalls Base
16382 Hyper-V VM Remoting
16402 Hyper-V VM worker Process Memory Manager
15704 Hyper-V Virtual Network Adapter
16366 Hyper-V Virtual IDE Controller
16352 Hyper-V Legacy Network Adapter
15792 Hyper-V Virtual Machine Bus
15770 Hyper-V Dynamic Memory VM
15754 Hyper-V Dynamic Memory Balancer
16388 Hyper-V VM Save, Snapshot, and Restore
15852 Hyper-V Task Manager Detail
15998 Hyper-V Virtual Storage Device
15592 Hyper-V Virtual Switch
15584 Hyper-V VM Vid Numa Node
15574 Hyper-V VM Vid Driver
16216 Hyper-V VM Vid Partition
16338 Hyper-V VM Vid Message Queue
16376 Hyper-V VM IO APIC
15846 Hyper-V Virtual Machine Health Summary
15800 Hyper-V Virtual Machine Summary
Сравнение таблиц и ответов на команды в модуль повершела на windows 10
Сравнение данных Windows 10 и 2008
Показать
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName "replica"

C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "get" -Key "host_stat" -Value "all"
{
"VMsMemoryMinimum": 536870912,
"VMsMemoryMaximum": 1099511627776,
"VMsMemoryDemand": 0,
"VMsMemoryAssigned": 0,
"VMsStateOff": 1,
"VMsStateRunning": 0,
"VMsStateSaved": 0,
"VMsStatePaused": 0,
"VMsStateOther": 0
}

C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vsw" -Value ""
{
"data": [
{
"{#VIRTUAL_SWITCH_NAME}": "Default Switch"
}
]
}

C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" - Key "vm" -Value ""

C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "va" -Value ""
{
"data": [
{
"{#HYPERV_NETWORKADAPTER_NAME}": "vEthernet (Default Switch)",
"{#HYPERV_NETWORKADAPTER_PERF}": "Hyper-V Virtual Ethernet Adapter",
"{#HYPERV_NETWORKADAPTER_INTERFACEINDEX}": 24
}
]
}

C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vm_na" -Value ""
{
"data": [

]
}

C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vm_sd" -Value ""
{
"data": [

]
}

C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv_replica_discover -ActionType "" -Key "" -Value ""
{
"data":[
]
}

C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv_replica -ActionType "health"
3

C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv_replica -ActionType "lastsync"
ошибка с датой, так как нет репликаций и соответсвено ее даты


C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName windowscsvfs -ActionType "name" -Key "" -Value ""
Нет кластеров
Get-WmiObject : Invalid class "win32_PerfFormattedData_CsvFsPerfProvider_ClusterCSVFileSystem"
At C:\zabbix\Scripts\HyperV.ps1:360 char:11


C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName windowscsvfs -ActionType "path" -Key "" -Value ""
Нет кластеров
Get-ClusterSharedVolume : The term 'Get-ClusterSharedVolume' is not
At C:\zabbix\Scripts\HyperV.ps1:330 char:12


C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName ms.hyperv -ActionType "full" -Key "" -Value ""
{"Test":{"NumaSockets":1,"ReplMode":0,"CritErrAction":1,"IntSvcState":2,"ReplHealth":0,"State":3,"ReplState":0,"NumaNodes":1,"CPUUsage":0,"IntSvcVer":"0.0","StartAction":3,"IsClustered":0,"Uptime":0,"Memory":0,"StopAction":3}}

C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName ms.hyperv -ActionType "lld" -Key "" -Value ""
{"data":[{"{#VM.NAME}":"Test","{#VM.VERSION}":"9.0","{#VM.CLUSTERED}":0,"{#VM.HOST}":"COMPTV","{#VM.GEN}":1,"{#VM.ISREPLICA}":0,"{#VM.NOTES}":""}]}
Ответ из скрипта и команд
Показать
Общий скрипт
Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName "replica"
Get-VMReplication : The term 'Get-VMReplication' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
lling of the name, or if a path was included, verify that the path is correct and try again.
At C:\zabbix\Scripts\HyperV.ps1:21 char:12
+ $replica = Get-VMReplication | select Health
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Get-VMReplication:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException


Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "get" -Key "host_stat" -Value "all"
Ответ
{
"VMsMemoryMinimum": 0,
"VMsMemoryMaximum": 0,
"VMsMemoryDemand": 0,
"VMsMemoryAssigned": 0,
"VMsStateOff": 0,
"VMsStateRunning": 0,
"VMsStateSaved": 0,
"VMsStatePaused": 0,
"VMsStateOther": 6
}

Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vsw" -Value ""
Ответ
{
"data": [
{
"{#VIRTUAL_SWITCH_NAME}": "???????°N? ????N€N‚N??°?»N????°N? N??µN‚N?"
}
]
}

Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" - Key "vm" -Value ""
Ответ
{
"data": [

]
}

Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "va" -Value ""
Ответ
{
"data": [

]
}


Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vm_na" -Value ""
Ответ
{
"data": [

]
}

Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vm_sd" -Value ""
Ответ
Get-WmiObject : Invalid class "Win32_PerfFormattedData_Counters_HyperVVirtualStorageDevice"
At C:\zabbix\Scripts\HyperV.ps1:149 char:28
+ ... kadapters = Get-WmiObject Win32_PerfFormattedData_Counters_HyperVVirt ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidType: (:) [Get-WmiObject], ManagementException
+ FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

{
"data": [

]
}



Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv_replica_discover -ActionType"" -Key "" -Value ""
Ответ
Get-VMReplication : The term 'Get-VMReplication' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spe
lling of the name, or if a path was included, verify that the path is correct and try again.
At C:\zabbix\Scripts\HyperV.ps1:259 char:12
+ $LDDSRV = (Get-VMReplication).Name
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Get-VMReplication:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

{
"data":[
]
}


Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName windowscsvfs -ActionType "name" -Key "" -Value ""
Ответ (Нет кластеров)
Get-WmiObject : Invalid class "win32_PerfFormattedData_CsvFsPerfProvider_ClusterCSVFileSystem"
At C:\zabbix\Scripts\HyperV.ps1:360 char:11
+ $LDDCSV = Get-WmiObject win32_PerfFormattedData_CsvFsPerfProvider_Clu ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidType: (:) [Get-WmiObject], ManagementException
+ FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

{
"data":[
]
}

Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName windowscsvfs -ActionType "path" -Key "" -Value ""
Ответ (Нет кластеров)
Get-ClusterSharedVolume : The term 'Get-ClusterSharedVolume' is not recognized as the name of a cmdlet, function, script file, or operable program. C
heck the spelling of the name, or if a path was included, verify that the path is correct and try again.
At C:\zabbix\Scripts\HyperV.ps1:330 char:12
+ $LDDCSV = (Get-ClusterSharedVolume).Name
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Get-ClusterSharedVolume:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

{
"data":[
]
}

Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName ms.hyperv -ActionType "full" -Key "" -Value ""
отдельные команды проверки
Get-VM -ComputerName Server1 | Where-Object {$_.State -eq 'Running'}

Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName ms.hyperv -ActionType "lld" -Key "" -Value ""
Ответ
{"data":[{"{#VM.NAME}":null,"{#VM.VERSION}":null,"{#VM.CLUSTERED}":0,"{#VM.HOST}":null,"{#VM.GEN}":null,"{#VM.ISREPLICA}":0,"{#VM.NOTES}":null},{"{#VM
.NAME}":null,"{#VM.VERSION}":null,"{#VM.CLUSTERED}":0,"{#VM.HOST}":null,"{#VM.GEN}":null,"{#VM.ISREPLICA}":0,"{#VM.NOTES}":null},{"{#VM.NAME}":null,"{
#VM.VERSION}":null,"{#VM.CLUSTERED}":0,"{#VM.HOST}":null,"{#VM.GEN}":null,"{#VM.ISREPLICA}":0,"{#VM.NOTES}":null},{"{#VM.NAME}":null,"{#VM.VERSION}":n
ull,"{#VM.CLUSTERED}":0,"{#VM.HOST}":null,"{#VM.GEN}":null,"{#VM.ISREPLICA}":0,"{#VM.NOTES}":null},{"{#VM.NAME}":null,"{#VM.VERSION}":null,"{#VM.CLUST
ERED}":0,"{#VM.HOST}":null,"{#VM.GEN}":null,"{#VM.ISREPLICA}":0,"{#VM.NOTES}":null},{"{#VM.NAME}":null,"{#VM.VERSION}":null,"{#VM.CLUSTERED}":0,"{#VM.
HOST}":null,"{#VM.GEN}":null,"{#VM.ISREPLICA}":0,"{#VM.NOTES}":null}]}

Отдельные команды проверки
Запрос
Get-VM | Select-Object @{Name = "{#VM.NAME}"; e={$_.VMName}}

{#VM.NAME}
----------

Запрос
Get-VM | Select-Object @{Name = "{#VM.NAME}"; e={$_.VMElementName}}

{#VM.NAME}
----------
GLPI-OCS
CERTSDB
WEBSERV-BTRX
PowerDNS
DrWeb
test

Запрос
Get-VM

Host VMElementName State Up-Time (m

----- ------------- ----- ------------
FILESERVER1 GLPI-OCS Running 484249023
FILESERVER1 CERTSDB Running 484224492
FILESERVER1 WEBSERV-BTRX Stopped 0
FILESERVER1 PowerDNS Running 484209450
FILESERVER1 DrWeb Running 484204405
FILESERVER1 test Stopped 0
количество слов: 3756
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 856
Стаж: 5 лет 8 месяцев
Откуда: Вологодская область
Поблагодарили: 37 раз
Контактная информация:

Hyper-V Windows Server 2008 RUS

Сообщение Артём Мамзиков »

Скачать
Модуль PSHyperv.zip
Модуль PSHyperv.zip
(6.32 МБ) 53 скачивания
Команды модуля Module-PSHyperv
Get-VM "Имя машины"
Get-VM Возвращает объекты WMI, представляющие Виртуальные машины Hyper-V.
Get-VMSummary Возвращает сводную информацию о запущенных виртуальных машинах.
Get-VMThumbnail Создает JPG - изображение работающей виртуальной машины.
Get-VMBuildScript Выводит скрипт, который будет строить виртуальную машину.
Get-VMSettingData Получает объект(ы) SettingData для одной или нескольких виртуальных машин.
Get-VMMemory Получает ресурсы памяти, выделенные одной или нескольким виртуальным машинам.
Get-VMCPUCount Получает ресурсы процессора, выделенные одной или нескольким виртуальным машинам.
Get-VMProcessor Получает виртуальные процессорные устройства, используемые на одной или нескольких запущенных виртуальных машинах.
Get-VM Serial Port Получает виртуальные последовательные порты на одной или нескольких виртуальных машинах.
Get-VMRemoteFxContoller Получает удаленный FX-контроллер(ы) на одной или нескольких виртуальных машинах
Get-VMFloppyDisk Возвращает дискеты, подключенные к одной или нескольким виртуальным машинам.
Get-VMDiskController Возвращает контроллеры дисков, подключенные к виртуальной машине.
Get-VMDriveByController Возвращает диски, подключенные к данному контроллеру дисков.
Get-VMDiskByDrive Возвращает диск, установленный в данном приводе
Get-VMDisk Возвращает все диски, подключенные к одной или нескольким виртуальным машинам.
Get-VHDDefaultPath Возвращает путь по умолчанию для файлов виртуального жесткого диска (VHD) .
Get-VHD Получает файлы VHD из указанной папки на сервере.
Get-VHDInfo Получает подробную информацию об одном или нескольких VHD-файлах.
Get-VHDMountPoint Возвращает точку монтирования для VHD-файла, если он смонтирован.
Get-VMIntegrationComponent Получает данные компонента интеграции для одной или нескольких виртуальных машин.
Get-VMKVP Возвращает пары Ключ/значение для одной или нескольких виртуальных машин.
Get-VmNic Возвращает информацию о сетевой интерфейсной карте(картах) виртуальной машины.
Get-VMNicPort Возвращает объект порта коммутатора для сетевой интерфейсной карты.
Get-VMNicSwitch Возвращает коммутатор, подключенный к сетевой интерфейсной плате.
Get-VMNicVlan Получает идентификатор VLAN, связанный с сетевой интерфейсной платой.
Get-VMByMACaddress Обнаруживает, какая виртуальная машина владеет определенным MAC-адресом,
Get-VMSwitch Возвращает один или несколько объектов коммутатора виртуальной сети.
Get-VMHost Возвращает список кластерных сетей, используемых для динамической миграции виртуальных машин.
Get-VMSnapshot Возвращает моментальные снимки для одной или нескольких виртуальных машин.
Get-VMSnapshotTree Отображает все моментальные снимки виртуальной машины в виде дерева.
Get-VMClustergroup Возвращает группу кластеров, членом которой является виртуальная машина.
Get-VMLiveMigrationNetwork Возвращает список кластерных сетей, используемых для динамической миграции виртуальных машин.
Get-FirstAvailableDriveLetter Возвращает символ, указывающий первую доступную букву диска.
Get-ZIPContent Возвращает информацию о содержимом a .Zip-файл.

Тесты запросов
Показать
Запрос
Get-VM
Ответ
Host VMElementName State Up-Time (mS) Owner
----- ------------- ----- ------------ -----
FILESERVER1 PowerDNS Running 587199181
FILESERVER1 test Stopped 0


Запрос
Get-VMSummary
Ответ
CPULoadHistory : {0, 0, 0, 0...}
CreationTime : 20200610181006.291864-000
Jobs :
GuestOS :
CPUCount : 1
Heartbeat : OK
UptimeFormatted : 07:07:59
IpAddress :
EnabledState : Running
MemoryUsage : 6000
Uptime : 587279458
CPULoad : 0
Host : FILESERVER1
Name : 0D751DCA-7FA6-4839-A193-6E4D19F95D64
Snapshots : 0
FQDN :
VMElementName : GLPI-OCS
Notes :
и тд


Запрос
Get-VMMemory
Ответ
VMElmentName Dynamic Enabled Virtual Quantity Limit Reservation Weight Buffer
------------ --------------- ---------------- ----- ----------- ------ ------
test False 3000 3000 3000 5000 20


Запрос
Get-VMCPUCount
Ответ
VMElmentName Quantity Limit Reservation Weight Cores/Socket SocketCount
------------ -------- ----- ----------- ------ ------------ -----------
test 1 100000 0 100 10 1


Запрос
Get-VMProcessor
Ответ
VM Name ID Family Speed MHz Load %
------- -- ------ --------- ------
GLPI-OCS 0 6 2200 11
CERTSDB 0 6 2200 0
PowerDNS 0 6 2200 4
DrWeb 0 6 2200 15


Запрос
Get-VMSerialPort
Ответ
VMElementName Element Name Resource Sub type Connection
------------- ------------ ----------------- ----------
test COM 1 Microsoft Serial Port {}
test COM 2 Microsoft Serial Port {}


Запрос
Get-VMDiskController
Ответ
VMElementName Element Name Resource Sub type Connection
------------- ------------ ----------------- ----------
test Контроллер 0 IDE Microsoft Emulated IDE Controller
test Контроллер 1 IDE Microsoft Emulated IDE Controller
test SCSI-контроллер Microsoft Synthetic SCSI Controller


Запрос
Get-VMDisk
Ответ
VMElementName : test
VMGUID : 9DB8934C-4E05-4EB1-AB92-552D08CCB519
ControllerName : Контроллер 0 IDE
ControllerInstanceID : Microsoft:9DB8934C-4E05-4EB1-AB92-552D08CCB519\83F8638B-8DCA-4152-9EDA-2CA8B33039B4\0
ControllerID : 0
DriveName : Жесткий диск
DriveInstanceID : Microsoft:9DB8934C-4E05-4EB1-AB92-552D08CCB519\83F8638B-8DCA-4152-9EDA-2CA8B33039B4\0\0\D
DriveLUN : 0
DiskPath : G:\Hyper-V\test\WEBSERV-BTRX.vhd
DiskImage : G:\Hyper-V\test\WEBSERV-BTRX.vhd
DiskName : Образ жесткого диска
DiskInstanceID : Microsoft:9DB8934C-4E05-4EB1-AB92-552D08CCB519\83F8638B-8DCA-4152-9EDA-2CA8B33039B4\0\0\L

VMElementName : test
VMGUID : 9DB8934C-4E05-4EB1-AB92-552D08CCB519
ControllerName : Контроллер 1 IDE
ControllerInstanceID : Microsoft:9DB8934C-4E05-4EB1-AB92-552D08CCB519\83F8638B-8DCA-4152-9EDA-2CA8B33039B4\1
ControllerID : 1
DriveName : DVD-дисковод
DriveInstanceID : Microsoft:9DB8934C-4E05-4EB1-AB92-552D08CCB519\83F8638B-8DCA-4152-9EDA-2CA8B33039B4\1\0\D
DriveLUN : 0
DiskPath :
DiskImage :
DiskName :
DiskInstanceID :


Запрос
Get-VHDDefaultPath
Ответ
C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks


Запрос
Get-VmNic
Ответ
VMElmentName Element Name Type Switch VLAN Mac address Static ID
------------ ------------ ---- ------ ---- ----------- ------ --
GLPI-OCS Сетевой адаптер Synthetic Новая виртуальная сеть 0 00155D3C0F02 False {{0b6ea3aa-d90b-473f-98b6-e8e3e...
CERTSDB Сетевой адаптер Synthetic Новая виртуальная сеть 0 00155D3C0F05 False {{e09d6d6a-013b-4021-bdc8-0c92e...
WEBSERV-BTRX Сетевой адаптер Synthetic 00155D3C0F07 False {{4f2e7030-374a-4232-8274-3157c...
PowerDNS Сетевой адаптер Synthetic Новая виртуальная сеть 0 00155D3C0F06 False {{50ad7feb-2e1a-4263-bcb8-822d9...
DrWeb Сетевой адаптер Synthetic Новая виртуальная сеть 0 00155D3C0F01 False {{57295957-08a4-480b-8aec-e6bd8...
test Устаревший сетевой а... Emulated 00155D3C0F09 False


Запрос
Get-VMSwitch
Ответ
Name Learnable Status
Addresses
---- --------- ------
Новая виртуальная сеть 2048 {ОК}
Установка модуля через скрипт bat находится в папке Module-PSHyperv sourceCode
Возможно не пройдет имя переменой в реестр HKCU\Console\%SystemRoot% и HKU\.DEFAULT\Console\%SystemRoot% проверить после установки!
Install-module-HyperV.bat
Показать
@ECHO OFF
mode con:cols=130 lines=40
color 1A
:: Автор Артём Андреевич Мамзиков
:: V 1.0 2021.03.09
chcp 866 >NUL
TITLE Установка модуля PowerShell для HyperV
@cls
echo.
echo.
echo. Установка модуля PowerShell для HyperV
echo. Минимальные требования Net Framework 2 и PowerShell V 1-2 в зависимости от весрии модуля!
echo.
echo. Данный скрипт автоматически выполнит:
echo. 1. Разрешить выполнение всех скриптов в PowerShell Unrestricted (правка реестра)
echo. 2. Добавление Системных переменных в PSModulePath путь до модулей
echo. 3. Копирование Модуля HyperV
echo. 4. Импорт (установка) модуля в PowerShell
echo.
echo. P.S.
echo. Скрипт должен выполнятся от имени Администратора
echo. или Пользователя имеющего соответствующие права на изменения!!!
@echo off
pause
@Echo Off
::Пользователь Разрешить выполнение всех скриптов в PowerShell
reg add HKCU\SOFTWARE\Policies\Microsoft\Windows\PowerShell /v EnableScripts /t REG_DWORD /d 1 /f
reg add HKCU\SOFTWARE\Policies\Microsoft\Windows\PowerShell /v ExecutionPolicy /t REG_SZ /d Unrestricted /f
::Локально компьютера Разрешить выполнение всех скриптов в PowerShell
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell /v EnableScripts /t REG_DWORD /d 1 /f
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell /v ExecutionPolicy /t REG_SZ /d Unrestricted /f
:: Unrestricted - разрешено выполнение абсолютно любых сценариев не подписанных скриптов в PowerShell или параметр RemoteSigned вместо Unrestricted
reg add HKCU\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell /v ExecutionPolicy /t REG_SZ /d Unrestricted /f

:: Добавление еще 2х разделов в реестр и параметров в них
reg add "HKCU\Console\^%SystemRoot^%_System32_WindowsPowerShell_v1.0_powershell.exe" /v ColorTable14 /t REG_DWORD /d 8450288 /f /reg:32
reg add "HKCU\Console\^%SystemRoot^%_System32_WindowsPowerShell_v1.0_powershell.exe" /v FaceName /t REG_SZ /d "" /f
reg add "HKCU\Console\^%SystemRoot^%_System32_WindowsPowerShell_v1.0_powershell.exe" /v QuickEdit /t REG_DWORD /d 1 /f /reg:32
reg add "HKCU\Console\^%SystemRoot^%_System32_WindowsPowerShell_v1.0_powershell.exe" /v ScreenBufferSize /t REG_DWORD /d 196608096 /f /reg:32
reg add "HKCU\Console\^%SystemRoot^%_System32_WindowsPowerShell_v1.0_powershell.exe" /v ScreenColors /t REG_DWORD /d 30 /f /reg:32
reg add "HKCU\Console\^%SystemRoot^%_System32_WindowsPowerShell_v1.0_powershell.exe" /v WindowPosition /t REG_DWORD /d 8 /f /reg:32
reg add "HKCU\Console\^%SystemRoot^%_System32_WindowsPowerShell_v1.0_powershell.exe" /v WindowSize /t REG_DWORD /d 3014752 /f /reg:32

reg add "HKU\.DEFAULT\Console\^%SystemRoot^%_System32_WindowsPowerShell_v1.0_powershell.exe" /v ColorTable14 /t REG_DWORD /d 8450288 /f /reg:32
reg add "HKU\.DEFAULT\Console\^%SystemRoot^%_System32_WindowsPowerShell_v1.0_powershell.exe" /v FaceName /t REG_SZ /d "" /f
reg add "HKU\.DEFAULT\Console\^%SystemRoot^%_System32_WindowsPowerShell_v1.0_powershell.exe" /v QuickEdit /t REG_DWORD /d 1 /f /reg:32
reg add "HKU\.DEFAULT\Console\^%SystemRoot^%_System32_WindowsPowerShell_v1.0_powershell.exe" /v ScreenBufferSize /t REG_DWORD /d 196608096 /f /reg:32
reg add "HKU\.DEFAULT\Console\^%SystemRoot^%_System32_WindowsPowerShell_v1.0_powershell.exe" /v ScreenColors /t REG_DWORD /d 30 /f /reg:32
reg add "HKU\.DEFAULT\Console\^%SystemRoot^%_System32_WindowsPowerShell_v1.0_powershell.exe" /v WindowPosition /t REG_DWORD /d 8 /f /reg:32
reg add "HKU\.DEFAULT\Console\^%SystemRoot^%_System32_WindowsPowerShell_v1.0_powershell.exe" /v WindowSize /t REG_DWORD /d 3014752 /f /reg:32

:: Проверка наличия переменной в PSModulePath, если нет добавляем для модулей PowerShell
echo %PSModulePath%|>nul find /i "%WINDIR%\System32\WindowsPowerShell\v1.0\Modules"||path %PSModulePath%;%WINDIR%\System32\WindowsPowerShell\v1.0\Modules;
:: Дополнительно команды для переменных если выше команд не достаточно, через реестр
::reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PSModulePath /t REG_EXPAND_SZ /d "%ProgramFiles%"\WindowsPowerShell\Modules;"%SystemRoot%"\system32\WindowsPowerShell\v1.0\Modules /f
:: Еще одна переменная по умолчанию у меня уже была
::reg add "HKLM\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell" /v Path /t REG_SZ /d C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe /f

:: Создать каталог HyperV
md "%WINDIR%\System32\WindowsPowerShell\v1.0\Modules\HyperV"
:: Определение пути откуда запущен bat и копируем все в созданный каталог HyperV
xcopy "%~dp0"*.* %WINDIR%\System32\WindowsPowerShell\v1.0\Modules\HyperV\ /s /e /y /v /c

:: Запускаем импорт модуля hyperV в powershell
start %windir%\System32\WindowsPowerShell\v1.0\powershell.exe -noExit -Command "Import-Module '%WINDIR%\System32\WindowsPowerShell\v1.0\Modules\HyperV\hyperV' "

pause
color 0f
Установка вручную и тестирование
Показать
Через веб сайт импорт
Import-Module HyperV http://pshyperv.codeplex.com/releases

По умолчанию такого модуля в PowerShell конечно нет. Microsoft решила что писать командлеты для управления Hyper-V ни кто не будет (действительно дикая затея).
С другой стороны этот мир полон людей умеющих и готовых упрощать жизнь себе и другим пользователям.
в виде модуля PowerShell версии 2 Zip-файл, из http://PShyperV.codeplex.com
Предыдущая версия 1 PowerShell и остается доступной на Codeplex.
Обе версии работают с оригинальным выпуском Hyper-V и выпуском R2.
Так на свет и появился PowerShell management Library for Hyper-V https://github.com/gcbond/pshyperv - урезаная мало файлов
Первое что нужно сделать- это скачать этот модуль + документация, по вкусу. (Оба доступны по: http://pshyperv.codeplex.com/releases)
https://codeplexarchive.blob.core.windo ... Hyperv.zip

У вас должен быть уже устновлен как минимум Net Framework 2 и PowerShell
Распаковываем архив
Я буду делать установку из \Module-PSHyperv\sourceCode версия PowerShell Version: 5.1.14409.1005 и Net Framework 4.5.2
Сделав свой скрипт установки
Install-module-HyperV.bat

Данный скрипт автоматически выполнит:
1. Разрешить выполнение всех скриптов в PowerShell Unrestricted (правка реестра)
2. Добавление Системных переменных в PSModulePath путь до модулей
3. Копирование Модуля HyperV
4. Импорт (установка) модуля в PowerShell

Просмотреть установленные модули Get-Module -listavailable или Get-Command -Module hyperv | Out-GridView или Get-Command -Module hyperv
должно быть
Manifest 2.0.0.0 HyperV {Add-ZIPContent, ConvertTo-Enum, Copy-ZipContent, Get-ZIPContent...}
Проверка C:\Windows\System32\WindowsPowerShell\v1.0\Modules должен быть модуль Hyperv


Установка вручную
Копируем содердимое папки \Module-PSHyperv\sourceCode\ в папку с модулями
или
Копируем папку HyperV из \pshyperv-master\ в папку с модулями

Копируем папку HyperV в папку с модулями пример 2х вариантов
Будет работать только от конкретного пользователя!
%USERPROFILE%\Documents\WindowsPowerShell\Modules
Будет работать от имени всех пользователей
%WINDIR%\System32\WindowsPowerShell\v1.0\Modules (Нужны права администратора)

Установка
PowerShell с помощью команды Import-Module <path\>Hyperv.psd1
install-module HyperV - для конкретного пользователя будет доступен данный модуль
Вариант импорта модуля для всех пользователей
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -noexit -command import-module Hyperv
или
start %windir%\System32\WindowsPowerShell\v1.0\powershell.exe -noExit -Command "Import-Module '%ProgramFiles%\modules\hyperV' "


Установка через стандартный скрипт
путь Module-PSHyperv\sourceCode , все извлекаем и запускаем с правами Администратора install.cmd
Внесет следующие изменения:
• Проверка и востановление компонетов Net Framework 2 и PowerShell (dism)
• Создайте папку в разделе Program Files\modules\HyperV и добавьте ее в переменную среды PSModulePath. Логичнее сделать путь %ProgramFiles%\WindowsPowerShell\Modules
• Копируем все содержимое папки HyperV откуда запущен батник в %ProgramFiles%\modules\HyperV и скопировать в %ProgramFiles%\WindowsPowerShell\Modules

• Вносим изменения в реестр из файла PS_Console.REG , перед внесение изменений желательно посмотреть что используется до них, или вносим изменения вручную
Изменения в реестр не подписанных скриптов
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell
"ExecutionPolicy"="RemoteSigned" у меня параметр Unrestricted уже все разрешено исполнять не подписаное

Добавление пути для переменных
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
PSModulePath %ProgramFiles%\WindowsPowerShell\Modules;%SystemRoot%\system32\WindowsPowerShell\v1.0\Modules
После запуска заменится на пути %SystemRoot%\system32\WindowsPowerShell\v1.0\Modules\;%programFiles%\Modules

Есть пути для конкретных пользователей %USERPROFILE%\Documents\WindowsPowerShell\Modules работает модуль только для конкретного пользователя


нет даных путей
HKEY_CURRENT_USER\Console\%SystemRoot%_System32_WindowsPowerShell_v1.0_powershell.exe
HKEY_USERS\.DEFAULT\Console\%SystemRoot%_System32_WindowsPowerShell_v1.0_powershell.exe


чтобы создать идеальное окно консоли PowerShell и разрешить PowerShell запускать неподписанные сценарии. Либо подпишите скрипт.
Если вы не используете сценарий установки, вы должны установить политику выполнения PowerShell в RemoteSigned с помощью команды
Set-ExecutionPolicy RemoteSigned

• Запускаем импорт модуля hyperV в powershell
Moudle включает в себя меню, аналогичное конфигуратору PowerShell, найденному на Codeplex at http://psconfig.codeplex.com/ вы можете запустить меню с помощью команды Show-Hypervmenu
В качестве альтернативы, когда модуль был импортирован, вы можете обнаружить его команды, введя следующие команды
get-command -module HyperV или get-command -module Hyperv| get-help | format-table name,synopsis -auto Наконец, get-help Command-Name –full предоставит вам онлайн-справку по команде.









Примеры команд и описание
PSHyperv
Библиотека управления PowerShell для Hyper-V
Проект по предоставлению библиотеки управления PowerShell для Hyper-V.

Он делает в значительной степени то, о чем говорит. Обратите внимание, что большая часть информации, доступной из Hyper-V,
доступна только в том случае, если Powershell работает с повышенными привилегиями.
В настоящее время в библиотеке 80 функций, некоторые из них являются рабочими функциями, которые, как ожидается, не будут вызываться напрямую, другие - перечислено ниже.

ПРИМЕЧАНИЕ . Версия PSHyper-V, доступная в разделе «Исходный код», находится в стадии активной разработки, и ее стабильность не гарантируется.
Если вам нужен стабильный выпуск, используйте одну из версий из области загрузок.

Поиск виртуальной машины
Get-VM, Choose-VM, Get-VMHost

Подключение к виртуальной машине.
New-VMConnectSession

Обнаружение состояний машины и управление ими
Get-VMState, Set-VMState, Convert-VmState,
Ping-VM, Test-VMHeartBeat, Shutdown-VM, Start-VM, Stop-VM, Suspend-VM
Get-VMKVP, Add-KVP , Remove-KVP, Get-VMJPEG

Резервное копирование, экспорт и создание снимков виртуальных машин
Export-VM, Import-VM, Get-VMSnapshot, Choose-VMSnapshot, Apply-VMSnapshot, New-VMSnapshot, Remove-VMSnapshot, Rename-VMSnapShot, Update-VMSnapshot , Get-VMSnapshotTree, Get-VmBackupScript

Добавление и удаление виртуальных машин, настройка параметров материнской платы.
New-VM, Remove-VM, Set-VM, Get-VMCPUCount, Set-VMCPUCount, Get-VMMemory, Set-VMMemory, Set-VMSerialPort

Управление контроллерами дисков, дисками и образами дисков
Get-VMDiskController
Add-VMSCSIController, Remove-VMSCSIcontroller
Get-VMDriveByController, Add-VMDRIVE, Remove-VMdrive
Get-VMDiskByDrive, Add-VMDISK, Set-VMDisk, Get-VMDisk
Get-VMFloppyDisk, Add-VMFloppyDisk
Add-VMNewHardDisk

Manipluating Сетевые карты
Get-VMNic , List-VMNic, Choose-VMNIC, Add-VMNIC, Remove-VMNIC, Set-VMNICAddress, Set-VMNICConnection, Get-VMNicport,
Get-VMnicSwitch, Choose-VMSwitch, New-VMSwitchPort, Get-VMByMACaddress, Choose-VMExternalEthernet,
New -VMExternalSwitch, New-VMInternalSwitch, New-VmPrivateSwitch

Работа с файлами VHD
Get-VHDDefaultPath, Get-VHDInfo, New-VHD, Compact-VHD, Test-VHD, Convert-VHD, Merge-VHD, Mount-VHD, Unmount-VHD



По ошибкам
At C:\Windows\system32\WindowsPowerShell\v1.0\Modules\Hyperv\Menu.ps1:276 char:79
+ ... { $SelectedVHD = (Select-List -InputObject $vhd -Property ,@{Name=" ...
+ ~
Missing argument in parameter list.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MissingArgument

Убрал запятую в файле menu.ps1
строка 276 перед @{Name="Name";
20 { $SelectedVHD = (Select-List -InputObject $vhd -Property @{Name="Name"; expression={$_.Name -replace ($folder+"\").replace("\","\\"),""}}).name }
количество слов: 1582
Ответить Вложения 2 Пред. темаСлед. тема

Вернуться в «Hyper-V»