Get-SCVMMInventory – Get Inventory of all VM’s in SCVMM 2012 R2

Credits are from https://vniklas.djungeln.se/2013/09/29/ Niklas AkerlundGet an inventory of all VM’s from System Center Virtual Machine Manager including the vCPU’s, memory, all VHD´s, IP addresses.  Report to CSV and HTML. Adapted to work with last actuallly SCVMM version 3.2.8224

__________________________

Créditos son de Niklas AkerlundGet https://vniklas.djungeln.se/2013/09/29/

Exportar un inventario de todas las VM’s es SCVMM. Se exporta a CSV y HTML, compatible con la última version 3.2.8224.

Example:

Get-SCVMInventory -report

Give a reports for “All Hosts”

Get-SCVMInventory -VMHost SERVER01

Give data from SERVER01 Hyper-v Host.

Publicado también en https://gallery.technet.microsoft.com/scriptcenter/Get-SCVMMInventory-Get-053afdc1

<# 
.Synopsis 
   this function gives you an invetory of the SCVMM  
.DESCRIPTION 
   either you can get just the object for each server or also a csv and html report 
.EXAMPLE 
   Get-SCVMInventory -report 
.EXAMPLE 
   Get-SCVMInventory -VMHost hyp05 
.NOTES 
   Niklas Akerlund 2013-09-29 
   Adapted by Martin Rojas 2016/11/08 to version 3.2.8224.0 
