Powercli: Récupérer les informations Numa et mémoire d’un ESX

 

Voici un script qui va vous permettre de récupérer les informations numa de vos ESXi ainsi que l’emplacement de vos mémoires.  Je récupère l’emplacement des mémoires, la fréquence, et la taille.

Je l’ai fait pour pouvoir faire un état des lieux complet d’une infrastructure VMware. A savoir si les barrettes mémoires sont bien disposées dans les Hosts par exemple. Des tailles de « Numa » différentes relèvent souvent un problème sur la configuration de vos hosts.

Voici comment se présente le script

Check VMware Modules
 $PSNAP= Get-PSSnapin VMware.VimAutomation.Core -erroraction 'silentlycontinue'
 if ($? -eq $false)
 {
 ##Load VMware Modules
 asnp VMware.VimAutomation.Core
 }
     Else 
     {
     Write-host "Module VMware déjà chargé"
     }
     
 $vcserver = Read-host "Indiquer le nom du vCenter"    
 $path = Read-host "Indiquer l'emplacement des rapports ex : f:\temp"
Connect-viserver $vcserver   
function Get-VMHostWSManInstance {
         param (
         [Parameter(Mandatory=$TRUE,HelpMessage="VMHosts to probe")]
         [VMware.VimAutomation.Client20.VMHostImpl[]]
         $VMHost,
  
         [Parameter(Mandatory=$TRUE,HelpMessage="Class Name")]
         [string]
         $class,
  
         [switch]
         $ignoreCertFailures,
  
         [System.Management.Automation.PSCredential]
         $credential=$null
         )
  
         $omcBase = "http://schema.omc-project.org/wbem/wscim/1/cim-schema/2/"
         $dmtfBase = "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/"
         $vmwareBase = "http://schemas.vmware.com/wbem/wscim/1/cim-schema/2/"
  
         if ($ignoreCertFailures) {
                 $option = New-WSManSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
         } else {
                 $option = New-WSManSessionOption
         }
         foreach ($H in $VMHost) {
                 if ($credential -eq $null) {
                         $hView = $H | Get-View -property Value
                         $ticket = $hView.AcquireCimServicesTicket()
                         $password = convertto-securestring $ticket.SessionId -asplaintext -force
                         $credential = new-object -typename System.Management.Automation.PSCredential -argumentlist $ticket.SessionId, $password
                 }
                 $uri = "https`://" + $h.Name + "/wsman"
                 if ($class -cmatch "^CIM") {
                         $baseUrl = $dmtfBase
                 } elseif ($class -cmatch "^OMC") {
                         $baseUrl = $omcBase
                 } elseif ($class -cmatch "^VMware") {
                         $baseUrl = $vmwareBase
                 } else {
                         throw "Unrecognized class"
                 }
                 Get-WSManInstance -Authentication basic -ConnectionURI $uri -Credential $credential -Enumerate -Port 443 -UseSSL -SessionOption $option -ResourceURI "$baseUrl/$class"
         }
 }

$(Foreach ($esxhost in (get-vmhost))
 {
 Get-VMHostWSManInstance -VMHost $esxhost -class CIM_PhysicalMemory -ignoreCertFailures | Select ElementName, @{N="Capacity(GB)";E={$_.Capacity / 1073741824.}}, MaxMemorySpeed,@{N="ESX";E={$esxhost.name}},@{N="Cluster";E={(get-vmhost $esxhost | get-cluster).Name}}
 }) | Export-csv -Delimiter ";" $path\hardware_memory_$vcserver.csv -NoTypeInformation

$(Foreach ($esxhost in (get-vmhost | Get-view))
 {
 $esxhost.hardware.Numainfo.numanode | Select @{N="ESX";E={$esxhost.name}},TypeId,@{N="Capacity(GB)";E={$_.MemoryRangeLength / 1073741824.}}
 }) | export-csv -Delimiter ";" $path\numa_$vcserver.csv

 

Pour l’exécuter sur un ESXi en particulier, vous pouvez lancer cette commande :


 

Pour les emplacements de votre barrettes mémoires. (Initialiser la fonction Get-VMHostWSManInstance avant d’exécuter le script).


Get-VMHostWSManInstance -VMHost NOMDEVOTREESX -class CIM_PhysicalMemory -ignoreCertFailures | Select ElementName, @{N="Capacity(GB)";E={$_.Capacity / 1073741824.}}, MaxMemorySpeed

memoryslot


 

Pour récupérer la taille des « numa nodes » :


(get-vmhost NOMDEVOTREESX | get-view ).hardware.Numainfo.numanode | Select TypeId,@{N="Capacity(GB)";E={$_.MemoryRangeLength / 1073741824.}}

numanode

 

Pour récupérer le script :  Audit_Memory

 

2 réflexions au sujet de « Powercli: Récupérer les informations Numa et mémoire d’un ESX »

  1. Bonjour, merci pour vos scripts, j’ai effectué un audit sur une infra VMware et cela aurait pu me faire gagner du temps.

    En revanche, vous écrivez « Pour l’exécuter sur un ESXi en particulier, vous pouvez lancer cette commande : »
    Et ensuite la commande n’est pas indiquée… Pouvez-vous nous dire comment effectuer ce script sur un ESXi en particulier ?

    Sinon lorsque j’exécute la commande pour récupérer la taille des « numa nodes », j’obtiens une erreur:

    get-vmhost : 29/07/2015 15:05:36 Get-VMHost You are not currently connected to any servers.
    Please connect first using a Connect cmdlet.
    Au caractère Ligne:1 : 2
    + (get-vmhost esxi92.corp.lan | get-view ).hardware.Numainfo.numanode | Select Typ …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : ResourceUnavailable: (:) [Get-VMHost], ViServerConnectionException
    + FullyQualifiedErrorId : Core_BaseCmdlet_NotConnectedError,VMware.VimAutomation.ViCore.Cmdlets.Com
    mands.GetVMHost

    Merci beaucoup.

    PS: votre site est super.

    • Bonjour Alexandre,

      Merci pour ton commentaire :).

      Sinon d’après l’erreur je me dis que tu n’es pas connecté à un host. Il faut avant que tu execute la commande connect-viserver NOM DE TON ESX ou vCENTER dans un powercli puis la commande suivante :

      (get-vmhost NOM DE TON ESX| get-view ).hardware.Numainfo.numanode | Select TypeId,@{N=’Capacity(GB)’;E={$_.MemoryRangeLength / 1073741824.}}

      Julien.

Laisser un commentaire