Quantcast
Channel: The Official Scripting Guys Forum! forum
Viewing all articles
Browse latest Browse all 15028

Powershell script to extract specific VM info from Hyper-V SCVMM

$
0
0

Hi Folks,

Looking for some guidance here, here is my script:

$Data = @()

$VMs = "SOMEVM"


foreach($VM in $VMs)
{
    $VMInfo = Get-VM -Name $VM
    $VMNetwork = $VMInfo | Get-VMNetworkAdapter
    $VMVHD = $VMInfo | Get-VMHardDiskDrive | Get-VHD
    $VMHOST = $VMInfo | Get-VMHost
    $VMWMI = Get-WmiObject Win32_OperatingSystem -ComputerName $VM
    $VMWMIPROD = Get-WmiObject Win32_Product -ComputerName $VM
    $VMWMIPRODLOGDSK = Get-WmiObject win32_logicaldisk -ComputerName $VM
    $VMWMIPROC = Get-WMIObject Win32_Processor -ComputerName $VM
    $VMWMISVRUUID = $VMInfo | Get-WmiObject Win32_ComputerSystemProduct

    $VMCustom = New-Object System.Object
    

    ##Add Application - NEED TO ITERATE OVER LIST
    $VMCustom | Add-Member -Type NoteProperty -Name Applications1 -Value $VMWMIPROD.name
    

    ##VM Name
    $VMCustom | Add-Member -Type NoteProperty -Name VMName -Value $VMInfo.VMName
    ##IP addresses (ipv4/ipv6) - NEED TO ITERATE OVER LIST
    $VMCustom | Add-Member -Type NoteProperty -Name IPAddresses -Value $VMNetwork.IPAddresses[0]
    ##VMid (UUID)
    $VMCustom | Add-Member -Type NoteProperty -Name VMid -Value $VMinfo.id
    ##VM CPUs assigned
    $VMCustom | Add-Member -Type NoteProperty -Name ProcessorCount -Value $VMinfo.ProcessorCount
    ##VM Memory assigned
    $VMCustom | Add-Member -Type NoteProperty -Name MemoryAssigned -Value $VMinfo.MemoryAssigned
    ##VM Virtual HD size
    $VMCustom | Add-Member -Type NoteProperty -Name VMHDsize -Value $VMVHD.size[0]
    ##VM Used Filesize
    $VMCustom | Add-Member -Type NoteProperty -Name VMUsedHDSize -Value $VMVHD.filesize[0]
    ##VM OS Version - in Decimal
    $VMCustom | Add-Member -Type NoteProperty -Name OSVersion -Value $VMWMI.Version
    ##VM Uptime
    $VMCustom | Add-Member -Type NoteProperty -Name Uptime -Value $VMinfo.Uptime
    ##VM Cluster Info (if clustered)
    $VMCustom | Add-Member -Type NoteProperty -Name ClusterName -Value $VMinfo.cluster
    ##Hyper-V Hostname that VM resides on
    $VMCustom | Add-Member -Type NoteProperty -Name Hyper-v-ComputerName -Value $VMinfo.ComputerName
    ##Total Hyper-v Host Memory
    $VMCustom | Add-Member -Type NoteProperty -Name TotalMemoryCapacity -Value $VMHOST.MemoryCapacity
    ##Hyper-V Host Provisioned Disk Space for VM
    $VMCustom | Add-Member -Type NoteProperty -Name DriveLetter -Value $VMWMIPRODLOGDSK.DeviceID[0]
    $VMCustom | Add-Member -Type NoteProperty -Name Freespace -Value $VMWMIPRODLOGDSK.FreeSpace[0]
    $VMCustom | Add-Member -Type NoteProperty -Name HostProvSize -Value $VMWMIPRODLOGDSK.Size[0]
    ##VM Power State (running/not running)
    $VMCustom | Add-Member -Type NoteProperty -Name PoweredState -Value $VMinfo.State
    ##Host UUID
    $VMCustom | Add-Member -Type NoteProperty -Name HOSTUUID -Value $VMWMISVRUUID.UUID
    ##Logical Hyper-V Host Processor Count
    $VMCustom | Add-Member -Type NoteProperty -Name LogicalProcessorCount -Value $VMHOST.LogicalProcessorCount
    ##VM Load in Percentage
    $VMCustom | Add-Member -Type NoteProperty -Name CPULoadPercentage -Value $VMWMIPROC.LoadPercentage[0]
    ##VM Created on Time/Date
    $VMCustom | Add-Member -Type NoteProperty -Name CreationTime -Value $VMinfo.CreationTime


    $Data += $VMCustom


$Data | Export-CSV "C:\output.csv" -Delimiter "," -NoTypeInformation

My first issue is that when the line"$VMCustom | Add-Member -Type NoteProperty -Name IPAddresses -Value $VMNetwork.IPAddresses[0]" is run, I only get the first IP address listed for that VM. How do I get the read IP addresses to be added to the end of this string in my array?

Any help greatly appreciated!


Viewing all articles
Browse latest Browse all 15028

Trending Articles