En esta guía básica aprenderás a utilizar Windows PowerShell desde cero. Realizaremos tareas sencillas y veremos algunos comandos prácticos.
¿Eres un administrador de Windows? ¿Quieres aprender a usar PowerShell de inmediato? Si es así, has venido al lugar correcto.
En este artículo te iniciarás en el maravilloso mundo de PowerShell, aprendiendo cómo realizar tareas sencillas con ciertos scripts para que tengas una base sólida sobre la cual puedas agregar habilidades para tu trabajo particular. ¡Empecemos! 🙂
1. Lo Básico en PowerShell
PowerShell utiliza una sintaxis uniforme para todos sus comandos; de hecho, los comandos de PowerShell se llaman cmdlets, porque son mucho más que simples acciones del estilo de DOS. Todos los cmdlets usan la siguiente sintaxis:
Verbo-Sutantivo (en inglés, por supuesto)
Puedes recordarlo fácilmente como “haz algo para” “esta cosa”. Por ejemplo, aquí hay tres cmdlets reales: (Todos los cmdlets siempre seguirán este formato)
- Set-ExecutionPolicy (Establecerá -set- una política de ejecución)
- Get-Service (Obtendrá -get- información sobre un servicio y lo que puede hacer)
- Show-Command (Mostrará -show- un comando o una lista de comandos)
Dígame que ha sido fácil por favor :’). Si es así, sigamos…
2. Cosas a tener en cuenta con PowerShell
Hay algunas cosas que debe recordar sobre el uso de PowerShell:
- PowerShell es case-insensitive, quiere decir que es insensible a MAYÚSCULAS, minúsculas, ComBinAdo – no importa. PowerShell simplemente lee el texto y realiza la acción que desea.
- Como los cmdlets de PowerShell siempre se formatean de forma coherente, puede encadenar esos cmdlets y sus resultados juntos y hacer cosas en secuencia. Por ejemplo, un cmdlet puede recuperar una lista de cosas, y usted puede enviar esa lista (la salida de ese primer comando) a un segundo comando, que luego también hace cosas. Esto puede seguir y seguir mientras lo necesite hasta que la tarea que desee esté completa.
- El resultado de un cmdlet de PowerShell siempre es un objeto .NET. Esto puede no significar mucho para usted en este momento, especialmente si usted no es un programador o no tiene experiencia en el desarrollo de software, pero a medida que aprenda más sobre el lenguaje PowerShell encontrará que aquí es donde reside parte del poder real de PowerShell.
- PowerShell funciona bien con sistemas locales pero también funciona muy bien con sistemas remotos. Con algunos cambios en la configuración de su máquina local y los sistemas remotos que desea administrar, puede ejecutar comandos en miles de máquinas a la vez. Este ha sido el objetivo de Bash y Perl antes de PowerShell, pero ahora Windows tiene un verdadero equivalente comando remoto de shell.
3. Explorando PowerShell
En una máquina donde tenga instalado PowerShell, ábralo y simplemente escriba lo siguiente:
get-command
Esto le dice a PowerShell que obtenga todos los cmdlets que conoce. Por lo general, PowerShell siempre enviará resultados a la pantalla. (Puede dirigir esto a un archivo, a otro cmdlet de PowerShell o usarlo de otra forma, pero por ahora solo tenemos una idea de lo que se puede hacer).
Deberías ver algo como esto:
Ese es el universo de PowerShell, al menos lo es para su máquina en este momento. Otros productos como Exchange, SharePoint, System Center y Office 365 tienen su propio conjunto de cmdlets que necesitaría importar para realizar sus tareas específicas del servicio, pero centrémonos en lo que sabe su máquina ahora.
¡Todavía hay muchos cmdlets! ¿Cuántos? Bueno, descubramos cómo hacer que PowerShell nos lo diga. ¿Recuerda cuando dije que el resultado de un cmdlet de PowerShell siempre es un objeto .NET? Bueno, todos estos objetos tienen propiedades, exactamente de la misma manera que los archivos de Windows tienen propiedades. Por ejemplo, cuando hace clic con el botón derecho en un archivo en el Explorador y hace clic en Propiedades, obtiene lo que equivale a un grupo de atributos y valores que describen el archivo: autor, ubicación, palabras clave, permisos, etc.
4. Propiedades de los objetos .NET
Bueno, los objetos .NET también tienen propiedades, y una de las propiedades que obtienes es la propiedad count. En su forma más simple, la propiedad count puede decirle la cantidad de cosas diferentes con las que está tratando: usuarios, buzones de correo, etc. Simplemente puede tomar el valor de la propiedad de recuento de cualquier salida del cmdlet adjuntando el cmdlet entre paréntesis, incluido un punto, y luego poniendo el nombre de la propiedad, count. Algo así:
(get-command).count
Cuando lo tipeé, obtuve una propiedad de recuento de 1,604. Su número puede ser diferente, dependiendo de las versiones de Windows y PowerShell que esté ejecutando. De momento no se preocupe por estas diferencias.
El recuento, tan simple como es, puede ser útil en todo tipo de situaciones. Por ejemplo, en las instalaciones de Exchange, puede obtener un recuento de cuántos buzones hay simplemente usando:
(get-mailbox).count
O tal vez tiene una implementación de Active Directory y desea saber cuántos usuarios hay en total. O saber cuántos eventos hay en un registro de eventos. Las posibilidades son infinitas, y muchas de las cosas que querrá hacer en PowerShell provienen de observar las propiedades de algo con lo que está tratando.
Seguro, me estarás preguntando ¿Cómo sé qué tipo de propiedades puede tener un objeto?. Bueno, siga leyendo…
5. Help me! al rescate
¿Las personas recuerdan todos los comandos, su sintaxis, las opciones de comando, los parámetros, etc.? Sí y no. PowerShell es un gran mundo de cmdlets, pero no se desespere: cada uno de ellos está completamente documentado con la ayuda incorporada. (nuevamente conocer un poco de inglés sería excelente).
Puede acceder a ella (la ayuda), utilizando un cmdlet llamado Get-Help. Para cualquier cmdlet, simplemente preceda al nombre del cmdlet con Get-Help y obtendrá un mundo de documentación.
El proceso de actualización solo tomará uno o dos minutos, pero luego utilizará la documentación más reciente. Es posible que desee ejecutar esto cada seis meses más o menos para asegurarse de que no se está perdiendo nada.
Veamos esto en acción. Volveremos a nuestro cmdlet get-command y pediremos ayuda:
Get-help get-command
6. Parámetros en PowerShell
Puede ver que el cmdlet get-command toma muchos parámetros. Si conoce el DOS en absoluto, recordará que los comandos de DOS tienen indicadores, como dir/s , que enumeran el contenido del directorio y luego todos los subdirectorios, o move /y para mover cosas sin que se requiera confirmar el movimiento. ¿verdad?
Estos parámetros de cmdlet actúan de la misma manera: afectan lo que hace el cmdlet. Puedes decirle a get-command que te dé:
- Solo ciertos tipos de comandos con –CommandType
- Comandos con cierta sintaxis usando –Syntax
- Todo usando –all
- Y así…
La mayoría de los cmdlets de PowerShell aceptarán parámetros. Raramente utilizará la salida predeterminada de un comando. Entonces, es importante saber dónde buscar para encontrar estos parámetros.
La parte de VÍNCULOS RELACIONADOS puede ser realmente útil; Aquí es donde puede encontrar los cmdlets de PowerShell relacionados con el mismo tema o área.
Por ejemplo, si estoy ejecutando get-eventlog porque quiero información sobre el registro de eventos, probablemente quiera hacer algo con esa información, por lo que ejecutar get-help get-eventlog me muestra (en la sección de VÍNCULOS RELACIONADOS) otros cmdlets que probablemente esté interesado en obtener más información.
7. Más Fácil Imposible: -examples
Saber cómo usar Windows PowerShell se pone cada vez más sencillo. El cmdlet get-help en sí tiene parámetros, y uno de los parámetros más útiles es el parámetro -examples. Esto enumera un grupo de cmdlets de ejemplo que usan parámetros en diversas formas y combinaciones, para que pueda ver los comandos en acción y crear sus propias versiones personalizadas de estos cmdlets en función de los ejemplos.
Inténtalo tú mismo. Ingrese:
get-help get-command -examples
Puede ver que los ejemplos están bien documentados y claros. Y estos están en todas partes en el universo de PowerShell.
8. Ejemplo Práctico en PowerShell
Aquí hemos cubierto solo los aspectos más básicos, pero hagamos algo práctico antes de hacerlo más extenso. Ya prepararé una guía y enviándole a su correo (suscríbase a nuestro boletín). Pero sigamos…
Dos cosas muy comunes que hace al administrar sistemas son encontrar procesos y matarlos. Puede utilizar el Administrador de tareas, o para un trabajo más detallado, puede usar el comando tasklist /svc del DOS para encontrar el ID del proceso para un servicio determinado y qué se está ejecutando, y luego usar el Administrador de tareas para eliminarlo. Con PowerShell, podemos hacer lo mismo.
- Detener procesos con el CMD: Estos son Comandos CMD que no Conocías y Deberías Usar
Digamos que, puramente hipotéticamente, por supuesto, tenemos un navegador cuyo nombre rima con Chromelon. No se comporta bien y absorbe una tonelada de memoria si la deja abierta durante la noche. (Como se mencionó, esto es absolutamente hipotético :p) Necesitamos encontrarlo y matarlo antes de que haga más daño.
Probablemente pueda adivinar cómo funcionarían los cmdlets para trabajar con procesos. Con Get-process obtendrá una lista de los procesos que se están ejecutando actualmente en su sistema, formateados como una tabla de forma predeterminada.
Sé que por get-help get-process que puedo especificar el nombre de un proceso que mostrará información solo sobre ese proceso:
Y estoy pensando que si get-process me proporciona la información sobre un proceso, entonces usando el formato de verbo-nombre, stop-process, detendría uno. ¿HA SIDO FÁCIL VERDAD (pero, … ajá ¡dígame de lo que se dio cuenta!)
9. Conclusión
Pero ahora me pide una identificación porque cuando ingresé el cmdlet stop-process, no le dije qué proceso detener. Podría desplazarme hacia arriba y buscar la ID en la tabla de resultados de get-process chrome. Parece que el proceso con ID 12692 está ocupando mucho tiempo de CPU, así que ingresaré 12692 y presionaré la tecla Intro.
En resumen, el caso práctico lo resumimos en:
Get-process
Get-process chrome
Stop-process 12692
Felicitaciones! Acabamos de utilizar Windows PowerShell para matar a un proceso que había salido mal. ¡Por favor, comparta este artículo con los demás! 🙂 Volveremos con PowerShell pronto…
- Encuentra más cosas sobre PowerShell: Cómo crear un Keylogger con PowerShell