web-dev-qa-db-fra.com

Comment ajouter dynamiquement des éléments à des tableaux dans PowerShell?

Je n'ai pas encore beaucoup d'expérience PowerShell et j'essaie de m'enseigner au fur et à mesure.

J'essaie de faire du code de preuve de concept pour un plus gros projet. L'objectif principal ici est de créer et d'ajouter des éléments de manière trop dynamique à un tableau à l'aide d'une fonction.

Voici mon code:

$testArray = @()
function addToArray($Item1)
{
    $testArray += $Item1
    "###"
}

$tempArray = "123", "321", "453"
$foldertest = "testFolder"

foreach($item in $tempArray)
{
    addToArray $item
}
"###"

Chaque fois que la fonction se termine, le tableau devient vide. Gardez à l'esprit que la plupart de mon expérience de programmation vient de Java, PHP, certains C et C++ pour n'en nommer que quelques-uns, si je le faisais en PHP (ajustant la syntaxe du langage bien sûr), cela aurait a bien fonctionné.

17
LuckyFalkor
$testArray = [System.Collections.ArrayList]@()
$tempArray = "123", "321", "453"

foreach($item in $tempArray)
{
    $arrayID = $testArray.Add($item)
}
16

Le problème est de portée; à l'intérieur de votre fonction addToArray changez la ligne en ceci:

$script:testArray += $Item1

... pour stocker dans la variable de tableau que vous attendez.

13
Michael Sorens

Au lieu de recréer le tableau dans chaque itération de boucle (ce qui est essentiellement ce qui se passe chaque fois que vous y ajoutez), affectez le résultat de la boucle à une variable:

$testArray = foreach($item in $tempArray)
{
    addToArray $item
}
0
Shay Levy