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.
Le fichier texte "info.txt" ressemble a ceci :
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 }
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
Partager