#> 
function Get-SCVMInventory 
{ 
    [CmdletBinding()] 
 
    Param 
    ( 
 
        $VMHostGroup = "All Hosts", 
        [Parameter(ValueFromPipeline=$True)][Alias('ClusterName')] 
        $VMHostCluster = $null, 
        $VMHost = $null, 
        [switch]$report, 
        [string]$path =".\", 
        [string]$CSVFile = "VMdata.csv", 
        [string]$HTMLReport = "VMdata.html" 
    ) 
 
    Begin 
    { 
        if(!(Get-Module virtualmachinemanager)){ 
            Import-Module Hyper-V 
            Import-Module virtualmachinemanager 
        } 
        if(Get-SCVMMServer localhost | where ProductVersion -match 3){ 
            $isR2 = $true 
        }else{ 
            $isR2 = $false 
        } 
    } 
    Process 
    { 
         if ($VMHostCluster -eq $null){ 
            if($VMHost -eq $null){ 
                $VMHosts = (Get-SCVMHostGroup -Name $VMhostGroup).AllChildHosts 
            }else{ 
                $VMHosts = Get-SCVMHost $VMHost 
            } 
         }else{ 
            $VMHosts = (Get-SCVMHostCluster -Name $VMHostCluster).Nodes 
         } 
            $VMs = $VMHosts | Get-SCVirtualMachine 
            $reportArray = @() 
            foreach ($VM in $VMs){ 
                Write-Verbose $VM.Name 
                    $vNics = $VM.VirtualNetworkAdapters 
                    $VHDConf = $VM.VirtualHardDisks 
                    $driveConf = $VM.VirtualDiskDrives 
                    if(($vNics[0].IPv4Addresses -ne $null)){ 
                        Write-Verbose $vNics[0].IPv4Addresses[0] 
                        $IPAddress1 = $vNics[0].IPv4Addresses[0] 
 
                    }else{ 
                        if (!$isR2){ 
                            if(($vNics[0].IPv4Addresses -ne $null)){ 
                            $IPAddress1= (Hyper-V\Get-VMNetworkAdapter -ComputerName $VM.HostName -VMName $VM.Name).IPv4Addresses[0] 
                            }else{ 
                                $IPAddress1 = "N/A" 
                            } 
                        }else{ 
                            Write-Verbose "NO IP" 
                            $IPAddress1 = "N/A" 
                        } 
                    } 
                    if($VM.VMCheckpoints){ 
                    $Snapshots = "Yes" 
                    }else{ 
                    $Snapshots = "No" 
                    } 
 
                    $data = [ordered]@{ 
                    VMName = $VM.Name 
                    vCPUs = $VM.CPUCount 
                     
                    MemoryAssignedMB = $VM.MemoryAssignedMB 
                    Status = $VM.Status 
                    OperatingSystem = $VM.OperatingSystem 
                    HostName = $VM.HostName 
                     TotalSizeGB = $VM.TotalSize/1GB -as [int] 
                    vNics = $vNics.Count                                                          
                    VirtualNetwork1 = $vNics[0].VirtualNetwork 
                    MacAddressType1 = $vNics[0].MacAddressType 
                    MacAddress1 = $vNics[0].MacAddress 
                    VirtualNetworkAdapterType1 = $vNics[0].VirtualNetworkAdapterType 
                    VLANEnabled1 = $vNics[0].VlanEnabled 
                    VLanID1 = $vNics[0].VlanID  
                    IPAddress1 = $IPAddress1 
 
                    NumberofVHD = $VHDConf.Count 
                    VHDName = $VHDConf[0].Name 
                    VHDFormatType = $VHDconf[0].VHDFormatType 
                    VHDSize = $VHDconf[0].MaximumSize/1GB -as [int] 
                    VHDCurrentSize = $VHDconf[0].Size/1GB -as [int] 
                    VHDBusType = $driveConf[0].BusType 
                    VHDBus = $driveConf[0].Bus 
                    VHDLUN = $DriveConf[0].Lun 
                    VHDDatastore = $VHDconf[0].Directory 
 
                    VHDName2 = $VHDConf[1].Name 
                    VHDFormatType2 = $VHDconf[1].VHDFormatType 
                    VHDSize2 = $VHDconf[1].MaximumSize/1GB -as [int] 
                    VHDCurrentSize2 = $VHDconf[1].Size/1GB -as [int] 
                    VHDBusType2 = $driveConf[1].BusType 
                    VHDBus2 = $driveConf[1].Bus 
                    VHDLUN2 = $DriveConf[1].Lun 
                    VHDDatastore2 = $VHDconf[1].Directory 
 
                    VHDName3 = $VHDConf[2].Name 
                    VHDFormatType3 = $VHDconf[2].VHDFormatType 
                    VHDSize3 = $VHDconf[2].MaximumSize/1GB -as [int] 
                    VHDCurrentSize3 = $VHDconf[2].Size/1GB -as [int] 
                    VHDBusType3 = $driveConf[2].BusType 
                    VHDBus3 = $driveConf[2].Bus 
                    VHDLUN3 = $DriveConf[2].Lun 
                    VHDDatastore3 = $VHDconf[2].Directory 
                    StartMemoryGB = $VM.Memory/1024 
                    DynamicMemory = $VM.DynamicMemoryEnabled 
                    DynamicMemoryDemandMB = $VM.DynamicMemoryDemandMB 
                    DynamicMemoryStatus = $VM.DynamicMemoryStatus -as [int] 
                    DynamicMemoryMinMB = $VM.DynamicMemoryMinimumMB -as [int] 
                    DynamicMemoryMaxGB = $VM.DynamicMemoryMaximumMB/1024 -as [int] 
                    HasSnaphots = $Snapshots 
                    Owner = $VM.Owner 
                    Cloud = $VM.Cloud 
                    CreationTime = $VM.CreationTime 
                    HasVMAdditions = $VM.HasVMAdditions 
                    VMAddition = $VM.VMAddition 
                    
            } 
            $obj= New-Object -TypeName PSObject -property $data 
            $reportArray +=$obj  
            Write-Output $obj 
            } 
 
            if($report){ 
                # $reportArray 
                $CSVReport = $path + $CSVFile 
                $HTMLReport = $path + $HTMLReport 
                $reportArray | Export-Csv -Path $CSVReport -NoTypeInformation -UseCulture 
                $reportArray | ConvertTo-HTML | Out-File $HTMLReport 
            } 
    } 
    End 
    { 
        # Should we clean anything? 
    } 
}

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s