Powershell: Tutorial para principiantes

¿Qué es Windows PowerShell?

power shell

Windows PowerShell es un motor de automatización orientado a objetos y un lenguaje de scripts. Está diseñado principalmente para los administradores de sistemas. Ayuda a los profesionales de TI a controlar y automatizar la administración del sistema operativo Windows y otras aplicaciones.

Introdujo algunos conceptos nuevos y convincentes que te permiten extender los conocimientos que has adquirido y los scripts que has creado en los entornos de Windows Command Prompt y Windows Script Host.

Combina la flexibilidad de los scripts, la velocidad de la línea de comandos y el poder de una herramienta de administración basada en una interfaz gráfica de usuario. Te permite resolver problemas de manera eficiente ayudando al administrador del sistema a eliminar futuras horas de trabajo manual. Repasaremos todos los aspectos importantes que debe conocer para aprender a usar PowerShell.

Esta es una guía completa de PowerShell… ¡comencemos!

¿Por qué utilizar Powershell?

Aquí hay algunas razones importantes para usar Powershell:

  • Powershell ofrece una experiencia de línea de comandos bien integrada para el sistema de operaciones.
  • PowerShell permite un acceso completo a todos los tipos de datos en .NET framework.
  • Verificado por los administradores del sistema.
  • PowerShell es una forma simple de manipular los componentes del servidor y de la estación de trabajo.
  • Está dirigido a los administradores de sistemas creando una sintaxis más fácil.
  • PowerShell es más seguro que ejecutar VBScript u otros lenguajes de programación.

Historia de PowerShell

La primera versión 1.0 de PowerShell fue lanzada en 2006. Hoy, PowerShell está en la versión 5.1. Con el paso de los años y las versiones, las capacidades y ambientes de alojamiento de PowerShell crecieron significativamente.

Veamos las versiones de la historia de Powershell:

  • La versión 1 de PowerShell soportaba la administración local de Windows Server 2003.
  • PowerShell 2.0 se integró con Windows 7 y Windows Server 2008 R2. Esta versión admite el control remoto y mejora las capacidades de PowerShell como transacciones, trabajos en segundo plano, eventos, depuración, etc.
  • PowerShell 3.0 se lanzó como una parte interna del framework de administración de Windows. Se instaló en Windows 8 y Windows Server 2012. Puede agregar y programar trabajos, conectividad de sesión, carga automática de módulos, etc.
  • PowerShell 4.0 se envió con Windows 8.1 y Windows Server 2012 R2. En esta versión se agregó soporte para la configuración de estado deseada, depuración mejorada, diagnósticos de red.
  • PowerShell 5.0 fue liberado como parte interna del framework de administración 5 de Windows. Las características que ofrece esta versión son depuración remota, definiciones de clase, enumeraciones de .NET, etc.

Características de Powershell

  • PowerShell Remoting: PowerShell permite que los scripts y cmdlets sean invocados en una máquina remota.
  • Background Jobs : Te ayuda a invocar scripts o pipelines de forma asincrónica. Puedes ejecutar sus trabajos en la máquina local o en múltiples máquinas remotas.
  • Transactions : Habilita el cmdlet y permite a los desarrolladores ejecutarlo.
  • Evening: Este comando Powershell te ayuda a escuchar, reenviar y actuar sobre los eventos de gestión y del sistema.
  • Network File Transfer: Powershell ofrece soporte nativo para la transferencia prioritaria, asíncrona y acelerada de archivos entre máquinas usando la tecnología del Servicio de Transferencia Inteligente en Fondo ( Background Intelligent Transfer Service - BITS).

Cómo abrir PowerShell

PowerShell está preinstalado en todas las últimas versiones de Windows. Necesitamos ejecutar PowerShell, para eso debemos seguir los siguientes pasos:

Paso 1) Buscar PowerShell en Windows. Selecciónalo y haz clic.

