Geek School Aprenda cómo automatizar Windows con PowerShell
En esta edición de Geek School, lo ayudaremos a comprender el poderoso lenguaje de scripting de PowerShell que está integrado en Windows y que es extremadamente útil conocer 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, por lo que si hay algo que quiera aprender para ayudar a su carrera de TI, aquí lo tiene. 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 se basa en PowerShell 3, que se incluye con Windows 8 y Server 2012. Si está ejecutando Windows 7, descargue la actualización de PowerShell 3 antes de continuar.
Conoce la Consola y el ISE
Hay dos formas de interactuar con PowerShell fuera de la caja, la consola y el entorno integrado de scripting, también conocido como ISE. El ISE ha mejorado enormemente con respecto a la versión horrible que se incluye con PowerShell 2 y se puede abrir presionando la combinación de teclas Win + R para abrir un cuadro de ejecución, luego escribiendo powershell_ise y presionando Intro.
Como puede ver, el ISE muestra una vista dividida para que pueda realizar una secuencia de comandos rápidamente mientras aún puede ver el resultado en la mitad inferior del ISE. La mitad inferior del ISE, donde se imprimen los resultados de su script, también se puede usar como indicador de REPL, muy parecido al indicador de comando. ISE v3 finalmente agregó soporte para intellisense tanto en el panel de script como en la consola interactiva.
Alternativamente, puede interactuar con PowerShell usando la Consola PowerShell, que es lo que usaré para la mayoría de esta serie. La consola PowerShell se comporta de manera muy similar a la línea de comandos: simplemente ingresa los comandos y escupe los resultados. Para abrir la consola de Windows PowerShell, nuevamente presione la combinación de teclas Win + R para abrir un cuadro de ejecución y escriba powershell y luego presione enter.
Las indicaciones de REPL como esta son increíbles para la gratificación instantánea: ingresas un comando y obtienes resultados. Si bien la Consola no ofrece inteligencia, sí ofrece algo que se llama finalización de pestañas que funciona de la misma manera: simplemente comience a escribir un comando y presione la pestaña para recorrer las posibles coincidencias.
Uso del sistema de ayuda
En versiones anteriores de PowerShell, los archivos de ayuda se incluían al instalar Windows. Esta fue una buena solución en su mayor parte, pero nos dejó con 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 programando y haciendo cambios. Esto significaba que cuando PowerShell se entregaba, los archivos de ayuda eran incorrectos porque no contenían los cambios más recientes que se habían realizado en el código. Para resolver este problema, PowerShell 3 viene sin archivos de ayuda listos para usar e incluye un sistema de ayuda actualizable. Esto significa que antes de hacer algo, querrá descargar los últimos archivos de ayuda. Puede hacerlo abriendo una consola PowerShell y ejecutando:
Ayuda de actualización
¡Felicitaciones por ejecutar su primer comando de PowerShell! La verdad es que el comando Actualizar-Ayuda tiene muchas más opciones que simplemente ejecutarlo, y para verlas queremos 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 Nombre del comando Get-Help, por ejemplo:
Get-Help -Nombre Update-Help
Probablemente se esté preguntando cómo interpretar todo 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 corchetes por todos lados? 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. Técnicamente, se denominan conjuntos de parámetros y solo puede utilizar uno a la vez (no puede 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 la parte inferior no lo tiene. La razón es que usaría el conjunto de parámetros superior (el que incluye SourcePath) si estuviera actualizando sus archivos de ayuda de otra máquina en su red que ya los había descargado, mientras que no necesitaría especificar una ruta de origen si Sólo quería agarrar los últimos archivos de Microsoft.
Para responder a la segunda pregunta, hay una cierta sintaxis que los archivos de ayuda siguen y aquí está:
- Los corchetes alrededor de un nombre de parámetro y su tipo significan que es un parámetro opcional y el comando funcionará bien sin él.
- Los corchetes alrededor del nombre de los parámetros significan que los parámetros son parámetros posicionales.
- La cosa a la derecha de un parámetro en los corchetes angulados le 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, simplemente agregue -Full al final de su comando de obtener ayuda y desplácese hasta la sección de parámetros, donde le dirá un poco más sobre cada uno. parámetro.
Get-Help -Nombre Update-Help -Full
Lo último que necesita saber sobre el sistema de ayuda es cómo puede usarlo para descubrir comandos, lo que en realidad es muy fácil. Verá, PowerShell acepta comodines casi en 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 ocupan de los servicios de Windows:
Obtener ayuda -Nombre * servicio *
Claro, toda esta información puede no ser útil para el bate, pero confía en mí, tómate el tiempo y aprende a usar el sistema de ayuda. Es útil todo el tiempo, incluso para guionistas avanzados que han estado haciendo esto durante años..
Seguridad
Esto 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 punto de ataque más reciente y mejor para los niños de script. Han implementado algunas medidas de seguridad para asegurarse de que esto no suceda, 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 un script de PowerShell) no está registrada con un host de PowerShell, en realidad está registrado con 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 secuencias de comandos desde el shell simplemente escribiendo el nombre de la secuencia de comandos, tiene que especificar la ruta completa a la secuencia de comandos. Entonces, si desea ejecutar un script en su unidad C, tendría que 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 impide ejecutar cualquier script antiguo. De hecho, de manera predeterminada, no puede ejecutar ningún script y necesita cambiar su política de ejecución si desea que se le permita ejecutarlos. Hay 4 políticas de ejecución notables:
- Restringido: Esta es la configuración por defecto en PowerShell. Esta configuración significa que ningún script puede ejecutarse, 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. El script debe tener una firma digital asociada de un editor de confianza. Habrá una solicitud antes de ejecutar los scripts de editores de confianza..
- RemoteSigned: Esta configuración permite ejecutar scripts, pero requiere que los scripts y los archivos de configuración que se descargan de Internet tengan una firma digital asociada de un editor de confianza. Los scripts ejecutados desde la computadora local no necesitan ser firmados. No hay indicaciones antes de ejecutar el script.
- Irrestricto: Esto permite que se ejecuten 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. Recomenzamos que nunca nos dejes este ajuste..
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 de firma remota es la mejor, así que continúe y cambie su política utilizando lo siguiente.
Nota: esto deberá hacerse desde una consola PowerShell elevada.
Set-ExecutionPolicy RemoteSigned
Eso es todo por ahora, amigos, hasta mañana para un poco más de diversión con PowerShell..
Descargo de responsabilidad: el término adecuado para un comando de PowerShell es un cmdlet, y de ahora en adelante usaremos esta terminología correcta. Se sintió más apropiado llamarlos comandos para esta introducción..
Si tiene alguna pregunta, puede enviarme un tweet a @taybgibb o simplemente dejar un comentario..