Desde el año 2006 Microsoft dispone de una línea de comandos mejorada que se denomina PowerShell (aunque los orígenes de PowerShell datan de años anteriores y el nombre del proyecto se conocía como MONAD), es más potente y rica que la consola de MS-DOS.

PowerShell es una línea de comandos con tecnología de scripting basada en tareas que proporciona a los administradores de tecnologías de la información (TI) un control integral y la posibilidad de automatizar las tareas de administración del sistema.

PowerShell se ha creado sobre .NET Framework, Common Language Runtime (CLR) y .NET Framework, y acepta y devuelve objetos de .NET.

Los comandos (cmdlets, se pronuncia command-let) de PowerShell son sencillos de recordar usan el sistema verbo-nombre para llamar a los cmdlets, los verbos y los nombres están en inglés.


Ejemplos

Algunos cmdlets de PowerShell


Características

Las principales características de PowerShell son:

  • Es un lenguaje de scripting.
  • Diseñado para administradores de sistemas.
  • Entorno interactivo y shell básica.
  • Basado en .NET.
  • Controlar y automatizar el sistemas operativo.
  • Permite controlar también aplicaciones de Windows.
  • Mejora de la antigua shell de Windows y elimina problemas antiguos.
  • Incorpora conceptos y ventajas de distintos entornos.
  • Realizar tareas de administración relacionadas con el registro, procesos, servicios, eventos, etc.
  • Gestión de WMI.
  • Diseño sencillo.
  • Orientación a objetos. Aunque los cmdlets se escriben como texto, se comportan como objetos.
  • Coherencia en los cmdlets, cada cmdlet se puede utilizar siempre de la misma forma. Si hay un cmdlet que ordena no es necesario añadir esa funcionalidad a un nuevo cmdlet.
  • Seguridad. Tiene sistemas que controlan la ejecución de scripts y así se evita la ejecución de scripts no deseados.
  • Se pueden administrar remotamente.
  • Los proveedores de Windows PowerShell permiten obtener acceso a almacenes de datos (como el Registro y el almacén de certificados) con la misma simplicidad con que se obtiene acceso al sistema de archivos.

Consola

El programa que sirve para ejecutar PowerShell se llama powershell.exe y la versión versión ISE (el entorno de script integrado) se llama powershell_ise.exe.

Versiones

Hay varias versiones de PowerShell, la última versión estable es la 5.


Ejemplo

Cmdlet que sirve para conocer la versión actual de PowerShell


Cmdlets

PowerShell tiene comandos que ayudan al usuario a realizar operaciones y obtener resultados, los comandos en PowerShell se conocen como cmdlets.

Los comandos en PowerShell se consideran objetos, el resultado a la hora de ejecutar un cmdlet no es un texto sino un objeto.

Cada cmdlet se puede utilizar por separado pero la principal potencia radica en enlazar varios cmdlets para realizar tareas complejas.

Hay cmdlets básicos y también se pueden crear nuevos.

Cmdlet que  sirve para listar todos los cmdlets soportados

Alias

Parámetros y alias de los parámetros

Descubrir cmdlets

Los cmdlets se pueden ejecutar y verificar el resultado de la ejecución para saber si se ha ejecutado correctamente o no.

Alias

Los usuarios pueden llamar a los cmdlets como ellos quieren.

Utilizar los nombres de los comandos de otras shells.

Mostrar todos los alias que hay en PowerShell


Ejemplo

El cmdlet que tiene el alias cls es


Los cmdlet tienen parámetros, también podemos utilizar alias de los parámetros con el siguiente cmdlet


Ejemplo

Ver los alias de los parámetros del cmdlet Get-Process


Ayuda

PowerShell dispone de ayuda para utilizar cmdlets, proveedores, funciones, scripts, etc.

Cmdlet de ayuda

Parámetros y alias de los parámetros

Ayuda detallada

Mostrar todo el contenido de la ayuda

Buscar ayuda online

Actualizar ayuda

Canalizaciones

Se realiza entre varios cmdlets, la salida de un segmento del cmdlet es la entrada de otro.

Es uno de los conceptos más útiles de PowerShell porque permite relaciones unos cmdlets con otros.

La canalización se produce con objetos y no con textos.


Ejemplo

Mostrar los procesos ordenador por nombre


Operaciones

Las operaciones que se pueden realizar con cmdlets son:

  • Seleccionar

Cmdlet

Alias

Parámetros y alias de los parámetros


