If you are running a virtual machine (VM) on Hyper-V, sometimes you want to know on which Hyper-V host this VM is running. If you don’t have access to the Hyper-V host, you need to find that information from within the virtual machines operating system. Luckily, the hostname of the physical Hyper-V server the virtual machine is running on can be found in the virtual machines registry.
You can find that information under the following registry key:
ComputerHKEY_LOCAL_MACHINESOFTWAREMicrosoftVirtual MachineGuestParameters
You will get some additional information about the Hyper-V host as well as the physical Hyper-V Hostname of the VM.
Find the Hostname of a Hyper-V VM in Registry
You could also run the following PowerShell command to get the Hyper-V hostname inside the VM:
Get-ItemProperty -Path "HKLM:SOFTWAREMicrosoftVirtual MachineGuestParameters" | Select-Object HostName
Since we run a version of Hyper-V in our Microsoft Azure datacenters, this also works with Azure VMs.
Get physical hostname of a Hyper-V VM using PowerShell (Azure VM)
I hope this post was helpful and shows you how you can find the hostname the physical Hyper-V host of a VM. if you have any questions feel free to leave a comment below.
And yes, the first screenshot was taken on a Surface Pro X running Hyper-V on Windows 10 on ARM.
- Remove From My Forums
-
Question
-
I have a program that copies a base VM hard drive file from the network to the local machine. The base VM has Windows Server installed and has been syspreped.
The powershell script I use to create the new VM based off of the base hard drive file is as follows:
powerShellInstance.AddScript(@»New-VM -Name » + strMachineName + @» -MemoryStartupBytes 8GB -BootDevice VHD -VHDPath C:VMrealvhdx.vhdx -Path ‘C:ProgramDataMicrosoftWindowsHyper-V’ -Generation 2 -Switch ‘Externall
Switch'»);When I invoke the script, it works flawlessly. Unfortunately I do not know the name the actual new Window machine. I do know the name of the VM but that’s not the same thing. I need to rename the new machine which is a manual process.
I need suggestions on how I can get the name of the new machine so I can automate the task.Maybe I can hardset the IP in the New-VM script and use the IP address to resolve the name? If so, how? I would of course have to change the VM back to DHCP but I don’t see that being a huge deal.
Thanks
#AutomationNooby
Bill Greer
- Remove From My Forums
-
Question
-
I have a program that copies a base VM hard drive file from the network to the local machine. The base VM has Windows Server installed and has been syspreped.
The powershell script I use to create the new VM based off of the base hard drive file is as follows:
powerShellInstance.AddScript(@»New-VM -Name » + strMachineName + @» -MemoryStartupBytes 8GB -BootDevice VHD -VHDPath C:VMrealvhdx.vhdx -Path ‘C:ProgramDataMicrosoftWindowsHyper-V’ -Generation 2 -Switch ‘Externall
Switch'»);When I invoke the script, it works flawlessly. Unfortunately I do not know the name the actual new Window machine. I do know the name of the VM but that’s not the same thing. I need to rename the new machine which is a manual process.
I need suggestions on how I can get the name of the new machine so I can automate the task.Maybe I can hardset the IP in the New-VM script and use the IP address to resolve the name? If so, how? I would of course have to change the VM back to DHCP but I don’t see that being a huge deal.
Thanks
#AutomationNooby
Bill Greer
There are several ways you can determine the virtualization host (server with the Hyper-V role enabled), also called the physical host, that a VM is running on.
If the host OS is Windows Server 2008 R2, and the virtual machines on it are using the R2 integrations services, then you can query the following:
$[HKLMSOFTWAREMicrosoftVirtual MachineGuestParameters]
«HostName»=
«PhysicalHostName»=»
«PhysicalHostNameFullyQualified»=
«VirtualMachineName»=
Using SCVMM:
Get-VMMServer cluster.domain.com | Get-VM Server1 | Select-Object vmhost
Replace cluster.domain.com to the FQDN of your VMM cluster and Server1 to the server you’re looking for.
Using PowerShell:
This script pulls the host name from the VM’s registry.
Function Get-VMHost
{
(get-item «HKLM:SOFTWAREMicrosoftVirtual MachineGuestParameters»).GetValue(«HostName»)
}
Using WMI and PowerShell
function Get-VMOSDetail
{
Param(
[Parameter()]
$ComputerName = $Env:ComputerName,
[Parameter()]
$VMName
)
# Creating HASH Table for object creation
$MyObj = @{}
# Getting VM Object
$Vm = Get-WmiObject -Namespace rootvirtualization -Query
"Select * From Msvm_ComputerSystem Where ElementName='$VMName'"
-ComputerName $ComputerName
# Getting VM Details
$Kvp = Get-WmiObject -Namespace rootvirtualization -Query
"Associators of {$Vm} Where AssocClass=Msvm_SystemDevice ResultClass=Msvm_KvpExchangeComponent"
-ComputerName $ComputerName
# Converting XML to Object
foreach
($CimXml
in
$Kvp.GuestIntrinsicExchangeItems)
{
$XML = [XML]$CimXml
if
($XML)
{
foreach
($CimProperty
in
$XML.SelectNodes(
"/INSTANCE/PROPERTY"
))
{
switch
-exact ($CimProperty.Name)
{
"Data"
{ $Value = $CimProperty.VALUE }
"Name"
{ $Name = $CimProperty.VALUE }
}
}
$MyObj.add($Name,$Value)
}
}
# Outputting Object
New-Object -TypeName PSCustomObject -Property $MyObj
}
Using System Center Configuration Manager:
This T-SQL query can be used to generate a report giving the number of hosts per guest:
SELECT [PhysicalHostNameFullyQualifi0] AS [Host FQDN], COUNT(PhysicalHostNameFullyQualifi0) AS [Count of Guests]
FROM [v_GS_VIRTUAL_MACHINE]
GROUP BY [PhysicalHostNameFullyQualifi0]
This T-SQL query can used to generate a report matching hosts to guests
SELECT sys.Netbios_Name0, vm.PhysicalHostName0, vm.ResourceID
FROM dbo.v_GS_VIRTUAL_MACHINE AS vm
JOIN v_R_System AS sys ON vm.ResourceID = sys.ResourceID
Using MMC:
Resources:
- Taylor Brown’s blog post of PowerShell scripts for Hyper-V using WMI
- James O’Neils free library of PowerShell script for managing Hyper-V
- Brien Posey free e-book about managing Hyper-V with PowerShell
See Also
- PowerShell Portal
- Wiki: Portal of TechNet Wiki Portals
Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
Скачиваний:
81
Добавлен:
10.02.2015
Размер:
250.95 Кб
Скачать
-
Таким же способом
проверьте способность виртуальной
машины Windows
Server
2003 с виртуальной машиной Windows
XP
(запустите утилиту ping
на виртуальной машине Windows
Server
2003).
-
Выпишите назначение
следующих ключей утилиты
ping:
–t,
–a,
–l,
–w. -
Поместите в отчет
скриншот, в котором отражено подтверждение
возможности установления связи между
физическим компьютером и виртуальной
машиной.
Задание 6.
Узнать имя физического компьютера и
название рабочей группы.
Указания к
выполнению
-
Существует два
способа узнать имя и рабочую группу
компьютера. Первый способ: откройте
окно системных свойств (щелкните правой
кнопкой мыши по значку Мой
компьютер – Свойства.
На вкладке Имя
компьютера
определите имя компьютера и название
рабочей группы. -
Второй способ (с
помощью командной строки): для определения
имени компьютера воспользуйтесь
утилитой hostname.
Чтобы узнать
название рабочей группы, примените
утилиту nbtstat
(утилита
отображает информацию о протоколе NBT
– NetBIOS
через TCP/IP).
В командной строке введите:
nbtstat
–a
<имя компьютера>.
-
Выпишите имя на
виртуальной машине Windows
XP
и название рабочей группы. -
Экспериментальным
путем выясните максимальную длину
имен NetBIOS.
Задание 7.
Изменить имя виртуальной машины и ввести
её в рабочую группу физического
компьютера.
Указания к
выполнению
-
На виртуальной
машине Windows
Server
2003 откройте окно системных свойств. На
вкладке Имя
компьютера
нажмите кнопку Изменить…
Введите имя машины (server)
и название рабочей группы, совпадающее
с названием рабочей группы виртуальной
машины Windows
XP. -
Проверьте новое
имя виртуальной машины с помощью утилиты
hostname. -
Проверьте,
отображается ли виртуальная машина
Windows
XP
в сетевом окружении виртуальной машины.
Откройте окно Сетевое
окружение
из меню Пуск.
Слева на панели Сетевых
задач
выберите пункт Отобразить
компьютеры рабочей группы.
Если все сделано правильно, в этом окне
должно быть два компьютера – обе
виртуальных машины.
-
Поместите в отчет
скриншоты, в которых, отражены:
окно
Имя
компьютера
с названием рабочей группы виртуальной
машины Windows
Server
2003, результат выполнения утилиты
hostname,
окно Сетевое
окружение.
Задание 8.
Проверить способность связи по именам
узлов.
Указания к
выполнению
-
Запустить
виртуальную машину Windows
XP
названную WinXP.
На виртуальной машине Windows
Server
2003 в командной строке введите:
Ping WinXp
-
Утилита ping,
запущенная по IP-адресу,
проверяет способность физического
соединения двух узлов. Если использовать
имя, то будет проверяться также
способность разрешения имени. -
Аналогично
проверьте связь с сервером на компьютере
c
виртуальной машинs
Windows
Server
2003.
-
Поместите в отчет
скриншот, в котором отражено подтверждение
возможности установления связи между
физическим компьютером и виртуальной
машиной по именам узлов.
Самостоятельная
работа
-
Для всех заданий
поместите в отчете скриншоты, отражающие
правильность выполнения заданий.
-
Подключите к сети
третий компьютер (физический компьютер
на котором установлено Oracle VirtualBox).
Нарисуйте схему полученной сети.
Проверьте возможность связи по
IP-адресам. -
Добавьте физический
компьютер в рабочую группу. Проверьте
возможность связи по именам узлов. -
Организуйте
постоянный опрос физического компьютера
с одной из виртуальных машин при помощи
утилиты ping. -
Выясните с одной
из виртуальных машин имя физического
компьютера при помощи утилиты ping. -
Изучите возможности
утилиты tracert. -
Исследуйте
возможности утилиты
netstat.
Контрольные
вопросы
-
Как узнать
физический адрес компьютера? -
Нужно ли перезапускать
компьютер, чтобы изменения вступили в
силу, если изменяются следующие
параметры:
-
настройки стека
TCP/IP; -
имя рабочей
группы; -
имя компьютера?
-
Какова максимальная
длина имен NetBIOS? -
Как с помощью
утилиты ping
определить достижимость узла? Какая
информация, полученная при использовании
утилиты ping,
служит ответом о достижимости узла? -
Как определить
IP-адрес
удаленного узла, зная только его
символьное имя? -
Как изменить
размер пакета утилиты ping? -
Параметры свойств
протокола TCP/IP
компьютера локальной сети были настроены
вручную. После этого компьютер может
устанавливать соединение с любым
компьютером внутренней сети, но
компьютеры удаленной подсети остаются
недостижимыми. Объясните, в чем проблема
и как ее устранить. -
Какая утилита
определяет имя узла?