TUTOS.EU

Trouver une correspondance entre les disques VMWare et les disques Windows d'une VM

Comment trouver un lien entre un disque géré par Windows et celui présenté par VMWare

Lorsque vous devez ajouter de l'espace à un disque utilisé par Windows, que votre machine a plusieurs disques de la même taille et que vous devez trouver sur quel disque il faut ajouter de l'espace sous vCenter, il faut trouver un point commun.

La solution est d'utiliser le UUID affecté à chaque disque par VMWare. C'est UUID est reporté sous Windows au niveau du Serial Number du disque présenté à la VM.

Pour trouver le Serial Number de vos disques sous Windows, une solution simple est d'utiliser un VbScript qui exécutera une requête WMI.

Le vbscript :

strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_DiskDrive",,48)

MaLigne = ""
Wscript.Echo "SerialNumber" & VbTab & "DeviceID" & VbTab & "PNPDeviceID" & VbTab & "Caption" & VbTab & "Name"
For Each objItem in colItems
	MaLigne = objItem.SerialNumber & VbTab & objItem.DeviceID & VbTab & objItem.PNPDeviceID & VbTab & objItem.Caption & VbTab & objItem.Name
	Wscript.Echo MaLigne
Next
Lien vers le fichier : cliquez ici Copier le code

Le VbScript va sortir un tableau de vos disques Windows de ce type.
Le serial Number correspond au UUID du disque VMWare.
Dans la base WMI le PNPDeviceID correspond au Device Instance Path

En WMI le PNPDeviceID correspond au Device Instance Path que l'on retrouve dans les propriétés d'un disque

Le script Powershell permet de sortir ce résultat contenant le UUID des disques. Cette information permettra de croiser les informations avec celles données par le vbScript lancé directement sur la VM

Le script powershell

param ([string]$VIserver, [string]$VILogin, [string]$VIMotdepasse, [string]$vmname)

#Exemple d'utilisation
#.\Get-VMWinUUIDMap.ps1 -VIserver "NomVcenter.local" -VILogin "LoginVcenter" -vmname "NomVmAchecker"

Write-Host "vCenter : $VIserver"
Write-Host "Login pour vCenter : $VILogin"
Write-Host "Nom VM : $vmname"

$HostCred = $Host.UI.PromptForCredential("Please enter credentials", "Enter ESX host credentials for $ESXHost", "$VILogin", "")

function CheckVIToolKit()  
{  
    ## Before we do anything we must check to see if the user has the VI toolkit installed.  
    ## If user does not then we prompt the user and exit.  
    $Error.Clear()  
    Get-PSSnapin vmware*  
    if($Error.Count -ne 0)  
    {  
        Clear-Host  
        Write-Host "`n`n`t`t ERROR - To run this script, the VI Toolkit must be installed and registered with Powershell. If the VI Tollkit is installed," -foregroundcolor red -backgroundColor yellow  
        Write-Host "`t`t go to the Settings menu in Powershell Plus and click on Manage Snapins." -foregroundcolor red -backgroundColor yellow  
#        Read-Host  "`n`n`t Press <Enter> to continue."  
        break  
    }  
}## EOF: CheckVIToolKit()

$DebugPreference = "SilentlyContinue"
asnp vmware* #Import modules VMWares
$ErrorActionPreference = "Continue" 
if ($verbose) {$VerbosePreference = "Continue"}  
if ($debug) {$DebugPreference = "Continue"}

CheckVIToolKit
#Connect-VIServer -Server $VIserver -User $VILogin -Password $VIMotdepasse
Connect-VIServer -Server $VIserver -Credential $HostCred

if ($global:DefaultVIServer.ProductLine -ne "vpx"){Write-Host -ForegroundColor Red "You must be connected to a vCenter to run this script!";break}
if (!($vmdisks=(get-vm $vmname|get-view).Config.Hardware.Device|?{$_.Backing.Uuid}|%{$_|select @{n="VMlabel";e={$_.DeviceInfo.label}},@{n="VMFilename";e={$_.Backing.FileName}},@{n="UUID";e={($_.Backing.Uuid).replace("-","")}},@{n="VMSize";e={$_.CapacityInKB/1MB}}})){Write-Host -ForegroundColor Red "Not a valid VM!";break}

#Affichage des noms de colonnes
Write-Host "UUID`tVMlabel`tVMFilename`tVMSize"

foreach ($vmdisk in $vmdisks)
{

	$UneLigne = "$($vmdisk.UUID)`t$($vmdisk.VMlabel)`t$($vmdisk.VMFilename)`t$($vmdisk.VMSize)"
	Write-Host $UneLigne

}
Lien vers le fichier : cliquez ici Copier le code

Pages Web

Site WebDescription
Van-lieshout.comPost sur la problématique de comment interroger en WMI une VM sans passer par le réseau

Téléchargement(s)

NomSite Web d origineDescription
VMware-PowerCLI-5.1.0-793... https://my.vmware.com/fr/web/v... vSphere PowerCli


2