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
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.}}
Pour récupérer le script : Audit_Memory
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.