powershell windows 10

RELACIONADO: 10 formas de abrir el Símbolo del sistema en Windows 10.

Paso 2) Se abre la ventana de PowerShell.

comandos de powershell

Cmdlet de PowerShell

Un cmdlet que también es llamado Command let es un comando ligero usado en el entorno de la ventana base de PowerShell. PowerShell invoca estos cmdlets en la línea de comandos. Puedes crear e invocar los cmdlets usando APIS de PowerShell.

Cmdlet vs. Comandos:

Los Cmdlets son diferentes de los comandos en otros ambientes de command-shell de las siguientes maneras:

  • Los Cmdlets son objetos de clase del .NET Framework. No pueden ser ejecutados por separado.
  • Los Cmdlets pueden construir desde tan solo una docena de líneas de código.
  • El análisis sintáctico, el formato de salida y la presentación de errores no son manejados por los cmdlets.
  • El proceso de Cmdlets funciona en los objetos. Así que el flujo de texto y los objetos no pueden ser pasados como salida para la canalización.
  • Los Cmdlets se basan en registros, ya que procesan un solo objeto a la vez.

La mayor parte de la funcionalidad de PowerShell viene de Cmdlet, que siempre está en formato de verbo-sustantivo y no en plural. Además, los objetos de retorno de Cmdlet no son texto. Un cmdlet es una serie de comandos, que es más de una línea, almacenados en un archivo de texto con una extensión .ps1.

Un cmdlet siempre consiste en un verbo y un sustantivo, separados por un guión. Algunos de los verbos principales que se usan para PowerShell, son:

  • Get - conseguir algo.
  • Start - Para ejecutar algo.
  • Out - Para la salida de algo.
  • Stop - Para detener algo que está corriendo.
  • Set - Para definir algo.
  • New - Para crear algo.

Comandos PowerShell

A continuación hay una lista de comandos importantes de PowerShell:

Get-Help: Ayuda sobre los comandos y temas de PowerShell.

Ejemplo: Mostrar información de ayuda sobre el comando Format-Table.

Get-Help Format-Table 
powershell windows

Get-Command: Obtener información sobre cualquier cosa que pueda ser invocada.

Ejemplo: Para generar una lista de cmdlets, funciones instaladas en tu máquina.

Get-Command
comandos basicos

Get-Service: Encuentra todos los cmdlets con la palabra "servicio" en él.

Ejemplo: Consigue todos los servicios que empiezan con "vm".

Get-Service "vm*"
powershell windows

Get- Member: Mostrar lo que se puede hacer con un objeto.

Ejemplo: Conseguir miembros de los procesos de vm.

Get-Service "vm*" | Get-Member
microsoft powershell

Otros comandos:

  • Get Module: muestra paquetes de comandos.
  • Get Content: Este cmdlet puede tomar un archivo y procesar su contenido y hacer algo con él.
  • Get- get: Encuentra todos los cmdlets que empiezan con la palabra "get-".

Ejemplo: Crear una carpeta.

New-Item -Path 'C:\ComoFriki' -ItemType Directory

Salida

windows power shell

Variables especiales

Variable especial Descripción
$Error Un array de objetos de error que muestran los errores más recientes.
$Host Mostrar el nombre de la aplicación de hosting actual.
$Profile Almacena la ruta completa de un perfil de usuario para el shell por defecto.
$PID Almacena el identificador del proceso.
$PSUICulture Lleva el nombre de la UI Culture actual.
$NULL Contiene un valor vacío o NULL.
$False Contiene el valor FALSO.
$True Contiene el valor VERDADERO.

Scripts de PowerShell

Los Scripts de Powershell se almacenan en un archivo .ps1. De forma predeterminada, no se puede ejecutar un script con sólo hacer doble clic en el archivo. Esto protege tu sistema de daños accidentales. Para ejecutar un script:

