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 trucos, encontrará todos los operadores, consejos sobre cómo trabajar con variables, declaraciones de control de flujo (si-si no, bucles, etc.) y colecciones y tablas hash. También agregué el nuevo PowerShell 7.y el.

Para obtener su copia de la hoja de referencia, 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. Puedes hacer esto presionandoCtrl +Spacedespués de haber escrito un cmdlet.

Para hacerlo aún más fácil, recomiendo agregar el siguiente comando a su. De esta manera sólo tendrás que presionar Tab dos veces para ver todos los parámetros posibles.

Set-PSReadlineKeyHandler -Key Tab -Function Complete

También elGet-Historycmdlet 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.

OperadorDescripción
$a += 5 o$a -= 5Sumar y asignar o Restar y asignar
$a *= 2 o$a /= 2Multiplicar y asignar o Dividir y asignar
2 -eq $a o2 -ne $aMayor o igual que (variable del lado derecho)
$a -gt 2 o$a -lt 2Mayor o menor que
2 -ge $aMenor o igual (variable del lado derecho)
2 -le $aMenor que o Igual (variable en el lado derecho)

He escrito un artículo completo sobre, asegúrate de marcarlo 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, elpuede resultar útil en algunas ocasiones. Pero tenga en cuenta que no utilice el alcance global para todo; a menudo hay una manera mejor.

DominioDescripción
$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, else utilizan comúnmente y a menudo son bien conocidos. Pero menos conocidos son el nuevo operador ternario y elque están disponibles en PowerShell 7.

DeclaraciónDescripción
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}?.PropertyAcceder 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, realmente no se puede prescindir de una matriz, una tabla hash u 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, 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.

DominioDescripción
$array = @('item1', 'item2', 'item3')Crear matriz con valor
$array[index]Acceder al elemento de la matriz
$array.LengthObtener longitud de la matriz
$array += "itemAgregar elemento a la matriz
$array = $array | Where-Object { $_ -ne"artículo"}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 quieres saber más, asegúrate de consultar también el.

DominioDescripción
$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.

DominioDescripción
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.

DominioDescripció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úrate de quee imprímelo para que puedas comprobarlo 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.

Related Posts