Comandos de PowerShell: los 40 cmdlets más importantes
Los comandos de PowerShell son esenciales para un uso efectivo del shell. Estos cmdlets están estructurados lógicamente y se pueden personalizar con parámetros adicionales. En esta guía, te mostramos los 40 powershell commands más importantes para que puedas trabajar de forma óptima en tu sistema o red.
¿Qué son los comandos de PowerShell?
La PowerShell que viene preinstalada en los sistemas de Windows 7 en adelante permite introducir comandos de PowerShell para ser ejecutados por el sistema. A diferencia de los comandos cmd en la línea de comandos, PowerShell cuenta con su propio conjunto de cmdlets, que se componen de un verbo y un sustantivo separados por un guion. Además, los comandos de PowerShell se pueden detallar más utilizando parámetros opcionales, separados mediante un espacio. En la actualidad, no solo los administradores utilizan PowerShell, ya que la herramienta ofrece servicios muy valiosos para el ámbito del desarrollo. Aunque existen cientos de comandos de PowerShell preinstalados, aquí te presentamos los más importantes.
Los comandos de PowerShell más importantes
Los comandos de PowerShell te permiten llevar a cabo extensas tareas de administración con unas pocas entradas. A continuación, se encuentran los cmdlets que te serán más útiles. Los comandos que te vamos a mostrar proporcionan una visión general de la estructura completa de una red, hacen una lista de otros comandos de PowerShell, ayudan con las configuraciones de seguridad necesarias y generan análisis útiles. Aquí tienes algunos de los comandos de PowerShell más importantes:
1. Get-Module -All
Utiliza el comando Get-Module -All para obtener una visión general completa de todos los módulos de PowerShell que han sido importados a tu sistema.
Get-Module -All
shell2. Get-Command
El comando Get-Command te proporciona una lista completa de todos los comandos de PowerShell predefinidos disponibles. Utiliza Get-Command para conseguir una lista de todas las acciones posibles de manera ordenada y con una breve explicación de cada cmdlet. Esto se aplica tanto a los comandos predefinidos como a los que pueden estar disponibles tras la instalación de módulos adicionales.
Get-Command
shell3. Get-Help
La lista que proporciona Get-Command te ofrece una visión general, pero el cmdlet Get-Help te proporciona información más detallada sobre un comando específico y sus opciones. Get-Help accede a los archivos de ayuda que hay en tu PC y te proporciona toda la información disponible. Para hacer uso de esta función de ayuda, simplemente combina Get-Help con el comando cuya sintaxis quieras consultar.
Get-Help [[-Name] <String>] [-Path <String>] [-Category <String[]>] [-Component <String[]>] [-Functionality <String[]>] [-Role <String[]>] [-Examples] [<CommonParameters>]
shell4. Get-Process
En diversas situaciones, resulta beneficioso obtener rápidamente una visión general de todas las aplicaciones, programas y procesos actualmente en ejecución en tu sistema. Puedes obtener una visión general utilizando el comando Get-Process. Si lo introduces junto a una aplicación específica, obtendrás información detallada sobre la misma.
Get-Process
shell5. Get-Service
El comando Get-Service funciona de forma similar al cmdlet Get-Process. No obstante, se distingue en que Get-Service te ofrece información acerca de todos los servicios activos en tu sistema. Si solo quieres recibir información sobre un servicio particular o un tipo específico de servicio, basta con que especifiques tu solicitud.
Get-Service
shell6. Stop-Process
Puedes recurrir a diversos comandos de PowerShell para detener procesos directamente desde la línea de comandos. Una opción para ello es utilizar el comando Stop-Process. Introduce el nombre, ID u otros atributos del proceso que quieras detener, como se muestra a continuación:
Stop-Process -Name "nombredelproceso"
shellStop-Process -Id 3582 -Confirm -PassThru
shellPuedes solicitar confirmación de la ejecución del comando utilizando la opción –Confirm. A su vez, la opción -PassThru te permite solicitar la confirmación de que el proceso se ha detenido. Si no utilizas alguna de las dos opciones, no recibirás ninguna confirmación automáticamente.
7. ConvertTo-HTML
Obtener una representación clara y rápida es esencial, permite identificar posibles problemas o complicaciones lo antes posible. El comando ConvertTo-HTML convierte los resultados de los comandos de PowerShell en un archivo HTML y presenta toda la información de forma organizada, en un formato de columnas fácil de leer. Aquí tienes un ejemplo práctico que demuestra su eficacia:
Get-Command | ConvertTo-Html > c:\temp\AllCommands.html
shell8. ConvertTo-Xml
Si te surge la necesidad de representar un objeto específico en formato XML, puedes hacerlo con el comando ConvertTo-Xml. En el siguiente ejemplo, se muestra cómo el comando convierte la fecha actual en un formato XML:
Get-Date | ConvertTo-Xml
shell9. Where-Object
El comando Where-Object se emplea para filtrar los resultados de un cmdlet. Al ejecutar un comando, es común recibir una cantidad considerable de objetos, pero es probable que no se necesiten todos. Por ejemplo, si solo quieres ver los servicios creados o actualizados durante el año en curso, puedes ejecutar el siguiente comando:
Get-Service | Where-Object { $_.LastWriteTime -gt "01.01.2023" }
shell10. Get-History
Si quieres visualizar todos los comandos de PowerShell que has ejecutado durante una sesión, Get-History es el cmdlet que estás buscando. Get-History te permite obtener una lista completa de todos los comandos de PowerShell que has ejecutado:
Get-History
shellCon el siguiente comando solo recibirás los diez últimos comandos de PowerShell que has ejecutado:
Get-History -Count 10
shell11. Clear-History
Por supuesto, también tienes la opción de eliminar el historial de los comandos de PowerShell que has utilizado. Utiliza el cmdlet Clear-History si quieres eliminar todas las entradas:
Clear-History
shellSi solamente quieres eliminar determinados comandos de PowerShell, simplemente añade los parámetros correspondientes. El comando que se muestra a continuación elimina todos los comandos de PowerShell que contienen el término “Help” o terminan con el término “Syntax”.
Clear-History -Command *Help*, *Syntax
shell12. Add-History
También puedes añadir comandos de PowerShell a una sesión, lo que te permite volver a utilizarlos directamente en la próxima ocasión. El cmdlet que debes utilizar es Add-History.
Add-History
shell13. Out-File
Si quieres guardar en tu ordenador el resultado que obtienes de los comandos de PowerShell, utiliza el cmdlet Out-File. Out-File almacena los comandos de PowerShell en un archivo de texto sin formato en la ruta que determines.
Get-Process | Out-File -FilePath .\Process.txt
shell14. Copy-Item
En PowerShell, cuentas con la posibilidad de duplicar elementos y guardar la copia en otra ubicación. Para lograrlo, utiliza el comando Copy-Item y especifica también el directorio donde quieras guardar la copia. Funciona de la siguiente manera:
Copy-Item "C:\Carpeta1\Archivo.txt" -Destination "C:\Carpeta 2"
shell15. Get-ChildItem
Utiliza el comando Get-ChildItem para tener acceso a elementos de una o varias ubicaciones de almacenamiento. Get-ChildItem también muestra los elementos subordinados. De manera predeterminada, el comando muestra los atributos, la hora de la última modificación, el tamaño del archivo y el nombre del elemento. Si una ubicación de almacenamiento está vacía, no se visualizará nada.
Get-ChildItem -Path C:\Ejemplo
shellLos atributos se muestran bajo la categoría “Modo”. Aquí tienes las propiedades más comunes:
- a (archivo)
- d (directorio)
- h (oculto)
- l (enlace)
- r (solo lectura)
- s (sistema)
16. Set-AuthenticodeSignature
Utiliza el comando Set-AuthenticodeSignature para dotar de una firma Authenticode a tus archivos y así protegerlos. Sin embargo, ten en cuenta que Set-AuthenticodeSignature solo es efectivo en archivos compatibles con el Subject Interface Package (SIP).
$cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert
Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -Certificate $cert
shell17. Invoke-Item
Utiliza el comando Invoke-Item si quieres realizar una acción predeterminada en un archivo específico. El comando garantiza que, por ejemplo, un archivo ejecutable se ejecute directamente o que un archivo se abra en la aplicación correspondiente. En el ejemplo que tienes a continuación, el archivo se abriría en Microsoft Word por defecto:
Invoke-Item "C:\Test\Ejemplo.doc"
shell18. Start-Job
Existe un comando diseñado para iniciar tareas en segundo plano en tu ordenador local. Start-Job te permite ejecutar un comando específico en segundo plano, sin afectar a tu sesión actual.
Start-Job -ScriptBlock { Get-Process -Name pwsh }
shell- Tu propio servidor en un hardware dedicado
- Integración en el cloud y facturación por minuto
- Respaldados por procesadores Intel® Xeon® y AMD
Ejecutar acciones con comandos de PowerShell
Mientras que los comandos de PowerShell anteriores se centraban en ofrecer una visión general, también puedes realizar muchas acciones con los cmdlets adecuados, permitiéndote utilizar tu sistema de forma más productiva. Los siguientes comandos de PowerShell te serán útiles en tus tareas.
19. Clear-Content
El comando Clear-Content te permite eliminar el contenido de un elemento sin que el propio elemento se vea afectado. Un ejemplo de su aplicación sería un documento cuyo texto quieras eliminar, mientras conservas el archivo en sí de forma intacta. El comando sería el siguiente:
Clear-Content C:\Temp\Ejemplo.txt
shell20. ForEach-Object
El comando ForEach-Object te permite ejecutar una acción sobre cada elemento de una colección de objetos de entrada al mismo tiempo. En el siguiente ejemplo, dividimos tres números enteros de una matriz por 10:
10000, 1000, 100 | ForEach-Object -Process {$_/10}
1000
100
10
shell21. Compare-Object
Puedes utilizar el cmdlet Compare-Object para evitar tener que comparar diferentes conjuntos de objetos manualmente. El comando genera un informe que resalta las diferencias entre los conjuntos de objetos. El primer conjunto se considera el objeto de referencia, mientras que el segundo actúa como el objeto de comparación. Puedes especificar los criterios que quieres comparar. Si omites esta información, solo se compararán los resultados de las cadenas de caracteres. El resultado se presenta como elementos que solo están en el objeto de referencia (<==) y elementos que solo están en el objeto de comparación (==>).
En el siguiente ejemplo, el Documento1.txt contiene los valores Berlin, London y Paris, mientras que el Documento2.txt contiene los valores Berlin, Vienna y Amsterdam.
Compare-Object -ReferenceObject (Get-Content -Path C:\Test\Documento1.txt) -DifferenceObject (Get-Content -Path C:\Test\Documento2.txt)
InputObject SideIndicator
--------------- -----------------
Vienna ==>
Amsterdam ==>
London <==
Paris <==
shellLos elementos contenidos en ambos documentos (en este caso, “Berlin”) no se visualizan automáticamente de manera predeterminada.
22. New-Object
New-Object es uno de los comandos de PowerShell más útiles, te permite crear instancias de un framework .NET o de un Component Object Model (COM). Por ejemplo, si quieres crear un objeto System.Version en el constructor con la cadena “1.2.3.4”, el comando funciona de la siguiente manera:
New-Object -TypeName System.Version -ArgumentList "1.2.3.4"
shell23. Select-Object
Utiliza el comando Select-Object para seleccionar un objeto o un grupo de objetos que cumplan determinados parámetros, las cuales puedes definir tú mismo. Los parámetros que puedes especificar para este propósito son los siguientes:
- First
- Last
- Unique
- Skip
- Index
En el siguiente ejemplo, utilizamos los comandos Get-Process y Sort-Object de PowerShell para mostrar los tres procesos con mayor consumo de memoria en el momento que son ejecutados.
Get-Process | Sort-Object -Property WS | Select-Object -Last 3
shell24. Set-Alias
Los atajos de teclado de Windows ofrecen una forma más rápida de ejecutar determinadas acciones. Asimismo, PowerShell también ofrece esta opción. El cmdlet Set-Alias te permite definir un atajo de teclado para diversos comandos de PowerShell. En el siguiente ejemplo, creamos el alias “ci” para ejecutar el comando Get-ChildItem durante la sesión actual.
PS> Set-Alias -Name ci -Value Get-ChildItem
PS> Get-Alias -Name ci
shell25. Set-Location
Utiliza el comando Set-Location para cambiar la ubicación de almacenamiento predeterminada para tu trabajo. Las nuevas ubicaciones pueden ser directorios, subdirectorios, ubicaciones del registro o rutas de proveedores. En el siguiente ejemplo, definimos la unidad C: como la ubicación de almacenamiento actual:
PS C:\Windows\> Set-Location HKLM:\
PS HKLM:\> Set-Location C:
PS C:\Windows\>
shell26. Set-Service
Utiliza el cmdlet Set-Service para gestionar un servicio, ya sea para iniciarlo, detenerlo, pausarlo o cambiar sus propiedades. En el siguiente ejemplo, cambiamos el nombre de visualización de un servicio de “Nueva Workstation” a “Vieja Workstation”.
Set-Service -Name Nueva Workstation -DisplayName "Vieja Workstation"
shell27. Set-TimeZone
Utiliza el comando Set-TimeZone para cambiar la zona horaria de tu sistema. Si quieres configurar la Hora Universal Coordinada (UTC, por sus siglas en inglés) como la nueva zona horaria de tu sistema, utiliza el siguiente comando:
Set-TimeZone -Id "UTC"
shell28. Restart-Computer
Puedes reiniciar el sistema operativo de tu computadora local o de una computadora remota utilizando los comandos de PowerShell apropiados, como Restart-Computer. Aquí tienes la estructura del comando.
Para tu ordenador local:
Restart-Computer
shellPara otros ordenadores específicos en tu red:
Restart-Computer -ComputerName Server01, Server03
shell29. Restart-Service
Puedes utilizar el comando Restart-Service de PowerShell para detener y reiniciar un servicio. Por ejemplo, ejecuta el siguiente comando para reiniciar todos los servicios que empiecen por “Net”:
PS C:\> Restart-Service -DisplayName "net*"
shell30. Clear-RecycleBin
Es recomendable vaciar la papelera de reciclaje de forma periódica. Puedes vaciarla desde el PowerShell utilizando el comando Clear-RecycleBin.
Clear-RecycleBin
shell31. Get-ComputerInfo
El comando Get-ComputerInfo se utiliza para consultar información detallada sobre las propiedades del sistema y del sistema operativo.
Get-ComputerInfo
shell32. Move-Item
Existen varios comandos en PowerShell que te permiten mover un elemento de una ubicación a otra. Sin embargo, el comando más utilizado para ello es Move-Item. En el siguiente ejemplo, movemos el archivo “viejo.txt” de la unidad C: al directorio D:\Temp, al mismo tiempo que lo renombramos como “nuevo.txt”.
Move-Item -Path C:\viejo.txt -Destination D:\Temp\nuevo.txt
shellMonitorización y depuración con los comandos de PowerShell adecuados
Los comandos de PowerShell destinados a la monitorización y depuración del sistema son herramientas útiles, especialmente cuando se busca evaluar el rendimiento de una nueva red en condiciones realistas. A continuación, te mostramos los comandos de PowerShell que te pueden resultar útiles en estas situaciones.
33. Debug-Process
La depuración es un proceso importante para garantizar el correcto funcionamiento de todas las configuraciones y procesos. Para llevar a cabo este proceso, primero debes descargar y configurar los depuradores pertinentes. Luego puedes utilizar el comando Debug-Process. En el siguiente ejemplo, utilizamos un depurador para el proceso Explorer:
PS C:\> Debug-Process -Name "Explorer"
shellSi quieres depurar varios procesos simultáneamente, simplemente sepáralos mediante comas.
34. Enable-PSBreakpoint
El comando Enable-PSBreakpoint te permite activar puntos de interrupción (breakpoints) específicos. Técnicamente, al cmdlet Enable-PSBreakpoint se le asigna el valor “true”. Utiliza el siguiente comando de PowerShell para activar todos los puntos de interrupción de tu sesión actual:
Get-PSBreakpoint | Enable-PSBreakpoint
shellTambién puedes activar puedes activar puntos de interrupción utilizando sus ID específicos de la siguiente forma:
Enable-PSBreakpoint -ID 0, 3, 4
shell35. Disable-PSBreakpoint
El comando Disable-PSBreakpoint te permite desactivar los puntos de interrupción de PowerShell. Técnicamente, al comando Enable-PSBreakpoint se le asigna el valor “false”. Introduce el siguiente comando para desactivar un breakpoint con el ID 0:
Disable-PSBreakpoint -Id 0
shell36. Get-Counter
Cuando trabajas con dispositivos que ejecutan sistemas operativos Windows, puedes utilizar el comando Get-Counter para consultar tus datos de rendimiento desde el PowerShell. Puedes utilizar el comando tanto para tu ordenador local como para un ordenador remoto. En el siguiente ejemplo, consultamos los datos de rendimiento del ordenador local:
Get-Counter -ListSet *
shell37. Start-Sleep
En ciertas ocasiones, puede ser necesario pausar la ejecución de un script o una sesión, especialmente cuando el sistema está experimentando una sobrecarga. PowerShell dispone del comando Start-Sleep para este propósito, que te permite especificar el periodo de tiempo durante el cual las actividades se deben detener. En el siguiente ejemplo, la ejecución se detiene durante dos segundos.
Start-Sleep -Seconds 2
shell38. Test-Path
Utiliza el comando Test-Path para saber si un archivo existe o no. Introduce un archivo junto a su ruta y comprueba si el archivo realmente se encuentra en dicha ruta. Los resultados que puedes obtener son “True” o “False”.
Test-Path -Path "C:\Documents and Settings\Usuario"
False
shell39. Test-Connection
Puedes evaluar las conexiones en tu red mediante PowerShell utilizando el comando Test-Connection, el cual envía un paquete de solicitud de eco ICMP a los destinatarios que especifiques y espera una respuesta a través del Internet Control Message Protocol. En nuestro ejemplo, enviamos una solicitud al Server02 a través del protocolo IPv6.
Test-Connection -TargetName Server02 -IPv6
shell40. Get-WinEvent
Para visualizar uno o varios registros de eventos en PowerShell, puedes emplear varios comandos. Uno de los más prácticos es el cmdlet Get-WinEvent. Introduce el siguiente comando para ver todos los registros de tu equipo local:
Get-WinEvent -ListLog *
shell