http://esgeeks.com/?p=2746

En esta guía básica usted aprenderá 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í, usted ha venido al lugar correcto.

En este artículo lo iniciaré orientándolo al mundo de PowerShell, ayudándole a cómo realizar tareas sencillas con el lenguaje para que tenga una base sólida sobre la cual pueda agregar habilidades para su trabajo particular. ¡Empecemos! 🙂

Requisitos!

Un inglés básico, aunque no es indispensable. Si quieres aprender PowerShell, aprenderás algunos verbos en inglés muy comunes.

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:

PowerShell get-command

get-command en PowerShell

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
PowerShell (get-command).count

Ejecución de (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.

Consejo!

Cuando implemente por primera vez su sistema, es probable que desee ejecutar Update-Help, que descargará los últimos archivos de ayuda de PowerShell y lo instalará en su sistema. Asegúrese de ejecutar esto como administrador.
PowerShell Update-Help

Ejecución de Update-Help

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
PowerShell get-help get-command

Ejecución de 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.

Aprendiendo a usar PowerShell

Aprendiendo a usar PowerShell

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
get-help get-command -examples

Ejecución de 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.

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.

PowerShell Get-process

Ejecución de Get-process

Sé que por get-help get-process que puedo especificar el nombre de un proceso que mostrará información solo sobre ese proceso:

PowerShell get-process Chrome

Ejecución de get-process Chrome

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.

Cómo Usar PowerShell Deteniendo Procesos

Cómo usar Windows PowerShell: Deteniendo Procesos

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…

¡Mantente actualizado!

Suscríbete a nuestro boletín semanal...

Suscríbete a nuestro boletín electrónico para recibir artículos útiles y ofertas especiales. No te perderás absolutamente de nada!

Enviaremos solamente boletines al email y no compartiremos su email.