Ir al contenido principal

Arreglos en Windows powershell

Que son los Arreglos en Windows PowerShell


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?

Imagen Arreglo
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.

Propiedades de un arrreglo
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:


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


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

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

Otros temas

Objetos en Windows PowerShell

Los Objetos en Windows PowerShell Vamos a empezar aclarando algunos conceptos básicos para poder entender más a fondo este tema. Primero   ¿Que son los Objetos o que entendemos cuando decimos que algo es un objeto? Una definición que podría darse es la siguiente: El objeto es algo sobre lo cual actúa el sujeto, está sometido a la acción de éste, y puede ser material, cuando se puede ver y tocar, o ser un objeto inmaterial si solo existente como idea. En programación es algo similar y se debe aclarar que un objeto no es un dato simple (o dato plano),  sino que contiene en su interior cierto número de componentes bien estructurados. Cada objeto no es un ente aislado, sino que forma parte de una organización jerárquica o de otro tipo. Un objeto es una pieza de software única que posee ciertas características (atributos o propiedades) y un comportamiento u operaciones previamente determinadas (métodos o funciones).Aclaremos esto: Atributos: estos son lo

Manejo de Variables en PowerShell

2 parte de Variables en Windows PowerShell Esta es la segunda parte del tutorial de donde vamos a ver un poco del manejo de las variables, como listarlas, eliminarlas y realizar algunas operaciones con ellas.  Como podemos ver todas las variables?   Tanto las que nosotros creamos como las que no la podemos listar con los siguientes comandos: Get-Variable o Dir   v ariable:    ("Dir" es un alias de Get-ChildItem) Otro ejemplo es  Dir   v ariable:  \prueb*  (Con esto listamos las variables que comiencen con los caracteres "prueb")   Con estos comandos podremos obtener una lista de todas las variables. Para obtener una lista de las variables de sistema podremos hacer esto Get-ChildItem  env:    (Lista de variables de entorno)   Por ejemplo: Windir, appdata, etc. Un punto a tener en cuenta al momento de crear una variable son es tas palabras que son de uso reservado y no se pueden utilizar como nombre de variables: Break continue do