La programación es necesaria para realizar tareas de forma automática y consiste en indicar ordenes al sistema, en PowerShell el conjunto de ordenes se puede realizar mediante scripts. Un script contiene un conjunto de comandos (cmdlets) y elementos de programación (bucles, condicionales, comparaciones, etc.) que se ejecutan sobre PowerShell y realizan alguna función.

Ahora podemos hacernos algunas preguntas relacionadas con lo que queremos hacer utilizando scripts:

  • ¿Cómo almacenar un valor de forma temporal?
  • ¿Cómo almacenar un valor de forma permanente?
  • ¿Cómo buscar una cadena?
  • ¿Cómo buscar una cadena que ha introducido el usuario?
  • ¿Cómo distinguir entre dos opciones?
  • ¿Cómo distinguir entre varias opciones?
  • ¿Cómo repetir algo?
  • ¿Cómo utilizar algo nuevamente y no queremos añadirlo al código?

Variables

El sistema operativo almacena valores temporales en memoria que desaparecen cuando se cierra el sistema operativo, en PowerShell se pueden utilizar datos y almacenarlos hasta que se cierra PowerShell.

En programación, las variables son espacios reservados en la memoria que, como su nombre indica, pueden cambiar de contenido a lo largo de la ejecución de un programa. Una variable corresponde a un área reservada en la memoria principal del ordenador.

Características de las variables:

  • Se almacenan valores temporales en memoria que desaparecen cuando se cierra PowerShell.
  • Almacenan información.
  • Se pueden almacenar números te todo tipo, letras, conjunto de letras.
  • Los datos con los que estamos trabajando también se pueden almacenar en el
    sistema de forma permanente.
  • Concepto de variable relacionado con almacenar datos durante un tiempo.
  • Datos que pueden ser introducidos por el usuario.
  • Datos que se pueden modificar mediante cálculos.
  • Datos que se pueden escribir.
  • Datos que se pueden dar formato.
  • Datos que residen en la memoria.

Ejemplo

Asignar un valor a una variable y mostrar el valor por pantalla


  • Constantes

En programación, una constante es un valor que no puede ser alterado/modificado durante la ejecución de un programa, únicamente puede ser leído.

Una constante corresponde a una longitud fija de un área reservada en la memoria principal del ordenador, donde el programa almacena valores fijos.

  • Ámbito

El ámbito de una variable (llamado “scope” en inglés) es la zona del programa en la que se define la variable.

  • Tipos

En PowerShell no es necesario establecer el tipo de dato aunque se puede hacer indicando el tipo de variable entre corchetes [ ]. Pero se puede hacer si se quiere.


Ejemplo

Crear una variable de tipo numérica y mostrar el valor por pantalla


Para ver el tipo de variable se utiliza el método


Ejemplo

Ver el tipo de las siguientes variables


Ejercicio

Crear una variable con el valor 20 indicando el tipo entero para una de las variables y el tipo carácter para la otra, después ver el contenido y comprobar el tipo después


  • Tipos simples

Numéricas

Variables que representan valores enteros.


Ejemplo

Declarar una variable numérica y mostrar su valor


Caracteres

Variables que representan valores tipo carácter.


Ejemplo

Declarar una variable de tipo carácter y mostrar su valor


Ejercicios

Mostrar todos los números del 0 al 9 como caracteres

Mostrar todas las letras minúsculas

Mostrar todas las letras mayúsculas

Mostrar todos los caracteres ASCII

Mostrar todos los caracteres Base64


Booleanos

Representan el valor verdadero (1) o falso (0).


Ejemplos

Mostrar los valores de los que dispone PowerShell de las variables de tipo booleano

Declarar una variable de tipo booleano


Fechas

Fechas también son un tipo de variable, las fechas sirven para saber en qué momento ocurrió algo en relación con el momento actual.

Cmdlet para mostrar la fecha del sistema

Parámetros y alias de los parámetros para el cmdlet Get-Date


Ejemplos

Mostrar la fecha actual

Mostrar año


La fecha del sistema se puede cambiar utilizando el cmdlet