Paso 1: haz clic derecho sobre el archivo del script y selecciona "Ejecutar con PowerShell".

comandos de powershell

Además, hay una política que restringe la ejecución del script. Puedes ver esta política ejecutando el comando Get-ExecutionPolicy.

powershell windows

Obtendrás una de las siguientes salidas:

  • Restricted - No se permiten los scripts. Esta es la configuración predeterminada, por lo que se mostrará por primera vez que ejecutes el comando.
  • AllSigned - Puedes ejecutar scripts firmados por un desarrollador de confianza. Con la ayuda de esta configuración, un script te pedirá confirmación de que quieres ejecutarlo antes de hacerlo.
  • RemoteSigned - Puedes ejecutar tus scripts firmados por un desarrollador de confianza.
  • Unrestricted - Puedes ejecutar cualquier script que desees.

Pasos para cambiar la política de ejecución:

Paso 1) Abrir una ventana de PowerShell con privilegios. Haz clic derecho en PowerShell y "Ejecutar como Administrador".

powershell que es

Paso 2) Introduce los siguientes comandos:

  1. Get-ExecutionPolicy.
  2. Set-executionpolicy unrestricted .
  3. Escriba "S" en el indicador.
  4. Get-ExecutionPolicy.
powershell

Primer Script de PowerShell

En un bloc de notas escribe el siguiente comando:

Write-Host "Hola, ComoFriki!"

Los scripts de PowerShell tienen una extensión ps1. Guarda el archivo como PrimerScript.ps1

powershell comandos

En Powershell, llama al script usando el comando:

& "C:\PrimerScript.ps1"
comandos de powershell

¿Qué es PowerShell ISE?

El entorno de scripts integrados de Windows PowerShell (ISE) es el editor predeterminado de Windows PowerShell. En este ISE, puedes ejecutar comandos, pruebas de escritura y depuración de scripts en una ventana base del entorno GUI. Puedes hacer edición multilínea, coloración de sintaxis, finalización de pestañas, ejecución selectiva y muchas otras cosas.

Windows PowerShell ISE también te permite ejecutar comandos por consola. Sin embargo, también admite paneles que puedes usar para ver simultáneamente el código fuente de tu script y otras herramientas que puedes conectar al ISE.

Incluso puedes abrir varias ventanas de script al mismo tiempo. Esto es específicamente útil cuando estás depurando un script que utiliza funciones definidas en otros scripts o módulos.

comandos cmd

El mismo script que creamos en el bloc de notas, puede ser creado en ISE, de la siguiente manera.

  1. Pegar el código en el editor. Write-Host "Hola, ComoFriki!"
  2. Guardar el script.
  3. Usa F5 para ejecutar el script.
  4. Observa la salida en la consola.
comandos de windows

Ejemplo 2:

El siguiente código te dará la Memoria Virtual Libre en tu máquina:

Get-WmiObject -Class Win32_OperatingSystem –ComputerName localhost |
Select-Object -Property CSName,FreeVirtualMemory 
power shell

Conceptos de PowerShell

Cmdlets Los Cmdlet son build-command escritos en lenguajes .net como VB o C#. Permiten a los desarrolladores extender el conjunto de cmdlets cargando y escribiendo los snap-ins de PowerShell.
FunctionsLas funciones son comandos que están escritos en el lenguaje de PowerShell. Pueden ser desarrolladas sin usar otros IDE como Visual Studio y devs.
ScriptsLos scripts son archivos de texto en el disco con una extensión .ps1.
ApplicationsLas aplicaciones son programas existentes de Windows.
What ifLe dice al cmdlet que no ejecute, sino que le diga qué pasaría si el cmdlet se ejecuta.
ConfirmInstruye al cmdlet para que pregunte antes de ejecutar el comando.
VerboseDa un mayor nivel de detalle.
DebugInstruye al cmdlet para que proporcione información de depuración.
ErrorActionInstruye al cmdlet para que realice una acción específica cuando ocurra un error. Las acciones permitidas continúan, se detienen, silenciosamente continúan y preguntan.
ErrorVariableEspecifica la variable que contiene la información de error.
OutVariableLe dice al cmdlet que use una variable específica para mantener la información de salida.
OutBufferInstruye al cmdlet para que retenga el número específico de objetos antes de llamar al siguiente cmdlet en la lista.

