2012-06-21 9 views
14

Voglio creare una matrice di array in PowerShell.Come creare array di array in PowerShell?

$x = @(
    @(1,2,3), 
    @(4,5,6) 
) 

Funziona bene. Tuttavia, a volte ho un solo array nell'elenco di array. In tale situazione, PowerShell ignora una delle liste:

$x = @(
    @(1,2,3) 
) 

$x[0][0] # Should return 1 
Unable to index into an object of type System.Int32. 
At line:1 char:7 
+ $a[0][ <<<< 0] 
    + CategoryInfo   : InvalidOperation: (0:Int32) [], RuntimeException 
    + FullyQualifiedErrorId : CannotIndex 

Come si crea un array di array, è garantito rimanga come un array a due dimensioni, anche se l'array ha un solo elemento dell'array in esso?

risposta

29

Aggiunta di una forza virgola per creare una matrice:

$x = @(
    ,@(1,2,3) 
) 

modo semplice:

$x = ,(1,2,3) 
+1

Gli scioperi virgola magici di nuovo! Perché PowerShell non crea array senza virgola? – jumbo

+8

Un buon articolo sulla magia: http://blogs.msdn.com/b/powershell/archive/2007/01/23/array-literals-in-powershell.aspx. L'operatore virgola è l'operatore di costruzione di array in PowerShell –

+1

Ovviamente, per coerenza di sintassi, si spera che questo '@ (, @ (1,2,3), @ (4,5,6))' funzioni ... ma non ti dà quello che ti aspetti. Sospiro. –