La mejor hoja de referencia de PowerShell
¿Busca una buena hoja de referencia de PowerShell? Entonces estás en el lugar correcto. He estado trabajando con PowerShell durante los últimos 10 años. Durante ese tiempo, escribí los cmdlets, operadores o comandos más útiles en muchos lugares, solo para recordárselos.
Pero ahora he dedicado algo de tiempo a crear la mejor hoja de referencia de PowerShell. Este no es sólo para principiantes, sino que también los usuarios avanzados encontrarán un gran valor en él.
En esta hoja de referencia, encontrará todos los operadores, consejos sobre cómo trabajar con variables, declaraciones de control de flujo (if-else, bucles, etc.) y colecciones y tablas hash. También agregué los nuevos operadores ternarios de PowerShell 7 y los operadores de fusión nula.
Descarga de la hoja de referencia de PowerShell
Para obtener su copia de la hoja de trucos, simplemente complete el formulario a continuación y recibirá una versión en PDF que podrá imprimir en su buzón de correo.
La mayoría de los comandos también se explican en este sitio web, simplemente use la función de búsqueda en la esquina superior derecha para buscar rápidamente un comando en particular. También explicaré brevemente los diferentes elementos de este artículo para su referencia.
Es bueno saberlo
La primera sección de la hoja contiene algunos comandos que es bueno conocer. Uno de mis comandos más utilizados es la función de mostrar todos los parámetros. Puede hacerlo presionando Ctrl +Espacio después de haber escrito un cmdlet.
Para hacerlo aún más fácil, recomiendo agregar el siguiente comando a su perfil de PowerShell. De esta manera sólo tendrás que presionar Tab dos veces para ver todos los parámetros posibles.
Set-PSReadlineKeyHandler -Key Tab -Function CompleteAdemás, el cmdlet Get-History es mejor que presionar la tecla de flecha hacia arriba para encontrar el comando que usó hace un par de minutos. Asegúrate de probarlo.
Operadores
PowerShell tiene muchos operadores, como cualquier otro lenguaje de programación o scripting, que puedes usar. En la ficha encontrarás los más utilizados para tu comodidad. He agrupado las contrapartes de los operadores para ahorrar algo de espacio.
$a += 5or$a -= 5Sumar y asignar o Restar y asignar
$a *= 2or$a /= 2Multiplicar y asignar o Dividir y asignar
2 -eq $aor2 -ne $aMayor o igual que (variable del lado derecho)
$a -gt 2or$a -lt 2Mayor o menor que
2 -ge $aMenor o igual (variable del lado derecho)
-
2 -le $a Menor que o Igual (variable en el lado derecho)
He escrito un artículo completo sobre los operadores de PowerShell, asegúrate de consultarlo si quieres saber más.
Variables y objetos
Asignar variables es bastante sencillo, pero en PowerShell existen algunos métodos convenientes para crear rápidamente un rango o asignar múltiples variables. Además, los ámbitos de PowerShell pueden resultar útiles en algunas ocasiones. Pero tenga en cuenta que no utilice el alcance global para todo; a menudo hay una manera mejor.
$a = "Hello"Asignar un valor a una variable
$a, $b = "Hello","Bye"Asignación de múltiples variables
$range = 1..10Crear una matriz con una secuencia
$_Obtener el objeto de canalización actual
$nullvalor nulo
[type]$varVariable escrita declarada (int, cadena)
$global:varAsignar variable en alcance global
Declaraciones de control de flujo
Las declaraciones de control de flujo le permiten controlar lo que su secuencia de comandos debe hacer a continuación en función de determinadas condiciones. La declaración de control de flujo más comúnmente conocida es, por supuesto, la declaración if-else.
Además, los bucles For y ForEach se utilizan habitualmente y, a menudo, son muy conocidos. Pero menos conocidos son el nuevo operador Ternario y los operadores de fusión nula que están disponibles en PowerShell 7.
if ($condition) { } else { }Declaración simple If-Else
($x -gt 10) ? "High" : "Low"Operador ternario para if-else (PS7)
switch ($var) { }Declaración de cambio
for ($i=0; $i -lt 10; $i++) { }Estándar para bucle
foreach ($item in $collection) {}Bucle para iterar colecciones
while ($condition) { }Bucle while con una condición
$result = $value ?? "Default"Asigna valor predeterminado si el valor es nulo (PS7)
$value ??= DefaultValueAsigna si es nulo (PS7)
$result = ${object}?.PropertyAcceda a la propiedad si el objeto existe (PS7)
$element = ${array}?[index]Acceda al elemento si la matriz existe(PS7)
Colecciones y tablas hash
Cuando se trabaja con conjuntos de datos, no se puede prescindir de una matriz, una tabla hash o un objeto. En la hoja de referencia de PowerShell, encontrará todo lo que necesita para crear, asignar o recuperar información de uno de los elementos de la colección.
¿Sabías que las tablas hash también son particularmente útiles cuando se trata de hacer que tu código sea más legible? Con splatting, podemos agrupar los parámetros de los cmdlets en una bonita tabla antes de asignarlos. Esto hace que sea mucho más fácil editar el valor de los parámetros, sin necesidad de desplazamiento horizontal.
$array = @('item1', 'item2', 'item3')Crear matriz con valor
$array[index]Acceder al elemento de la matriz
$array.LengthObtener longitud de la matriz
$array.Add(item)Agregar elemento a la matriz
$array.Remove(item)Eliminar elemento de la matriz
$hash = @{
key1 = 'value1';
key2 = 'value2';}Crear tabla hash
$hash.key1Acceder a la clave hash
$hash.key2 = 'new value'Asignar valor a la clave hash
$hash.Add('key3', 'value')Agregar par clave-valor
$hash.Remove('key2')Eliminar par clave-valor
$obj = [PSCustomObject]@{
Prop1 = 'Val1';
Prop2 = 'Val2'}Objeto personalizado
Entrada/Salida
PowerShell también es excelente para exportar datos desde sistemas (por ejemplo, Microsoft 365) y generar informes. Los cmdlets básicos que necesitará conocer para esto se enumeran en la hoja. Pero si desea saber más, asegúrese de consultar también el módulo PowerShell Excel.
$var = Read-HostLeer la entrada del usuario
Get-ContentLeer el contenido del archivo
Import-CsvImportar desde archivo CSV
Export-CsvExportar a archivo CSV
Write-Host "Hello"Escribir en la consola
Write-Host "$($obj.test)"Escribir en la consola con la propiedad obj
$var | Out-GridViewSalida a vista de cuadrícula interactiva
Ejecución de scripts y procesamiento
Ejecutar un script de PowerShell no es tan difícil. ¿Pero sabes cómo ejecutar un script en el ámbito actual? ¿O como tarea en segundo plano? La mayoría no usa estos métodos a diario, pero pueden resultar muy útiles, por lo que los he enumerado en la hoja de trucos para su referencia.
Start-Process notepadIniciar proceso o aplicación externa
Start-ThreadJob -ScriptBlock {
Get-Process }Ejecutar script o tarea en segundo plano
. .\script.ps1Ejecutar un script en el alcance actual (punto de abastecimiento)
& .\script.ps1Ejecutar script en un nuevo alcance (llamar al operador)
Canalización y formato
El carácter de canalización en PowerShell le permite pasar resultados del lado izquierdo a otro cmdlet o bloque de script en el lado derecho. De esta manera, no es necesario "almacenar" los resultados en una variable y crear bucles para todo.
Los usuarios de PowerShell más experimentados conocen estos métodos, pero cuando eres bastante nuevo en PowerShell, es fantástico comprobar rápidamente la forma correcta utilizando el método de canalización.
Get-Process | Sort-Object -Property NameOrdenar procesos por nombre
Get-ChildItem *.txt | Where-Object {$_.Length -gt 1KB}Filtrar archivos de texto de más de 1 KB
Get-Process | Select-Object -Property Name, ID, CPUSeleccione el nombre del proceso, ID y uso de CPU
Get-Process | ForEach-Object {$_.ProcessName}Procesar cada elemento en el proceso
Get-ChildItem | Format-List -Property Name, LengthMostrar el nombre y la longitud del archivo en una lista
Get-Process | Format-Table -Property ID, CPU -AutoSizeMostrar procesos en una tabla con columnas de tamaño automático
Concluyendo
Asegúrese de descargar esta hoja de referencia de PowerShell e imprimirla para poder consultarla rápidamente. Si te gusta la hoja, asegúrate de compartirla con tus colegas. Si no le gusta la versión impresa, siempre puede marcar esta página, que contiene la misma información.
Si tiene alguna pregunta o conoce un comando que realmente necesita estar en la hoja, simplemente deje un comentario a continuación.