Para entender posteriores tutoriales y poderlos utilizar sabiendo que
estamos haciendo vamos a hablar y sacarnos las principales dudas de los
arreglos / array en Windows PowerShell.
Podemos imaginarlo como una zona continua para almacenamiento de datos o
un conjunto de variables una detrás de la otra, pero en realidad es algo más
que eso, por lo cual veamos cómo se definen en general los arreglos tanto en
programación como en Windows PowerShell.
En Programación (En general)
Es un espacio de memoria que permite almacenar una
colección de elementos, todos del mismo tipo.
En PowerShell
Es una forma de almacenamiento de datos que permite
que más de un elemento sea almacenado en una variable (No es necesario que los
elementos sean del mismo tipo).
Veámoslo en una imagen
La siguiente imagen representa un espacio de
memoria (o “cero” en la imagen) al cual se le puede asignar contenido de datos,
luego de este espacio tenemos otro consecutivo. ¿Pero que hace diferente un
arreglo de un conjunto de variables?
Figura 1 - arreglo |
Lo que hace diferente un conjunto de variables de
un arreglo son sus propiedades, así como también podremos decir que los arreglos son un tipo variable. Entre ellas tenemos:
Índice: Cada uno de los espacios de memoria tiene asociado un número que la
identifico de manera única.
Tamaño/longitud: Es el número de casillas total que lo conforman. Si el tamaño es N, la
última casilla tiene índice N-1.
Figura 2 - propiedades de un arreglo |
En Windows Powershell vamos a considerar arreglo a
toda colección de objetos, ya sean escalares u otro tipo de objetos.
Los elementos de estas colecciones de objetos
pueden estar separados por comas, estar expresados por el operador de rango o
ser el resultado de alguna expresión que devuelva una colección, en las cuales
puede haber o no re-dirección.
Nota: Siempre que un comando devuelve más
de un resultado, en PowerShell se ajustará automáticamente los resultados en un
arreglo.
¿Qué es un arreglo y que no lo es?
Podemos comprobar si una variable es un arreglo o
no con los siguientes métodos:
$a =
"Hola"
$a -is
[Array]
False
$b =
123
$b -is
[Array]
False
$c =
"Hola Hola Hola Hola"
$c -is
[Array]
False
$z =
ipconfig
$z -is
[Array]
True
---------------------------------------------------------------------------------------------
Ahora una nota para los que quieran saber un poco mas:
Esto es un poco esa ayuda
DESCRIPCIÓN DETALLADA
Los operadores de tipo booleano(valores que representan verdadero o falso, si o no, -is y -isnot) indican si un objeto es una instancia de un tipo de .NET framework especificado. El operador -is devuelve el valor TRUE si el tipo coincide y el valor FALSE en caso contrario. El operador -isnot devuelve el valor FALSE si el tipo coincide y el valor TRUE en caso contrario.
Operadores
Operador "-IS"
"-is" es un operador de comparación de windows powershell, pueden saber mas de acerca de los operadores y de este en especial usando la siguiente ayuda:
get-help about_comparison_operators
get-help about_operators
get-help about_type_operators
DESCRIPCIÓN DETALLADA
Los operadores de tipo booleano(valores que representan verdadero o falso, si o no, -is y -isnot) indican si un objeto es una instancia de un tipo de .NET framework especificado. El operador -is devuelve el valor TRUE si el tipo coincide y el valor FALSE en caso contrario. El operador -isnot devuelve el valor FALSE si el tipo coincide y el valor TRUE en caso contrario.
Operadores
Y a modo de "ayuda rápida", les dejo esta tabla donde encontraremos mas tipos de operadores y una pequeña definición.
Operadores
|
|
Operadores
de asignación
|
|
=,
+=, -=, *=, /=, %=, ++, --
|
Asigna,
Quita uno o más valores a una variable.
|
Operadores
de comparación
|
|
-eq, -ne
|
Es igual, No es igual
|
-gt, -ge
|
Mayor que, Mayor o igual que
|
-lt, -le
|
Menor que, Menor o igual que
|
-like, -notlike
|
Es como, No es como (usa comodines)
|
-match, -notmatch
|
Busca una cadena usando expresiones regulares. Cuando la entrada es
escalar, rellena la variable automática
|
-contains, -notcontains
|
Contiene,
No contiene (coincidencia exacta)
|
-in, -notin
|
Aparece, No aparece en una colección de valores.
|
Operadores
de tipo
|
|
-is, isnot
|
Es, No es de un cierto tipo de objeto.
|
-as
|
Fuerza a tratar a un tipo de objeto como otro tipo de objeto.
|
---------------------------------------------------------------------------
Creando Arreglos especiales
Decimos que estos arreglos son especiales por que cumplen con condiciones no comunes, como la de no tenes elementos o la de tener uno solo.
1) Podemos crear un arreglo de un solo elemento de la siguiente manera:
$ArregloVacio = @()
2) Para crear un arreglo de un elemento solo basta con poner algo entre los paréntesis, si es un Int32 se lo coloca directamente, si es un string entre comillas ""
$ArregloUnElemento = @(1)
$Arreglo5 = @(53)
$Arregloprueba = @(53)
Si se cuenta la cantidad de elementos de las variables anteriores se podrá verificar lo siguiente:
$ArregloVacio.Count
0
$ArregloUnElemento.Count
1
$Arreglo5.Count
1
$Arregloprueba.Count
1
Y para estar seguros de que no es una variable cualquiera, y que realmente es un arreglo hacemos lo siguiente:
$Arreglo5 -is [Array]
True
Mas información de los arreglos
Como hemos dicho anteriormente siempre vamos a estar usando algunos cmdLets para conocer mas acerca de otros cmdLets y de otros tipos de objetos de Windows Powershell, es el caso de Get-Member que lo usaremos a continuación.
Pero veamos algo curioso, hacemos lo siguiente
$ArregloVacio = @()
$ArregloVacio | Get-Member
Obtendremos un error, ya que el arreglo esta vacío.
Debe especificar un objeto para el cmdlet Get-Member
En cambio cuando el arreglo ya tiene elementos podremos ver que tipos de elementos contiene , que métodos le podemos aplicar, o incluso si tiene disponible alguna propiedad o característica especial, como ya lo vimos en el uso de Get-Member.
$ArregloUnElemento = @(1)
$ArregloUnElemento | Get-Member
TypeName:
System.Int32
Name MemberType Definition
---- ---------- ----------
CompareTo Method
int CompareTo(System.Object value), int
...
...
Obteniendo las propiedades individuales de un arreglo
Demos un paso mas y veamos como vamos a trabajar con el contenido de un arreglo, vamos a elegir a Get-Alias para trabajar, ya que como digo mas arriba, "Siempre que un comando devuelve más de un resultado, en PowerShell se ajustará automáticamente los resultados en un arreglo." Este es el caso de
$Talias = (Get-Alias)
$Talias
$Talias[8] | Format-List *
En el primer paso asignamos el contenido de Get-Alias a la variable $Talias luego, en el segundo paso simplemente escribimos la variable para mostrar su contenido en pantalla, y luego en el tercer paso escribimos inmediatamente de la variable entre corchetes al indice al que queremos acceder en este caso al "8" quedando $Talias[8] (esto lo hacemos para acceder al elemento de indice 8 del arreglo), después de eso aplicamos el comando que queramos, en este caso, le damos formato de lista con todas sus propiedades.
Dejo un par de cosas mas para que las vean en el vídeo, por favor compartan el contenido, comenten y pongan si les gusto o no. También escríbanme que les gustaría poder hacer en Windows Powershell y porque están aprendiendo esto. Sin mas les dejo el vídeo.
---------------------------------------------------------------------------------------------
Mas información de Sort-Object
Como prometo al final del vídeo les dejo un poco mas de información acerca del cmdLet Sort-Object:
El cmdlet Sort-Object organiza los objetos en orden ascendente o descendente según los valores de las propiedades del objeto.
Puede especificar una sola propiedad o varias propiedades (para ordenar según varias claves) y puede seleccionar una ordenación con o sin distinción entre mayúsculas y minúsculas. Asimismo, puede indicar a Sort-Object que muestre solo los objetos con un valor único para una propiedad concreta.
Como siempre esto lo obtuve con:
get-help Sort-Object