2011-01-19 14 views
5

Ejemplo1:¿Cuál es la sintaxis correcta para las matrices en powershell?

Nota 2: La coma se utiliza también por lo artículos separados en una matriz {0, -30}

Ejemplo 2:

para crear una matriz, creamos una variable y asignamos la matriz. Las matrices se indican con el símbolo "@". Vamos a tomar la discusión anterior y utilizar una matriz para conectarse a varias equipos remotos: $ strComputers = @ (“servidor 1", “servidor 2", “Server3")

Por lo tanto, cuál es la correcta o cuál es la diferencia ?

+1

{0, -30} no crea una array, crea un bloque de script. Sin embargo, es como una matriz que normalmente se imprime en el host, como puede ver si ejecuta: 'New-Object PSObject -Property @ {array = 'a', 'b', 'c'}' – Jaykul

Respuesta

13

Ejemplo 2 utiliza la sintaxis matriz fundido que permite que un único elemento, por ejemplo, para ser entendido como una matriz:

$myList = @("Hello") 

Esencialmente, permite que cualquier cosa entre el paréntesis a ser tratado como una matriz incluyendo la salida de otros comandos:

$myArray = "hello", "world", "again" 
:

$myArray = @(Get-Process Excel) 

Alternativamente, puede simplemente crear una matriz mediante la especificación de una lista separada por comas

(Las llaves no son necesarios)

+2

Usted debería agregar la explicación de que {} es un bloque de script y no una matriz, para responder completamente la pregunta. – Jaykul

+1

Además, '@()' se conoce como 'subexpresión de matriz '- * Windows PowerShell en acción * pg 119. :-). La segunda forma de arriba "hola", "mundo", "otra vez" es la forma "canónica" de crear una matriz. La subexpresión de matriz se usa generalmente para garantizar que el resultado de una expresión sea una matriz, ya sea una matriz vacía, de un solo elemento o de múltiples elementos. –

3

También puede alcanzar un único conjunto de elementos de la anteponiendo, operador de un único valor:

[PS] C:\>$a = ,"Hello World" 

[PS] C:\>$a.gettype() 


IsPublic IsSerial Name          BaseType 
-------- -------- ----          -------- 
True  True  Object[]         System.Array 


[PS] C:\>$a.count 

1 
+0

buen punto - Lo edité para sangrar el código para que se muestre como código (preformateado) en lugar de envolverlo de forma extraña. – Jaykul

Cuestiones relacionadas