Tabla de contenido
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.
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.
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.
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.