15Jul

Geek School: aprenda a automatizar Windows con PowerShell

click fraud protection

En esta edición de Geek School, le ayudaremos a comprender el poderoso lenguaje de scripting de PowerShell que está integrado en Windows, y es extremadamente útil para conocerlo en un entorno de TI.

Si bien esta serie no está estructurada en torno a un examen, aprender PowerShell es una de las cosas más importantes que puede hacer como administrador de red, de modo que si hay algo que desea aprender para ayudarlo en su carrera de TI, este es. Además, es muy divertido.

Introducción

PowerShell es la herramienta de automatización más poderosa que Microsoft tiene para ofrecer, y es tanto un shell como un lenguaje de scripting.

Tenga en cuenta que esta serie está basada en PowerShell 3, que se envía con Windows 8 y Server 2012. Si está ejecutando Windows 7, descargue la actualización de PowerShell 3 antes de continuar.

Conozca la consola y el ISE

Hay dos formas de interactuar con PowerShell de fábrica, la consola y el entorno de scripting integrado, también conocido como ISE.El ISE ha mejorado enormemente con respecto a la espantosa versión enviada con PowerShell 2 y se puede abrir presionando la combinación de teclado Win + R para que aparezca un cuadro de ejecución, luego escriba powershell_ise y presione enter.

instagram viewer

Como puede ver, el ISE tiene una vista dividida para que pueda realizar un guión rápido sin dejar de ver el resultado en la mitad inferior del ISE.La mitad inferior del ISE, donde se imprimen los resultados de su secuencia de comandos, también se puede utilizar como un indicador de REPL, al igual que el símbolo del sistema. El v3 ISE finalmente agregó soporte para intellisense tanto en el panel de scripts como en la consola interactiva.

Alternativamente, puede interactuar con PowerShell usando la consola PowerShell, que es lo que usaré para la mayor parte de esta serie. La consola de PowerShell se comporta de forma muy parecida a la solicitud de comando: simplemente ingresa comandos y arroja los resultados. Para abrir la consola de Windows PowerShell, nuevamente presione la combinación de teclado Win + R para abrir un cuadro de ejecución y escriba powershell y luego presione intro. Las solicitudes

REPL como este son impresionantes para la gratificación instantánea: ingresas un comando y obtienes resultados. Si bien la consola no ofrece intellisense, sí ofrece algo llamado completación de pestañas que funciona de manera muy similar: simplemente comience a escribir un comando y presione tab para recorrer las posibles coincidencias.

Uso del sistema de ayuda

En versiones anteriores de PowerShell, los archivos de ayuda se incluyeron cuando instaló Windows. Esta fue una buena solución en su mayor parte, pero nos dejó un problema importante. Cuando el equipo de ayuda de PowerShell tuvo que dejar de trabajar en los archivos de ayuda, los desarrolladores de PowerShell todavía estaban ocupados codificando y realizando cambios. Esto significaba que cuando se enviaba PowerShell, los archivos de ayuda eran incorrectos porque no contenían los cambios más nuevos que se habían realizado en el código. Para resolver este problema, PowerShell 3 viene sin archivos de ayuda e incluye un sistema de ayuda actualizable. Esto significa que antes de hacer cualquier cosa, querrá descargar los últimos archivos de ayuda. Puede hacerlo abriendo una consola de PowerShell y ejecutando:

Update-Help

¡Felicitaciones por ejecutar su primer comando de PowerShell! La verdad es que el comando Update-Help tiene muchas más opciones que simplemente ejecutarlo, y para verlas querremos ver la ayuda para el comando. Para ver la ayuda de un comando, simplemente pase el nombre del comando con el que desea ayuda al parámetro Name del comando Get-Help, por ejemplo:

Get-Help -Name Update-Help

Probablemente se esté preguntando cómo interpretartodo ese texto de todos modos, quiero decir ¿por qué hay dos montones de información en la sección de sintaxis y por qué hay tantos paréntesis por todas partes? Lo primero es lo primero: la razón por la que hay dos bloques de información en la sección de sintaxis es porque representan diferentes formas de ejecutar el comando. Estos se conocen técnicamente como conjuntos de parámetros y solo se pueden usar uno a la vez( no se pueden mezclar parámetros de diferentes conjuntos).En la captura de pantalla anterior, puede ver que el conjunto de parámetros superior tiene un parámetro SourcePath, mientras que el inferior no. La razón es que usaría el conjunto de parámetros superior( el que incluye Source Path) si estuviera actualizando sus archivos de ayuda desde otra máquina en su red que ya los había descargado, mientras que no necesitaría especificar una ruta de origen sisolo quería tomar los últimos archivos de Microsoft.

