BonsoirPowershell est Réanimation variables dans les scripts
J'ai ce problème avec cette version
PS C:\temp> $PSVersionTable.PSVersion.Major
4
Ce problème est vraiment étrange ... malgré des variables initialisées, le script PowerShell est en quelque sorte pouvoir réutiliser les valeurs de variables des invocations précédentes.
Le script est simple; pour montrer le problème, je travaille avec une liste des machines virtuelles:
- Lire toutes les machines virtuelles dans un tableau
- Sélectionnez le 1er élément du tableau
- Ajouter une nouvelle propriété à l'objet de l'étape 2
- Le problème: si j'exécute le script une seconde fois, la nouvelle propriété est déjà présente - malgré l'initialisation de toutes les variables. Si je lance le script dans une nouvelle session, la nouvelle propriété est manquante lors de la première exécution, après elle est déjà présente.
Voici le code simple:
Set-StrictMode -Version 2.0
# Read all Virtual Machines into an Array
$AllVMs = @()
$AllVMs = Get-VM
# Get the 1st Virtual Machine
$VM = $null
$VM = $AllVMs[0]
# Prepare my Property
$MyList = @()
$MyList += "Test"
# If the Property already exists, just add my List
if ($VM.PSobject.Properties.Name -match "MyList") {
$VM.MyList += $MyList
} else {
# My Property does not exist: create it
$VM | Add-Member –MemberType NoteProperty –Name MyList –Value ($MyList)
}
# Give Back my VM Object
$VM
Pour tester le script, je compte seulement le nombre de MyList-éléments:
PS C:\temp> $result = c:\temp\testvar.ps1
PS C:\temp> $result.MyList.Count
1
PS C:\temp> $result = c:\temp\testvar.ps1
PS C:\temp> $result.MyList.Count
2
…
Est-ce que Somone peut me aider avec ce problème?
Merci beaucoup pour toute aide !!
Cordialement, Tom
Qu'est-ce que ce retour de commande pour vous: '[Objet] :: ReferenceEquals ((Get-VM | Select-Objet -Premier 1), (Get-VM | Select-Object -First 1)) '? – PetSerAl