Ventajas de usar el script de PowerShell

  • Los scriptsde PowerShell son muy poderosos y permiten hacer muchas cosas en menos líneas.
  • Las variables se declaran en la forma $ <variable>.
  • Las variables podrían ser usadas para mantener la salida de los comandos, objetos y valores.
  • No es necesario especificar el "tipo" de una variable.

PowerShell Vs. Command Prompt

PowerShell Command Prompt
PowerShell se integra profundamente con el sistema operativo Windows. Ofrece una interfaz de línea de comandos interactiva y un lenguaje de scripts.Command Prompt es una interfaz de línea de comandos predeterminada que proporciona Microsoft. Es una simple aplicación win32 que puede interactuar y hablar con cualquier objeto win32 en el sistema operativo Windows.
PowerShell utiliza lo que se conoce como cmdlets. Puede ser invocado tanto en el entorno de ejecución como en los scripts de automatización.No se ofrecen tales características en la línea de comandos.
PowerShell los considera como objetos. Así que la salida puede pasar como entrada a otros cmdlets a través de la pipeline.Command Prompt o incluso el *nix shell, la salida generada por un cmdlet no es sólo un flujo de texto sino una colección de objetos.
El PowerShell es muy avanzado en cuanto a características, capacidades y funcionamiento interno.Command prompt es muy básico.

RELACIONADO: Lista de comandos CMD en Windows.

Aplicaciones de Powershell

Hoy en día, PowerShell se ha convertido en una opción ideal para los administradores de TI, ya que facilita la operación y el esfuerzo de gestión en las grandes redes corporativas. Por ejemplo, supongamos que usted está administrando una gran red que contiene más de cuatrocientos servidores. Ahora quiere implementar una nueva solución de seguridad. Esta solución de seguridad depende de un determinado servicio que debe ejecutarse en esos servidores.

Seguramente puede ingresar a cada servidor y ver si tienen ese servicio instalado y en funcionamiento o no. Sin embargo, ciertamente se necesitan muchos errores humanos ya que su personal necesita pasar mucho tiempo en este proceso no productivo.

Sin embargo, si utiliza PowerShell, entonces podría completar esta tarea en sólo unos minutos. Esto se debe a que toda la operación se realiza con un solo script que recoge información sobre los servicios que se ejecutan en los servidores.

Resumen

  • Windows PowerShell es un motor de automatización orientado a objetos y un lenguaje de scripts.
  • Powershell ofrece una experiencia de línea de mando bien integrada para el sistema de operaciones.
  • La primera versión 1.0 de PowerShell fue lanzada en 2006.
  • PowerShell permite que los scripts y cmdlets sean invocados en una máquina remota.
  • PowerShell está preinstalado en todas las últimas versiones de Windows.
  • Un cmdlet es un comando ligero usado la ventana base del entorno de PowerShell.
  • Get, Start, Out, Stop, Set, New son comandos importantes de PowerShell.
  • $Error. $Host, $Profile, $PID, $PSUICulture, $NULL son algunas de las variables especiales usadas en PowerShell.
  • El entorno de scripts integrados de Windows PowerShell (ISE) es el editor por defecto de PowerShell.
  • PowerShell se integra profundamente con el sistema operativo Windows, mientras que el Command Prompt es una interfaz de línea de comandos predeterminada que proporciona Microsoft.
  • PowerShell se ha convertido en una opción ideal para los administradores de TI, ya que facilita la operación y el esfuerzo de gestión en las grandes redes corporativas.