2014-07-25 9 views
0

j'ai une variable de lot de A à Z.Comment ajouter des variables à un tableau

$a = "bike" 
$b = "car" 
$c = "road" 
... 
$z = "street" 

$array = @() 
97..122 | %{$array += "$"+[char]$_} 
$array 

Lorsque je tape $ tableau, il me retourne:

$a 
$b 
$c 
... 
$z 

Mais je veux obtenir les valeurs de ces variables, et non "$ a", etc.

+0

Qu'est-ce que vous essayez de faire exactement? Qu'est-ce que vous essayez d'accomplir? –

+0

Je veux juste avoir toutes ces variables dans un tableau unique. – expirat001

+0

Y at-il une raison spécifique pour laquelle vous utilisez les caractères uniques comme noms de variables? Cela signifie-t-il quelque chose dans votre contexte? –

Répondre

2

Je pense ce qu'il veut vraiment est d'ajouter le contenu de ces variables à son tableau, ce qui peut être fait avec Get-Variable en tant que tel:

$a = "bike" 
$b = "car" 
$c = "road" 
$array = @() 
97..99 | %{$array += Get-Variable -name ([char]$_) -ValueOnly} 
$array 
+0

Absolument! Merci! Je sais que c'est un mauvais moyen, mais je fais des comparaisons entre les "mauvaises" et les "bonnes" pratiques avec Measure-Command, etc. Je ne ferais jamais ça en production évidemment, c'est juste pour un but personnel. – expirat001

0

Vous pouvez utiliser Get-Variable pour accéder aux variables:

97..122 | %{$array += Get-Variable ([char]$_) -Value} 

Mais puis-je suggérer une approche différente? Au lieu de faire des dizaines de variables simples, pourquoi ne pas utiliser un hashtable? Quelque chose comme:

$table = @{ 
    "a" = "bike" 
    "b" = "car" 
    "c" = "road" 
    ... 
    "z" = "street" 
} 

Vous pouvez alors accéder aux valeurs par l'indexation:

$table["a"] # > "bike" 
$table["c"] # > "car" 

Chaque fois ont beaucoup de variables simples qui sont de la forme $var1, $var2, $var3 ou $vara, $varb, $varc vous devriez arrêtez et reconsidérez votre conception. Habituellement, vous pouvez rendre votre code beaucoup plus élégant en utilisant simplement un des conteneurs de PowerShell, comme un tableau ou une table de hachage, pour stocker les valeurs initialement.

+0

Merci pour votre réponse. Oui, cela fonctionne avec des tables de hachage, mais je voudrais conserver ma structure d'origine, je veux générer des variables de A à Z, puis les ajouter à un tableau et les lire. – expirat001

+0

@ expirat001 - Eh bien, voir mon edit ensuite. – iCodez

0

Essayez un hachage:

$Hash = @{ 
    a = "bike" 
    b = "car" 
    c = "road" 
... 
    z = "street" 
} 

vous donne $Hash Sortie:

Name       Value  
----       ----- 
c        road  
z        street  
b        car  
a        bike 

Est-ce ce que vous cherchez?

Questions connexes