Bonjour tout le monde,

Voici mon problème, j’écris un script qui permet de récupérer les statistiques sur un vCenter. Dans un soucis de configuration et de simplicité sur le long terme, j'essaye d’accéder a des variables de manière dynamique.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
###Variables
$TabResult_Infos=@()
$TabInfos=@()
$File_Infos=Get-Content -Path C:\infos.txt
$VMs=Get-VM -Name * -WarningAction SilentlyContinue
foreach ($Info in $File_Infos){
	$TabInfos+=$Info
}
$Object=$TabInfos
#Region Init tab
	$Pso_Init = New-Object psobject
	ForEach ($Line in $Object){
		Add-Member -Value "Init" -Name $Line -MemberType NoteProperty -InputObject $Pso_Init
	}
	$TabResult_Infos+=$Pso_Init
#EndRegion
# Variable pour la barre de progression
$i=0
$incre=100/$VMs.Count

foreach ($VM in $VMs){
	$i=$i+$incre
	Write-Progress -Activity "Récupération des données ..." -CurrentOperation $VM.Name -PercentComplete $i -Status "En cours "
	
	###Creation du tableau des infos générales
		$Pso_Infos = New-Object psobject
		foreach ($Info in $TabInfos){
			if ($Info -eq "DatastoreIdList"){
				switch (($VM.DatastoreIdList)[0]){
					"Datastore-datastore-2853" { Add-Member -Value "NFS-STO-001-PROD" -Name "DatastoreIdList" -MemberType NoteProperty -InputObject $Pso_Infos }
					"Datastore-datastore-2852" { Add-Member -Value "NFS-STO-002-PROD" -Name "DatastoreIdList" -MemberType NoteProperty -InputObject $Pso_Infos }
					default { Add-Member -Value "Autres" -Name "DatastoreIdList" -MemberType NoteProperty -InputObject $Pso_Infos }
				}
			}
			else{
				Add-Member -Value $VM.$Info -Name $info -MemberType NoteProperty -InputObject $Pso_Infos
			}
		}	
		$Pso_Infos.Notes=$Pso_Infos.Notes -replace "\n",""
		$TabResult_Infos+=$Pso_Infos
}
Le fichier texte "info.txt" ressemble a ceci :
Name
DatastoreIdList
Folder
NumCpu
MemoryGB
PowerState
Guest.OSFullName
Guest.State


J'arrive a accéder aux propriétés qui sont directement en dessous de $VM, cependant les propriétés comme Guest.OSFullName ne sont pas accessible, je n'ai pas d'erreur, mais rien ne s'affiche.
>$Info="PowerState"
>$VM.$Info
>PoweredOn

>$Info="Guest.OSFullName"
>$VM.$Info
>


J'espère avoir été compréhensible !
D'avance Merci !

MB