Retrieving the IP Address Of A VM In Hyper-V

This post is to update an old from one 2008 Hyper-V WMI Using PowerShell Scripts – Part 3 (KVP's - Guest OS Version) – in reviewing that post the most coming inquiry was looking for the guests IP address, well we got that for you in PowerShell now…  With the introduction of Windows Server 2012 Hyper-V now includes 164 different PowerShell cmdlet’s.  On of those is Get-VMNetworkAdapter and one of the properties we included in that cmdlet is the IPAddress that network adapter has assigned to it.  We retrieve that information using the tried and true key value pair integration component.

PowerShell Example

PS C:\> (Get-VMNetworkAdapter -VMName VM1).IpAddresses
192.168.0.104
fe80::3114:f7d4:4561:9ea2
2001:1234:a:2:7891:f7d4:4561:9ea2

WMI Example Querying The Key Value Pair (KVP) Integration Component

$vm = Get-WmiObject -Namespace root\virtualization\v2 -Class `
Msvm_ComputerSystem -Filter {ElementName='VM1'}

$vm.GetRelated("Msvm_KvpExchangeComponent").GuestIntrinsicExchangeItems | % { `
$GuestExchangeItemXml = ([XML]$_).SelectSingleNode(`
"/INSTANCE/PROPERTY[@NAME='Name']/VALUE[child::text()='NetworkAddressIPv4']")

if ($GuestExchangeItemXml -ne $null)
{
$GuestExchangeItemXml.SelectSingleNode(`
"/INSTANCE/PROPERTY[@NAME='Data']/VALUE/child::text()").Value
}
}

Other Key Value Pair’s Provided

KVP Name Sample Value
FullyQualifiedDomainName vm1.contoso.com
OSName Windows Server 2008 R2 Enterprise
OSVersion 6.1.7601
CSDVersion Service Pack 1
OSMajorVersion 6
OSMinorVersion  1
OSBuildNumber 7601
OSPlatformId 2
ServicePackMajor 1
ServicePackMinor 0
SuiteMask 274
ProductType 3
OSVendor 1
OSSignature 4
OSEditionId 10
ProcessorArchitecture 9
IntegrationServicesVersion 6.2.9200.16433
NetworkAddressIPv4 192.168.0.123
NetworkAddressIPv6 fe80::3114:f7d4:4561:9ea2;2001:1234:a:2:7891:f7d4:4561:9ea2
RDPAddressIPv4 192.168.0.123
RDPAddressIPv6 fe80::3114:f7d4:4561:9ea2;2001:1234:a:2:7891:f7d4:4561:9ea2

 

-taylorb