Windows
PowerShell es la "nueva" shell
de línea de comandos, que es más potente y fácil de ejecutar que el símbolo del sistema. Es realmente útil,
especialmente si te interesan las
tareas de automatización
o creación de scripts. Sin embargo, la mayoría de nosotros no
lo sabemos o preferimos usarlo en lugar del antiguo shell de línea de comandos.
Comandos de Windows PowerShell que debes conocer
En esta publicación, voy a compartir comandos útiles pero sencillos de Windows PowerShell. Puedes usar estos comandos para realizar numerosas tareas, desde obtener ayuda hasta iniciar procesos. ¿Empezamos?
Nota: Windows PowerShell está diseñado teniendo en
cuenta la compatibilidad con versiones anteriores y, por lo
tanto, admite muchos comandos del símbolo del sistema. Dicho esto, puedes
continuar usando los comandos antiguos en su nueva y colorida interfaz.
Si
eres nuevo en PowerShell, puedes tener problemas; y en tales situaciones,
Get-Help se convierte en tu salvador. Proporciona la información
necesaria sobre cmdlets, comandos, funciones, scripts y flujos de trabajo
de PowerShell.
Además,
es fácil: debes escribir Get-Help seguido del comando, del cual buscas los
detalles. Por ejemplo, puedes obtener información sobre el uso de “Get-Process” Get-Help Get-Process.
2. Get-Command
[gcm]
Windows
PowerShell permite descubrir sus comandos y funciones mediante
Get-Command. Muestra la lista de comandos de una función
específica o para un propósito específico en función de tu parámetro
de búsqueda.
Solo
necesitas escribir Get-Command
seguido de tu consulta de búsqueda en PowerShell. Por ejemplo, Get-Command *-service* muestra comandos
con “-service” en su nombre. Recuerda usar los asteriscos en ambos
lados de tu consulta porque es un comodín que ayuda a buscar lo
desconocido.
3. Invoke-Command
[icm]
Cuando
desees ejecutar un comando o una secuencia de comandos
de PowerShell, local o remotamente en una o varias computadoras,
“Invoke-Command” es tu amigo. Es fácil de usar y te ayuda a controlar las
computadoras por lotes.
Debes
escribir Invoke-Command seguido
del comando o la secuencia de comandos con tu ruta completa. Por ejemplo,
puedes ejecutar un comando “Get-EventLog” usando Invoke-Command
-ScriptBlock {Get-EventLog system -Newest
50} o en una computadora remota “Server01” usando Invoke-Command -ScriptBlock {Get-EventLog system -Newest 50}
-ComputerName Server01.
4. Invoke-Expression
[iex]
Invoke-Expression ejecuta
otro comando o expresión. Si proporcionas una expresión o una cadena
como entrada, este comando primero lo evalúa, luego lo ejecuta, pero también
funciona solo localmente, a diferencia del comando anterior.
Debes
escribir Invoke-Expression seguido
de un comando o una expresión. Por ejemplo, puedes asignar una variable
“$Command” con una cadena que indica el comando “Get-Process#. Cuando
ejecutas Invoke-Expression $Command,
“Get-Process” se ejecuta como un comando en tu computadora local.
5. Invoke-WebRequest
[iwr]
Puedes descargar,
iniciar sesión y obtener información sobre sitios web y servicios web
mientras trabajas en Windows PowerShell utilizando Invoke-WebRequest.
Debes
usarlo como Invoke-WebRequest seguido
de sus parámetros. Por ejemplo, puedes obtener los enlaces en una página
web determinada usando el comando como (Invoke-WebRequest
-Uri "https://docs.microsoft.com").Links.Href.
6. Set-ExecutionPolicy
Aunque
es posible crear y ejecutar scripts (con la extensión “ps1”) en Windows
PowerShell; Sin embargo, existen restricciones por motivos de
seguridad. Pero puedes cambiar el nivel de seguridad usando
el comando Set-ExecutionPolicy.
Puedes
escribir Set-ExecutionPolicy seguido
de uno de los cuatro niveles de seguridad: Restricted, Remote Signed,
All Signed, or Unrestricted para usar el comando. Por ejemplo, puedes
asignar el estado de la política restringida usando Set-ExecutionPolicy -ExecutionPolicy Restricted.
7. Get-Item
[gi]
Si
estás buscando información sobre un elemento en cualquier
ubicación, digamos un archivo en tu disco duro, Get-Item es la mejor manera de
adquirirlo en Windows PowerShell. Debes saber que no obtienes el
contenido del elemento, como archivos y subdirectorios en un directorio
determinado, a menos que lo especifiques explícitamente.
Debes
escribir Get-Item seguido de una
ruta o una cadena junto con sus parámetros, si los hay. Por ejemplo, puedes
obtener todos los elementos (archivos o carpetas) que comienzan con “M” en el
directorio actual usando Get-Item
M*. Junto con el contenido de los directorios, también puedes obtener
el contenido de las claves de registro.
8. Copy-Item
[copy]
Si
necesitas copiar archivos y directorios en tu disco de
almacenamiento o las entradas y claves del registro en el registro, puedes usar
Copy-Item. Funciona de manera similar al comando “cp” que tenemos en el símbolo
del sistema, pero es mucho mejor.
También
puedes utilizar el comando Copy-Item
para copiar y cambiar el nombre de los elementos en el mismo comando;
asígnale un nombre nuevo como destino. Por ejemplo, puedes copiar y
cambiar el nombre de "Services.htm" a “MyServices.txt” usando Copy-Item "C:\Services.htm"
-Destination "C:\MyData\MyServices.txt".
9. Remove-Item
[del]
Si
deseas eliminar elementos como archivos, carpetas, funciones, claves
y variables de registro, Remove-Item es el comando para ti. Lo que me
pareció interesante es que proporciona parámetros para incluir y excluir
elementos.
Puedes
utilizar el comando Remove-Item para eliminar
elementos de ubicaciones específicas utilizando parámetros. Por
ejemplo, puedes eliminar el archivo “MyServices.txt” con el comando Remove-Item
“C:\MyData\MyServices.txt”.
10. Get-Content [cat]
Cuando
necesitas ver el contenido de un archivo de texto en una ubicación específica,
lo abres y lo lee en un editor de texto como Notepad++. En
Windows PowerShell, puedes usar Get-Content para recuperar el contenido sin
abrir el archivo.
Por
ejemplo, puedes recuperar 50 líneas de contenido de “Services.htm”, luego puedes
usar Get-Content
"C:\Services.htm" -TotalCount 50.
11. Set-Content [sc]
Puedes
guardar texto en archivos usando Set-Content, similar al comando “echo”
de Bash Shell. En combinación con Get-Content, también puedes recuperar
el contenido de un archivo y copiarlo en otro archivo con este
comando.
Por
ejemplo, puedes escribir Set-Content
para escribir o reemplazar el contenido de un archivo con
contenido nuevo. Además, puedes agruparlo con el ejemplo del comando
anterior para guardar la salida en un nuevo archivo llamado “Sample.txt”
usando Get-Content “C:\Services.htm”
-TotalCount 50 | Set-Content “Sample.txt”.
12. Get-Variable [gv]
Si
estás buscando usar variables en Windows PowerShell, el comando Get-Variable te
ayuda a visualizar los valores de las variables. La muestra en
forma tabular y permite incluir, excluir y usar comodines.
Puedes
usar este comando escribiendo Get-Variable
seguido de sus opciones y parámetros. Por ejemplo, se puede recuperar el
valor de una variable llamada “desc” usando el siguiente código: Get-Variable -Name “desc”.
13.
Set-Variable [set]
Puedes asignar
o cambiar/restablecer el valor de una variable mediante el comando
Set-Variable. Como acceso directo, también puedes establecer una variable
simple utilizando el formato ${$ VarName = VarValue }$, como $desc
= “A Description”.
Puedes
utilizar el comando Set-Variable
seguido de sus parámetros para establecer una variable. Por ejemplo,
podemos establecer el valor de una variable llamada "desc" usando el
comando Set-Variable -Name
"desc" -Value "A Description".
14. Get-Process [gps]
Usualmente
usamos el Administrador
de tareas para encontrar los procesos en ejecución en nuestra
computadora. En Windows PowerShell, cualquiera puede usar Get-Process para obtener la lista de los
procesos actualmente en ejecución, que también puede procesar.
Puedes
escribir el comando Get-Process junto
con tu consulta de búsqueda. Por ejemplo, si necesitas información sobre
los procesos con “explore” en tu nombre, puedes escribir Get-Process *explore* (nótese los
asteriscos).
15. Start-Process [saps]
Windows
PowerShell facilita el inicio de uno o más procesos en tu
computadora. Descubrí que este comando es útil en las aplicaciones de
scripting, ya que es uno de los comandos imprescindibles que necesitarás para
automatizar una tarea.
Puedes escribir Start-Process seguido
de sus parámetros para usar el comando. Por ejemplo, puede iniciar el Bloc
de notas escribiendo Start-Process
-FilePath “notepad” -Verb runAs en Windows PowerShell.
16. Stop-Process [kill]
Puedes detener
las instancias específicas o todas las
instancias de un proceso que se ejecute en
tu computadora usando su nombre o PID (Id. De proceso), gracias al comando Stop-Process. Lo que lo hace
atractivo es que puede detectar si un proceso está detenido o no, e incluso
puedes detener los procesos que el usuario actual no ha iniciado.
Puedes
escribir el comando Stop-Process
seguido de sus parámetros para detener los procesos dados. Por ejemplo,
puedes detener todos los procesos de Bloc de notas con el comando Stop-Process -Name “notepad”.
17. Get-Service [gsv]
Cuando
necesites información sobre servicios específicos (en
ejecución o detenidos) en tu computadora, puedes usar Get-Service. Muestra
los servicios instalados en tu sistema y proporciona opciones para filtrarlos e
incluirlos y excluirlos.
Si
deseas utilizar este comando, puede escribir Get-Service seguido de sus parámetros. Por ejemplo, escribe lo
siguiente Get-Service | Where-Object
{$_.Status -eq "Running"} para que los servicios se “ejecuten” en
tu sistema.
18. Start-Service [sasv]
Si
deseas iniciar un servicio en tu computadora, el comando
Start-Service puede ayudarte a hacer lo mismo desde Windows
PowerShell. Descubrí que es lo suficientemente potente como para iniciar
un servicio, incluso si ese servicio está deshabilitado en tu computadora.
Debes
especificar el nombre del servicio mientras usas el
comando Start-Service. Por ejemplo, Start-Service -Name “WSearch” inicia el servicio “Búsqueda de
Windows” en tu computadora local.
19. Stop-Service [spsv]
Si
deseas detener los servicios que se ejecutan en tu
computadora, el comando Stop-Service será útil. Debes especificar el
nombre del servicio junto con Stop-Service. Por ejemplo, escribe Stop-Service -Name “WSearch” para
detener el servicio “Búsqueda de Windows” en su computadora.
20. ConvertTo-HTML
PowerShell
puede proporcionar información sorprendente sobre tu sistema. Sin embargo,
se presenta principalmente en un formato no digerible, pero puedes usar
ConvertTo-HTML para crear y formatear un informe para
analizarlo o enviarlo a alguien.
Puede
usar ConvertTo-HTMLjunto con la salida de otro. Por ejemplo, Get-Service | ConvertTo-HTML -Property Name,
Status > C:\Services.htm muestra la lista de todos los servicios y su
estado en forma de informe web, que se almacena en el archivo “Servicios.htm”.
Eso
es todo acerca de los comandos esenciales que
debes conocer de Windows PowerShell.