Parámetros y alias de los parámetros para el cmdlet Set-Date


Ejemplo

Cambiar la fecha del sistema


A las fechas se les puede dar formato


Ejemplos

Mostrar la fecha con distintos formatos


Algunas operaciones que se pueden realizar sobre fechas son (métodos):


Ejemplos

Mostrar la fecha del día anterior (con y sin formato)

Mostrar las fechas de la semana pasada


Ejercicio

Calcular de forma aleatoria un día entre hoy y hace cinco años

Calcular el día de la semana para una fecha


Para crear una variable que representa un intervalo de tiempo se utiliza el cmdlet

Parámetros y alias de los parámetros para el cmdlet New-TimeSpan


Ejemplo

Mostrar el intervalo de tiempo entre dos fechas

Ver la diferencia horaria que hay entre España y Alemania


Arrays

Una zona de almacenamiento continuo, que contiene una serie de elementos del mismo tipo.

Los arrays pueden contener cualquier carácter, los arrays más utilizados son los arrays de números y de caracteres que se conocen como cadenas.

Arrays de números

Arrays que contienen números.

En PowerShell al crear un array de números se considera un tipo de dato string.


Ejemplo

Crear un array de números y mostrar el primer elemento


Arrays de caracteres

Arrays que contienen cualquier tipo de carácter y se denominan cadenas.


Ejemplos

Mostrar una cadena

Ver elementos de arrays de caracteres, extraer varios elementos


Ejercicios

Tratar arrays de caracteres

Mostrar cada uno de los elementos de un array de caracteres

Mostrar el valor entero de cada uno de los elementos de un array de caracteres

Incrementar en uno cada uno de los valores enteros que contiene un array de caracteres

Incrementar en uno cada uno de los valores enteros que contiene un array de caracteres y mostrar el valor como tipo carácter


Sobre las cadenas se pueden realizar varias operaciones, algunas operaciones que se pueden realizar en PowerShell son:

  • Concatenar

Ejemplo

Concatenar dos palabras


  • Determinar longitud

Ejemplo

Determinar la longitud de una cadena


  • Convertir en mayúsculas

Ejemplo

Convertir una cadena en mayúsculas

Convertir la primera letra de una palabra en mayúscula


  • Convertir en minúsculas

Ejemplo

Convertir una cadena en minúsculas


  • Reemplazar caracteres

Ejemplo

Remplazar caracteres en una palabra y una frase


Ejercicio

Eliminar caracteres que no sean alfabéticos y conservar los caracteres que tengan acentos


  • Partir cadenas

Ejemplo

Partir dos cadenas mediante una coma


Ejercicio

Dividir en grupos de cinco elementos una cadena


  • Eliminar espacios

Ejemplo

Eliminar espacios de una frase


  • Extraer elementos

Ejemplo

Extraer elementos de una palabra


Ejercicio

Reducir texto con puntos suspensivos


  • Insertar elementos

Ejemplo

Insertar un elemento en una posición de la una palabra


  • Eliminar elementos

Ejemplo

Eliminar elementos de una palabra


  • Determinar la primera posición de un carácter

Ejemplo

Determinar la posición de un carácter dentro de una palabra


  • Determinar la última posición de un carácter

Ejemplo

Determinar la última posición de un carácter dentro de una palabra


  • Determinar si el principio de una cadena coincide con una cadena

Ejemplo

Saber si el principio de una palabra comienza con un carácter


  • Determinar si el final de una cadena coincide con otra cadena

Ejemplo

Saber si el final de una palabra finaliza con un carácter


  • Determinar si un carácter está contenido en una cadena

Ejemplo

Saber si una cadena contiene un carácter


  • Buscar

Ejemplo

Buscar una cadena dentro de otra


  • Tipos complejos

Hash tables

Representa una colección de pares de clave y valor que se organizan por código hash de la clave.


Ejemplos

Crear una hash table sencilla y añadir un elemento después de iniciar la tabla

Crear una hash table con elementos, mostrar los elementos, el número de elementos y ordenar los elementos