Ejemplos

Seleccionar el nombre de los procesos que se están ejecutando

Seleccionar el nombre de los cinco primeros procesos que se están ejecutando


  • Agrupar

Cmdlet

Alias

Parámetros y alias de los parámetros


Ejemplo

Agrupar el nombre de los procesos que se están ejecutando


  • Ordenar

Cmdlet

Alias

Parámetros y alias de los parámetros


Ejemplos

Ordenar por el nombre los procesos que se están ejecutando

Ordenar procesos por nombre descendente y uso de CPU ascendente


  • Contar

Método en PowerShell


Ejemplo

Contar el número de procesos que se están ejecutando


  • Comparar

Cmdlet

Alias

Parámetros y alias de los parámetros


Ejemplo

Ver los nombres procesos que se están ejecutando en dos momentos distintos y comprar el resultado


  • Dar formato

Cmdlets

Alias

Parámetros y alias de los parámetros

Format-Custom

Format-Table

Format-List

Format-Wide


Ejemplo

Mostrar información sobre los procesos que se están ejecutando con distinto formato


  • Entrada y salida

Cmdlet

Parámetros y alias de los parámetros


Ejemplo

Guardar en un fichero la información sobre los procesos que se están ejecutando


  • Where

Cmdlet

Alias

Parámetros y alias de los parámetros


Ejemplo

Mostrar información sobre los procesos que se están ejecutando cuyo nombre sean “svchost”


  • Grid

Cmdlet

Alias

Parámetros y alias de los parámetros


Ejemplo

Enviar la salida a una tabla interactiva sobre los procesos que se están ejecutando


  • Measure

Cmdlet

Alias

Parámetros y alias de los parámetros


Ejemplo

Mostrar tamaños mínimo, máximo y medio de los conjuntos de trabajo de los procesos que se están ejecutado


Seguridad

PowerShell tiene mecanismos de seguridad.

Se puede cambiar la política de ejecución.

El cmdlet que sirve para ver el listado de la política de ejecución de secuencias de comandos de Windows PowerShell

Parámetros y alias de los parámetros

El cmdlet Get-ExecutionPolicy simplemente le indica en cuál de las cuatro políticas de ejecución (políticas que determinan cuáles son los scripts de Windows PowerShell, en su caso, se ejecutarán en su ordenador) se encuentra actualmente en la fuerza.

Las directivas de ejecución de Windows PowerShell se incluyen los siguientes:

  • Restricted (restringido) – No hay secuencias de comandos se pueden ejecutar. Windows PowerShell sólo se puede utilizar en modo interactivo.
  • AllSigned (todos firmados) – Sólo guiones firmados por un editor de confianza se pueden ejecutar.
  • RemoteSigned (firmados remotamente) – guiones descargados deben ser firmados por un editor de confianza antes de que se pueden ejecutar.
  • Unrestricted (sin restricción) – No hay restricciones de libre disposición; todos los scripts de Windows PowerShell se pueden ejecutar.

Para cambiar la política de ejecución se utiliza el cmdlet junto con la directiva de ejecución a la que se quiera cambiar

Parámetros y alias de los parámetros


Ejemplo

Cambiar la política de ejecución a Unrestricted (sin restricción)


Entorno de scripting integrado (ISE)

En PowerShell se puede escribir, ejecutar y probar scripts de maneras que no están disponibles en la consola de Windows PowerShell.

Escribir en la consola un script es tedioso, para escribir un script se hace desde el Entorno de scripting integrado.

El entorno de scripting integrado se utiliza para crear, ejecutar y depurar comandos o scripts, en definitiva es una mejora el símbolo de sistema.

El ISE agrega color de sintaxis, finalización con tabulación, IntelliSense, depuración visual y ayuda contextual.

El ISE permite ejecutar cmdlets en un panel de consola, pero también admite paneles que se pueden usar para ver simultáneamente el código fuente del script y otras herramientas que pueden conectarse al ISE. También puede abrir varias ventanas de script al mismo tiempo, lo cual es especialmente útil cuando se depura un script que usa las funciones definidas en otros scripts o módulos.

El editor tiene varias características:

  • Color de la sintaxis XML
  • Coincidencia de llaves
  • Vista Esquema
  • Editar texto con arrastrar y colocar
  • Zoom
  • Copia y pegado de texto enriquecido

Ejercicio

Cambiar el título de PowerShell mediante una alarma a la hora del desayuno