Para responder a la segunda pregunta, hay cierta sintaxis que siguen los archivos de ayuda y aquí está:

  • Los corchetes alrededor de un nombre de parámetro y su tipo significa que es un parámetro opcional y el comando funcionará perfectamente sin él.
  • Los corchetes alrededor del nombre de los parámetros significa que los parámetros son parámetros posicionales.
  • Lo que está a la derecha de un parámetro en los corchetes angulares indica el tipo de datos que espera el parámetro.

Si bien debe aprender a leer la sintaxis del archivo de ayuda, si alguna vez no está seguro acerca de un parámetro en particular solo agregue -Full al final de su comando get help y desplácese hacia abajo a la sección de parámetros, donde le contará un poco más acerca decada parámetro.

Get-Help -Name Update-Help -Full

Lo último que necesita saber sobre el sistema de ayuda es cómo puede usarlo para descubrir comandos, lo cual es realmente muy fácil. Verá, PowerShell acepta comodines en casi cualquier lugar, por lo que usarlos junto con el comando Get-Help le permite descubrir comandos fácilmente. Por ejemplo, estoy buscando comandos que se ocupen de los servicios de Windows:

Get-Help -Name * service *

Claro, toda esta información puede no ser útil para el bate, pero créanme, tómense el tiempo y aprendan cómo usarlael sistema de ayuda. Resulta útil todo el tiempo, incluso para los programadores avanzados que han estado haciendo esto durante años.

Security

Esta no sería una introducción adecuada sin mencionar la seguridad. La mayor preocupación para el equipo de PowerShell es que PowerShell se convierte en el último y más grande punto de ataque para los script kiddies. Han implementado algunas medidas de seguridad para asegurarse de que esto no ocurra, así que echémosle un vistazo.

La forma más básica de protección proviene del hecho de que la extensión de archivo PS1( la extensión utilizada para denotar una secuencia de comandos de PowerShell) no está registrada con un host de PowerShell, en realidad está registrada en el Bloc de notas. Eso significa que si hace doble clic en un archivo, se abrirá con el Bloc de notas en lugar de ejecutarse.

En segundo lugar, no puede ejecutar scripts desde el shell simplemente escribiendo el nombre del script, debe especificar la ruta completa del script. Entonces, si quisiera ejecutar una secuencia de comandos en su unidad C, debería escribir:

C: \ runme.ps1

O si ya está en la raíz de la unidad C, puede usar lo siguiente:

. \ Runme.ps1

Finalmente, PowerShell tiene algo llamado Políticas de ejecución, que le impiden ejecutar cualquier script anterior. De hecho, de forma predeterminada, no puede ejecutar ningún script y necesita cambiar su política de ejecución si desea poder ejecutarlos. Existen 4 Políticas de Ejecución notables:

  • Restringido : Esta es la configuración predeterminada en PowerShell. Esta configuración significa que no se puede ejecutar ningún script, independientemente de su firma. Lo único que se puede ejecutar en PowerShell con esta configuración es un comando individual.
  • AllSigned: Esta configuración permite que los scripts se ejecuten en PowerShell. La secuencia de comandos debe tener una firma digital asociada de un editor de confianza. Antes de ejecutar las secuencias de comandos de los editores de confianza, aparecerá un mensaje de aviso.
  • RemoteSigned : Esta configuración permite la ejecución de scripts, pero requiere que los archivos de configuración y script que se descargan de Internet tengan una firma digital asociada de un editor de confianza. Los scripts que se ejecutan desde la computadora local no necesitan ser firmados. No hay indicaciones antes de ejecutar el script.
  • no restringido: permite la ejecución de scripts sin firmar, incluidos todos los scripts y archivos de configuración descargados de Internet. Esto incluirá archivos de Outlook y Messenger. El riesgo aquí es ejecutar scripts sin ninguna firma o seguridad. Reanudamos que nunca usamos esta configuración.

Para ver en qué está configurada su política de ejecución actual, abra una consola de PowerShell y escriba:

Get-ExecutionPolicy

Para este curso y para la mayoría de las demás circunstancias, la política RemoteSigned es la mejor, así que siga adelante y cambie su política utilizando lo siguiente.

Nota: Esto tendrá que hacerse desde una consola PowerShell elevada.

Set-ExecutionPolicy RemoteSigned

Eso es todo por ahora, amigos, nos vemos mañana para divertirnos un poco más con PowerShell.

Exención de responsabilidad de

: el término adecuado para un comando de PowerShell es un cmdlet, y a partir de ahora utilizaremos esta terminología correcta. Simplemente me pareció más apropiado llamarlos comandos para esta introducción.

Si tiene alguna pregunta, puede twittear @taybgibb, o simplemente dejar un comentario.