Enumeraciones

Son un tipo de datos que permite que una variable sea un conjunto de constantes predefinidas.


Ejemplo

Crear una variable de tipo complejo con las principales ciudades del mundo


Ejercicios

Crear el juego de piedra, papel o tijera utilizando enumeraciones para las combinaciones posibles

Crear el juego de piedra, papel o tijera utilizando enumeraciones para las combinaciones posibles (versión reducida)


  • Variables de entorno

Son variables definidas por el sistema operativo y que contienen información sobre el sistema.

Para ver todas las variables de entorno se ejecuta el siguiente cmdlet

Se pueden crear variables de entorno de la siguiente forma

Para eliminar una variable de entorno hay que ejecutar el siguiente cmdlet junto con el nombre de la variable

Objetos

Los objetos, propiedades, métodos y eventos son las unidades básicas de la programación orientada a objetos. Un objeto es un elemento de una aplicación, que representa una instancia de una clase. Propiedades, métodos y eventos son las unidades de creación básicas de los objetos y constituyen sus miembros.

En PowerShell los cmdlets se tratan como objetos.


Ejemplo

Almacenar la ejecución de los cmdlets ls y ps y ver las propiedades y los métodos de cada variable


Algunas características de los objetos:

  • Un objeto representa una instancia de una clase.
  • Una propiedad es un atributo de un objeto que define una de las características del objeto, como tamaño, color o ubicación en pantalla, o un aspecto de su comportamiento.
  • Un método es una acción que un objeto puede realizar.
  • Un evento es una acción que un objeto reconoce, como hacer clic con el mouse (ratón) o presionar una tecla, y para el que puede escribir código para responder. Los eventos se producen como consecuencia de una acción del usuario o de código de programa, o bien pueden ser desencadenados por el sistema. También puede desarrollar eventos personalizados propios para que los generen sus objetos y los controlen otros objetos.

En PowerShell se pueden crear objetos y añadir propiedades y métodos a dichos objetos.

Crear un objeto

Añadir una propiedad a un objeto

Listar propiedades y métodos


Ejemplo

Crear un objeto coche con propiedades

Crear un objeto coche con propiedades y métodos


En PowerShell se pueden crear clases y de las clases crear objetos.

En las clases se pueden definir además de lo dicho anteriormente también se pueden crear constructores dentro de las clases.


Ejemplos

Crear una clase con un constructor

Crear el objeto para la clase creada

Otra forma de crear una clase y un objeto (sin constructor)

Crear una clase

Crear un objeto (dos posibilidades)


Los objetos en PowerShell se pueden sobrecargar, la sobrecarga se refiere a la posibilidad de tener dos o más funciones con el mismo nombre pero funcionalidad diferente. Es decir, dos o más funciones con el mismo nombre realizan acciones diferentes.


Ejemplo

Realizar sobrecargas en constructores de una clase


Ficheros

Las variables tienen el problema de ser temporales por eso necesitamos poder almacenar datos de forma permanente mediante los ficheros.

El cmdlet para crear archivos de texto

Parámetros y alias de los parámetros


Ejemplos

Almacenar contenido en un archivo de texto


El cmdlet para leer archivos de texto

Alias

Parámetros y alias de los parámetros


Ejemplo

Obtener el contenido de un archivo de texto

Obtener las dos primeras líneas de un fichero

Obtener las dos últimas líneas de un fichero

Leer el contenido de un fichero en decimal


Ejercicios

Leer el contenido de un fichero en ASCII y representarlo en decimal

Leer el contenido de un fichero en ASCII y representarlo en hexadecimal


Operaciones aritméticas

Con las variables se pueden realizar las siguientes operaciones aritméticas:

  • Sumar


Ejemplo

Sumar dos números


  • Restar


Ejemplo

Restar dos números


  • Multiplicar


Ejemplo

Multiplicar dos números


  • Dividir


Ejemplo

Dividir dos números


  • Resto


Ejemplo

Resto de la división de números


Ejercicio

