====== VMware print VM SCSI id ====== Powershell script # Connexion à vCenter # Remplacez "vcenter.vlab.local" par l'adresse de votre vCenter # Connect-VIServer -Server "vcenter.vlab.local" # --- Définition de la fonction pour collecter les données --- function Get-VMDiskInfo { param( [Parameter(Mandatory=$true)] [VMware.VimAutomation.ViCore.Impl.V1.Inventory.VirtualMachineImpl[]]$VMs ) $Report = @() foreach ($vm in $VMs) { # Récupère tous les contrôleurs de disque SCSI et les disques $Disks = Get-HardDisk -VM $vm foreach ($disk in $Disks) { # Extraction des informations clés $DiskController = $disk.Parent $SCSIController = $disk.ScsiController # L'adresse SCSI est composée du Bus (ou contrôleur) et du Unit Number (ou Target ID) # C'est l'équivalent du "Host:Bus:Target:LUN" pour les disques physiques ou du "Bus:Target:LUN" # C'est ce qui correspond au format type lsscsi [h:c:t:l] $SCSIAddress = "$($disk.ScsiController.BusNumber):$($disk.UnitNumber)" # Obtention du chemin du VMDK $VmdkPath = $disk.FileName # Création de l'objet de résultat $DiskInfo = [PSCustomObject]@{ VMName = $vm.Name DiskLabel = $disk.Name # ex: Hard Disk 1 SCSIAddressVMX = "scsi$VirtualDeviceNode" SCSIBus = $disk.ScsiController.BusNumber # ex: 0 ou 1 SCSIUnit = $disk.UnitNumber # ex: 0, 1, 2... SCSIAddress = $SCSIAddress # Format Bus:Unit (équivalent c:t:l) DiskSizeGB = [Math]::Round($disk.CapacityGB, 2) # Taille du disque en GB VmdkPath = $VmdkPath # Chemin complet du fichier VMDK ControllerType= $SCSIController.Type # Type de contrôleur (e.g., VirtualLsiLogicController) Persistence = $disk.Persistence # Type de persistance (e.g., Persistent) OS_Linux_Suggest = "/dev/sdX (Lsscsi: [0:$($disk.ScsiController.BusNumber):$($disk.UnitNumber):0])" OS_Windows_Hint = "Disque X (Location: Port $($disk.ScsiController.BusNumber), Target $($disk.UnitNumber))" } $Report += $DiskInfo } } return $Report } # --- Exécution et affichage des résultats --- # 1. Option A: Pour toutes les VMs de vCenter #$AllVMs = Get-VM #$Result = Get-VMDiskInfo -VMs $AllVMs # 2. Option B: Pour une seule VM (décommenter et remplacer le nom) # $SingleVM = Get-VM "NomDeVotreVM" # $Result = Get-VMDiskInfo -VMs $SingleVM # Affichage du résultat dans la console $Result | Format-Table -AutoSize # Exportation vers un fichier CSV (Optionnel) # $Result | Export-Csv -Path "C:\Temp\VM_Disk_Report.csv" -NoTypeInformation === Output: === "VMName","DiskLabel","SCSIAddressVMX","SCSIBus","SCSIUnit","DiskSizeGB","VmdkPath","OS_Linux_Suggest","OS_Windows_Hint" "web-prod-01","Hard Disk 1","scsi0:0","0","0","40.00","[datastore1] web-prod/web-prod.vmdk","/dev/sda (Lsscsi: [0:0:0:0])","Disque 0 (Location: Port 0, Target 0)" "web-prod-01","Hard Disk 2","scsi0:1","0","1","100.00","[datastore1] web-prod/web-prod_1.vmdk","/dev/sdb (Lsscsi: [0:0:1:0])","Disque 1 (Location: Port 0, Target 1)" ...