¿Busca una buena hoja de trucos de PowerShell? Entonces estás en el lugar correcto. He estado trabajando con PowerShell durante los últimos 10 años. Durante ese tiempo he escrito los cmdlets, operadores o comandos útiles más útiles en muchos lugares, solo para recordarles.
Pero ahora he pasado algún tiempo haciendo la mejor hoja de trucos de PowerShell. Este no es solo para principiantes, sino que también los usuarios avanzados aún encontrarán un gran valor en él.
En esta hoja de trucos, encontrará todos los operadores, consejos para trabajar con variables, declaraciones de control de flujo (if-else, bucles, etc.) y colecciones y hashtable. También he agregado el nuevo PowerShell 7y el.
Hoja de trucos de PowerShell Descargar
A su copia de la hoja de trucos, simplemente complete el formulario a continuación y recibirá una versión PDF que puede imprimir en su buzón.
La mayoría de los comandos también se explican en este sitio web, solo 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.
Bueno saber
La primera sección en la hoja contiene algunos comandos de saldo. Uno de mis comandos más utilizados es la función Mostrar todos los parámetros. Puedes hacer esto presionandoCtrl +Space
Después de haber escrito un cmdlet.
Para hacerlo aún más fácil, recomiendo agregar el siguiente comando a su. De esta manera, solo tiene que presionar TAB dos veces para ver todos los parámetros posibles.
Set-PSReadlineKeyHandler -Key Tab -Function Complete
También elGet-History
CMDLET Beats presionando 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, al igual que cualquier otro lenguaje de programación o secuencia de comandos que pueda usar. En la hoja, encontrará los más utilizados para su conveniencia. He agrupado las contrapartes de los operadores para ahorrar algo de espacio.
Operador | Descripción |
---|---|
$a += 5 o$a -= 5 | Agregar y asignar o restar y asignar |
$a *= 2 o$a /= 2 | Multiplicar y asignar o dividir y asignar |
2 -eq $a o2 -ne $a | Mayor o igual (variable en el lado derecho) |
$a -gt 2 o$a -lt 2 | Mayor o menos que |
2 -ge $a | Menor o igual (variable en el lado derecho) |
2 -le $a | Menor o igual (variable en el lado derecho) |
He escrito un artículo completo sobre, asegúrese de verificarlo si desea saber más.
Variables y objetos
Asignar variables es bastante sencilla, pero en PowerShell, hay algunos métodos convenientes para crear rápidamente un rango o asignar múltiples variables. Además, elpuede ser útil en algunas ocasiones. Pero tenga en cuenta que no use el alcance global para todo, a menudo hay una mejor manera.
Dominio | Descripción |
---|---|
$a = "Hello" | Asignar un valor a una variable |
$a, $b = "Hello","Bye" | Asignación de variables múltiples |
$range = 1..10 | Crear una matriz con una secuencia |
$_ | Obtener objeto de tubería actual |
$null | Valor nulo |
[type]$var | Declarado tipado (int, string) variable |
$global:var | Asignar variable en el alcance global |
Declaraciones de control de flujo
Las declaraciones de control de flujo le permiten controlar lo que su script debe hacer a continuación en función de ciertas condiciones. La declaración de control de flujo más comúnmente conocida es, por supuesto, la declaración IF-ELSE.
Además, else usan comúnmente y a menudo conocidos. Pero menos conocidos son el nuevo operador ternario y elque están disponibles en PowerShell 7.
Declaración | Descripción |
---|---|
if ($condition) { } else { } | Declaración simple if-else |
($x -gt 10) ? "High" : "Low" | Operador ternario para IF-else(PS7) |
switch ($var) { } | Instrucción de cambio |
for ($i=0; $i -lt 10; $i++) { } | Estándar para bucle |
foreach ($item in $collection) {} | Bucle para iterar colecciones |
while ($condition) { } | Mientras que el bucle con una condición |
$result = $value ?? "Default" | Asigna predeterminado si el valor es nulo(PS7) |
$value ??= DefaultValue | Asigna si es nulo(PS7) |
$result = ${object}?.Property | Propiedad de acceso si existe el objeto(PS7) |
$element = ${array}?[index] | Elemento de acceso si existe una matriz(PS7) |
Colecciones y hashtables
Cuando trabaja con conjuntos de datos, realmente no puede hacer sin una matriz, hashtable u objeto. En la hoja de trucos de PowerShell, encontrará todo lo que necesita crear, asignar o recuperar información de uno de los elementos de recopilación.
¿Sabía que los hashtables también son particularmente útiles cuando se trata de hacer que su código sea más legible? Con, podemos agrupar los parámetros de los cmdlets en una tabla agradable antes de asignarlos. Esto hace que sea mucho más fácil editar el valor de los parámetros, sin la necesidad de desplazamiento horizontal.
Dominio | Descripción |
---|---|
$array = @('item1', 'item2', 'item3') | Crear matriz con valor |
$array[index] | Elemento de matriz de acceso |
$array.Length | Obtener la longitud de la matriz |
$array.Add(item) | Agregar elemento a la matriz |
$array.Remove(item) | Eliminar el artículo de la matriz |
$hash = @{ key1 = 'value1'; key2 = 'value2'; } | Crear mesa hash |
$hash.key1 | Clave de hash de acceso |
$hash.key2 = 'new value' | Asignar valor a la clave hash |
$hash.Add('key3', 'value') | Agregar par de valores clave |
$hash.Remove('key2') | Eliminar el par de valores de llave |
$obj = [PSCustomObject]@{ Prop1 = 'Val1'; Prop2 = 'Val2' } | Objeto personalizado |
Entrada/salida
PowerShell también es excelente para exportar datos fuera de sistemas (por ejemplo, Microsoft 365) y generar informes. Los cmdlets de base que necesitará saber para esto se enumeran en la hoja. Pero si quieres saber más, asegúrate de ver también el.
Dominio | Descripción |
---|---|
$var = Read-Host | Leer la entrada del usuario |
Get-Content | Leer contenido de archivo |
Import-Csv | Importar desde el archivo CSV |
Export-Csv | Exportar al archivo CSV |
Write-Host "Hello" | Escribir en la consola |
Write-Host "$($obj.test)" | Escribe en la consola con propiedad OBJ |
$var | Out-GridView | Salida a la vista de cuadrícula interactiva |
Ejecución de scripts y procesamiento
Ejecutar un guión de PowerShell no es tan difícil. ¿Pero sabes cómo ejecutar un script en el alcance actual? O como tarea de fondo? La mayoría no usa estos métodos a diario, pero puede ser muy útil, por lo que los he enumerado en la hoja de trucos para su referencia.
Dominio | Descripción |
---|---|
Start-Process notepad | Iniciar proceso o aplicación externa |
Start-ThreadJob -ScriptBlock { Get-Process } | Ejecutar script o tarea en segundo plano |
. .\script.ps1 | Ejecute un script en el alcance actual (fuga de puntos) |
& .\script.ps1 | Ejecutar el script en un nuevo alcance (operador de llamadas) |
Tubería y formato
El carácter de la tubería en PowerShell le permite pasar resultados para el lado izquierdo a otro cmdlet o scriptblock en el lado derecho. De esta manera, no tiene que "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 genial verificar rápidamente la forma correcta utilizando el método de tubería.
Dominio | Descripción |
---|---|
Get-Process | Sort-Object -Property Name | Ordenar procesos por nombre |
Get-ChildItem *.txt | Where-Object {$_.Length -gt 1KB} | Filtrar archivos de texto más grandes que 1kb |
Get-Process | Select-Object -Property Name, ID, CPU | Seleccione el nombre del proceso, la identificación y el uso de la CPU |
Get-Process | ForEach-Object {$_.ProcessName} | Procesar cada elemento en la tubería |
Get-ChildItem | Format-List -Property Name, Length | Mostrar el nombre y la longitud del archivo en una lista |
Get-Process | Format-Table -Property ID, CPU -AutoSize | Mostrar procesos en una tabla con columnas de tamaño automático |
Concluir
Asegúrate de que tue imprimo para que pueda verificarlo rápidamente. Si le gusta la hoja, asegúrese de compartirla con sus colegas. Si no le gusta una 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.