Saber si un número es par o impar, pidiendo al usuario que introduzca el número con el cmdlet Read-Host


Conversiones entre sistemas numéricos

Se pueden realizar conversiones entre sistemas de numeración.

Los sistemas numéricos están compuestos por símbolos y por las normas utilizadas para interpretar estos símbolos. El sistema numérico que se usa más a menudo es el sistema numérico decimal, o de Base 10. El sistema numérico que se usa más a menudo es el sistema numérico decimal, o de Base 10. El sistema numérico de Base 10 usa diez símbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9. Estos símbolos se pueden combinar para representar todos los valores numéricos posibles.

Los ordenadores reconocen y procesan datos utilizando el sistema numérico binario, o de Base 2. El sistema numérico binario usa sólo dos símbolos, 0 y 1, en lugar de los diez símbolos que se utilizan en el sistema numérico decimal. La posición, o el lugar, que ocupa cada dígito de derecha a izquierda en el sistema numérico binario representa 2, el número de base, elevado a una potencia o exponente, comenzando desde 0. Estos valores posicionales son, de derecha a izquierda, 2 potencia 0, 2 potencia 1, 2 potencia 2, 2 potencia 3, 2 potencia 4, 2 potencia 5, 2 potencia 6 y 2 potencia 7, o sea, 1, 2, 4, 8, 16, 32, 64 y 128, respectivamente.

El inconveniente de la codificación binaria es que la representación de algunos números resulta muy larga. Por este motivo se utilizan otros sistemas de numeración que resulten más cómodos de escribir: el sistema octal y el sistema hexadecimal. Afortunadamente, resulta muy fácil convertir un número binario a octal o a hexadecimal.

Otro sistema utilizado es hexadecimal, el sistema hexadecimal usa dieciséis símbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E y F. Se utilizan los caracteres A, B, C, D, E y F representando las cantidades decimales 10, 11, 12, 13, 14 y 15 respectivamente, porque no hay dígitos mayores que 9 en el sistema decimal. Cada dígito tiene, naturalmente, un valor distinto dependiendo del lugar que ocupen. El valor de cada una de las posiciones viene determinado por las potencias de base 16.


Ejemplos

Convertir un número binario a decimal

Convertir un número decimal a binario

Convertir un número decimal a octal

Convertir un número decimal a hexadecimal


Operaciones lógicas

Las operaciones lógicas son expresiones matemáticas cuyo resultado es un valor booleano (verdadero o falso true o false), algunas expresiones lógicas que se pueden realizar en PowerShell son:

  • And

Tabla lógica del operador and

xyresultado
truetruetrue
truefalsefalse
falsetruefalse
falsefalsefalse

Ejemplos

Realizar operaciones con el operador lógico and


  • Or

Tabla lógica del operador or

xyresultado
truetruetrue
truefalsetrue
falsetruetrue
falsefalsefalse

Ejemplos

Realizar operaciones con el operador lógico or


  • Not

Tabla lógica del operador not

xresultado
truefalse
falsetrue

Ejemplos

Realizar operaciones con el operador lógico not


  • Operadores bit a bit

PowerShell admite los operadores bit a bit estándar, incluidos bitwise-AND (-bAnd), los operadores inclusivos y exclusivos bitwise-OR (-bOr y -bXor) y bitwise-NOT (-bNot).

bAnd Bitwise AND


Ejemplo

La estructura de bits del número 10 es 00001010 (basado en 1 byte) y la estructura de bits del número 3 es 00000011. Cuando se usa un operador AND bit a bit para comparar 10 y 3, se comparan los bits individuales de cada byte.

1010 (10)
0011 ( 3)
————– bAND
0010 ( 2)


bOr Bitwise OR (inclusive)


Ejemplo

En una operación OR bit a bit (inclusiva), el bit resultante se establece en 1 cuando uno de los bits de entrada o ambos son 1. El bit resultante se establece en 0 solo cuando ambos bits de entrada se establecen en 0.

1010 (10)
0011 ( 3)
————– bOR (inclusive)
1011 (11)


bXor Bitwise OR (exclusive)

