¿Qué son las secuencias de comandos de Windows PowerShell?

Conclusiones clave

  • PowerShell es un lenguaje de programación que puede ayudar a automatizar tareas informáticas.
  • Los cmdlets son comandos de Powershell de una sola función. Puede ver los comandos disponibles con «Get-Command».
  • PowerShell está disponible en Windows, macOS y Linux.

PowerShell es un lenguaje de programación que puede ayudarle a automatizar tareas informáticas de forma sencilla y fiable. Descubra cómo usarlo para comenzar a crear scripts para su PC con Windows.

Descripción general de las secuencias de comandos de PowerShell

Para comenzar a crear scripts simples de PowerShell en Windows, necesitará saber tres cosas:

  • Cmdlets: comandos de función única.
  • Parámetros: especifique qué, cuándo, dónde y cómo de los cmdlets/comandos.
  • Pipeline: toma la salida de su cmdlet y sus parámetros y lo conecta a otros cmdlets y funciones.

Combinando los tres, puede crear scripts simples para ayudar a automatizar tareas.

A continuación se muestra un canal de ejemplo que muestra cómo se pueden combinar varios cmdlets para realizar una tarea:

Para ejecutar esta canalización en PowerShell, usaría algo como este comando:

 Get-Object Potato | Peel-Object | Chop-Object Chips| Cook-Object DeepFry `
  | Place-Object Bowl

Cmdlets en detalle

Como cualquier lenguaje de programación, PowerShell viene prediseñado con comandos para manipular objetos y realizar diversas tareas. Estos comandos fundamentales dentro de PowerShell se conocen como cmdlets.

Los cmdlets (pronunciados como command-lets) son comandos pequeños de una sola función que se utilizan en el entorno de PowerShell con la extensión .dll. Son piezas de código livianas que se ejecutan más rápido que las funciones debido a su naturaleza compilada.

  Cómo arreglar la desconexión de WiFi en el bloqueo en Windows 10

Hay miles de cmdlets disponibles en PowerShell. No es necesario aprenderlos todos. Puede comenzar aprendiendo algunos cmdlets básicos de PowerShell y luego seguir aprendiendo a medida que avanza en su viaje con las secuencias de comandos. Para ver los cmdlets que ya están instalados en su computadora, ejecute:

 Get-Command 

Si examina los resultados, notará que siguen una convención de nomenclatura de verbo y nombre. Esto facilita la comprensión de lo que hace un determinado cmdlet.

Por ejemplo, Get-Command ofrece una lista de comandos disponibles en PowerShell. Get-Process le proporciona los procesos que están actualmente activos y Copy-Item copia uno o más archivos en un directorio específico.

Los cmdlets también vienen con documentación extensa que incluye ejemplos, instrucciones de uso y explicaciones de su funcionalidad.

Para obtener más información sobre un cmdlet específico y cómo usarlo, ejecute:

 Get-Help <name-of-cmdlet> 

Parámetros de PowerShell explicados

Los cmdlets pueden aceptar parámetros para variar su comportamiento. Cuando ejecuta un cmdlet o una función, puede proporcionar valores de parámetros para especificar qué, cuándo, dónde y cómo se ejecuta cada comando de PowerShell.

Por ejemplo, Get-Process obtendrá una lista de todos los procesos activos dentro de su sistema operativo:

¿Pero qué pasa si sólo quieres obtener un proceso específico? Puede hacerlo utilizando parámetros. Por ejemplo, para obtener todos los procesos de Slack, puede usar el parámetro Nombre con el cmdlet Get-Process:

 Get-Process -Name Slack 

Luego verás solo aquellos procesos con el nombre «slack»:

Algunos parámetros son «posicionales», lo que significa que su nombre es opcional. En este caso, Get-Process -Name Slack y Get-Process Slack hacen lo mismo.

  Cómo usar un interruptor de línea de comandos en Windows 10

Cada cmdlet aceptará diferentes tipos de parámetros. Utilice el comando Get-Help para ver los parámetros aceptados de un cmdlet en la sección SYNTAX.

 Get-Help Get-Process 

Verá una lista de todas las formas posibles de ejecutar el cmdlet proporcionado:

En este caso, el cmdlet Get-Process acepta parámetros como Nombre, Id., Nombre de la computadora, Módulo, Información de versión de archivo y otros parámetros comunes. Los símbolos aquí significan:

Símbolo

Nombre

Significado

Blanco

El parámetro no acepta entrada

Guión

Indica el nombre del parámetro

<>

Soportes en ángulo

Marcador de posición para texto

[]

Soportes

Parámetro que puede aceptar uno o más valores.

{}

Tirantes

El parámetro acepta un conjunto de valores.

Los parámetros que aceptan entradas indicarán el tipo de datos que requieren, como una cadena, un número entero, un booleano o una fecha y hora. Por ejemplo, esto:

 Get-Process [[-Name] <string[]>] 

Significa que el parámetro Nombre acepta uno o más valores de cadena, mientras que esto:

 Get-Process -Id <int[]> 

Significa que el parámetro Id acepta uno o más valores enteros.

El ejemplo anterior de Get-Process utilizó el parámetro Nombre para limitar los resultados. Sin embargo, si desea limitarlo a un proceso aún más específico, puede usar el parámetro ID, que requiere un número entero como se indica en su sintaxis.

 Get-Process -Id 3016 

Entonces deberías ver solo un proceso en la lista:

Creando una canalización

PowerShell trata todos los datos como objetos. Para crear una secuencia de comandos, estos objetos fluyen a través de una serie de cmdlets o funciones conectadas por un símbolo de tubería ( | ). Elegir los cmdlets correctos y conectarlos en una secuencia lógica mediante la canalización es crucial para un script eficaz.

  Reciba una alerta cuando se lance una nueva compilación de Windows Insider

Supongamos que está creando una secuencia de comandos para ordenar y mostrar los cinco archivos que ocupan la mayor cantidad de espacio de almacenamiento en una carpeta. Hay formas más sólidas de crear un script de clasificación de archivos, pero la siguiente frase es fácil de entender:

Para hacer esto en PowerShell, use una canalización similar a esta:

 Get-ChildItem -Path "C:\Directory" -File | Sort-Object Length -Descending `
 | Select-Object -First 5 | Format-Table Name, Length -AutoSize

Guardar Pipeline como un script de PS1

Ahora que tenemos un proceso en funcionamiento, puede guardarlo como un archivo de script de PS1, para no tener que seguir escribiéndolo cada vez que lo use.

La forma más sencilla de crear un archivo PS1 es pegar el script en el Bloc de notas y guardar el archivo con la extensión .ps1.

Una vez que haya creado su archivo PS1, puede usarlo en PowerShell ejecutando ./ScriptName.ps1:

¡Felicidades! Ahora puede crear scripts de PowerShell PS1.

PowerShell también está disponible en Linux y macOS

PowerShell es uno de los mejores lenguajes de programación para principiantes que cualquiera puede aprender. Aunque PowerShell solo estaba limitado a Windows en el pasado, la versión actualizada de PowerShell ahora también está disponible en macOS y muchas distribuciones de Linux. Esto hace que PowerShell sea aún más atractivo, ya que puede transferir sus conocimientos desde Windows a otros sistemas operativos.