Ejemplo

En una operación OR bit a bit (exclusiva), el bit resultante se establece en 1 solo si un bit de entrada es 1.

1010 (10)
0011 ( 3)
————– bXOR (exclusive)
1001 ( 9)


bNot Bitwise NOT

Ejemplo

El operador NOT bit a bit es un operador unario que genera el complemento binario del valor. Un bit 1 se establece en 0 y un bit 0 se establece en 1.

Por ejemplo, el complemento binario de 0 es -1, el mayor número entero sin signo (0xffffffff), y el complemento binario de -1 es 0.


Ejercicio

Poner a 1 el cuarto bit en una cadena de bits


También existen los desplazamientos lógicos (logical shifts). El desplazamiento lógico hacia la izquierda (left shift) y el desplazamiento lógico hacia la derecha (right shift). En el desplazamiento lógico los bits de un registro son desplazados (movidos) una o más posiciones hacia la derecha o hacia la izquierda. Los bit que salen del registro por un extremo se pierden y en el otro extremo del registro se rellena con un bit cero por cada bit desplazado.


Ejemplos

Operaciones de comparación

Algunas operaciones de comparación que se pueden realizar en PowerShell son:

  • eq (Equal to – Igual a)


Ejemplos

Realizar operaciones con el operador de comparación eq


  • lt (Less than – Menos que)


Ejemplos

Realizar operaciones con el operador de comparación lt


  • gt (Greater than – Más que)


Ejemplos

Realizar operaciones con el operador de comparación gt


  • ge (Greater than or Equal to – Mayor o igual a)


Ejemplos

Realizar operaciones con el operador de comparación ge


  • le (Less than or equal to – Menor o igual a)


Ejemplos

Realizar operaciones con el operador de comparación le


  • ne (Not equal to – No es igual a)


Ejemplos

Realizar operaciones con el operador de comparación ne


Sentencias condicionales

En programación, una sentencia condicional es una instrucción o grupo de instrucciones que se pueden ejecutar o no en función del valor de una condición, los tipos de sentencias condicionales son:

  • If


Ejemplo

Comprobar si un número es igual a otro utilizando if


  • Else


Ejemplo

Comprobar si un número es igual a otro utilizando else


  • ElseIf


Ejemplo

Comprobar si un número es igual a otro utilizando elseif


  • Switch


Ejemplos

Comprobar si un número es igual a otro utilizando switch

Clasificar un número entre rangos


Ejercicio

Conocer la relevancia de una búsqueda en Google


Sentencias de repetición

Una estructura de repetición o bucle nos permite ejecutar un numero de veces determinado una serie de instrucciones, los tipos de sentencias de repetición son:

  • Bucle While


Ejemplo

Mostrar los números de 1 a 10 utilizando el bucle while


  • Bucle Do-While


Ejemplos

Mostrar los números de 1 a 10 utilizando el bucle do-while


  • Bucle For


Ejemplos

Mostrar los números de 1 a 10 utilizando el bucle for


  • Bucle Foreach


Ejemplos

Mostrar los números de 1 a 10 utilizando el bucle foreach

Mostrar los números de 1 a 10 utilizando el bucle foreach abreviado


Ejercicios

Recorrer de distintas formas de 1 a 3 con Foreach


Funciones

Una función es un conjunto de líneas de código que realizan una tarea específica y puede retornar un valor.

Las funciones pueden tomar parámetros que modifiquen su funcionamiento.

Las funciones son utilizadas para descomponer grandes problemas en tareas simples y para implementar operaciones que son comúnmente utilizadas durante un programa y de esta manera reducir la cantidad de código.

Cuando una función es invocada se le pasa el control a la misma, una vez que esta finalizó con su tarea el control es devuelto al punto desde el cual la función fue llamada.

El esquema de una función:


Ejemplos

Pedir a un usuario su nombre y mostrarlo mediante una función

Hacer un login creando una función que comprueba un nombre de usuario y una contraseña

Hacer un login avanzado creando una función que comprueba un nombre de usuario y una contraseña