Para iniciar a hablar sobre las ventajas y desventajas de PowerShell es importante comprender qué es y cuáles son sus usos. Posteriormente identificaremos las fortalezas y dificultades al utilizar este tipo de herramienta.
¿Qué es PowerShell?
En el ámbito tecnológico un Shell en español sería un intérprete de comandos. En su versión inicial la numero 1, su foco era brindar capacidades de gestión y automatización para la administración de algunos sistemas operativos de Windows.
Desde entonces las capacidades y el alcance han evolucionado a lo largo del tiempo. Procesos de administración, soporte multiplataforma, capacidades de desarrollo de herramientas han mejorado al agregar soporte con el entorno de desarrollo Visual Studio, que es compatible con varios lenguajes de programación.
A continuación, presentamos las principales ventajas y desventajas de PowerShell en un entorno empresarial teniendo en cuenta los siguientes aspectos: facilidad de uso, alcance de gestión, seguridad y comunidades.
Ventajas
∙ Facilidad de uso: La estructura de los comandos es generada mediante verbo-sustantivo lo que facilita la creación de tareas complejas y permite comprender el alcance o acción del comando. Se requiere un buen conocimiento de sistemas, es una interfaz básica y sencilla de bajo nivel orientada a usuarios intermedios o avanzados con conocimientos en programación, gestión de sistemas operativos, bases de datos, entornos de programación y lenguajes de programación.
∙ Alcance: PowerShell en sus ultima versiones tiene un gran alcance para gestionar diversos sistemas operativos incluyendo capacidades de gestión multiplataforma Windows, MAC o Linux. Cuenta con capacidad de creación y ejecución de scripts para apoyar la automatización y un entorno de desarrollo para la creación de herramientas por medio de programación con lenguajes como C, C++, Visual Basic, Java, etc.
∙ Seguridad: En PowerShell existen elementos que permiten implementar mecanismos de seguridad con el fin de asegurar el entorno de administración y automatización que provee. Permite establecer políticas de ejecución, auditoria, pueden definirse enfoques de administración granulares limitando qué procesos, comandos o parámetros puede usar cada usuario. Se pueden definir permisos Just in time, fijados por un periodo de tiempo definido y no dejarlos abiertos de forma indefinida.
∙ Comunidades: Existe una buena documentación por parte de Microsoft para esta herramienta con una estructura muy completa y con un temario que permite conocer desde lo básico hasta las funcionalidades mas complejas. Existe una comunidad entorno a PowerShell que genera contenido en foros, repositorios de desarrollo, grupos de desarrollo con un enfoque en particulares, recursos para desarrolladores, etc.
Desventajas
∙ Facilidad de uso: Como esta herramienta está diseñada para los administradores de sistemas, no tiene ninguna interfaz gráfica, se requiere tener conocimiento de los comandos y todos los parámetros. Al hacer automatizaciones o ejecutar scripts, demanda conocimiento de programación para tareas sencillas. Para actividades más complejas se requiere conocer s programación orientada a objetos para aprovechar todo el potencial y las capacidades de ejecución y de desarrollo que provee PowerShell. Un uso frecuente en la organización es la administración de active directory, para tareas de creación masiva o generación de informes. Siempre se deben construir los queries cada vez que cambien los datos requeridos en el reporte. Esto una gran carga para los administradores que generalmente no son dedicados solo para esta labor en la organización sino que además tienen responsabilidades adicionales de soporte o de administración de TI.
∙ Alcance: Las últimas versiones de PowerShell tienen un gran alcance, en sus inicios solo gestionaba sistemas Windows, pero sus últimas versiones vienen con soporte multiplataforma, sin embargo, los scripts no se ejecutan en todas las plataformas. En algunas ocasiones se deben hacer ajustes o cambiar comandos, la programación es basada en objetos y se diferencia de otros Shell basados en texto, por lo cual requiere de un tiempo de adaptación. PowerShell requiere de un servidor web para usar las funcionalidades remotas.
∙ Seguridad: Ya hemos mencionado la gran capacidad de ejecución y automatización de PowerShell, por ello también es riesgoso tenerlo implementado en un entorno sin las correspondientes medidas de seguridad y protección que permitan controlar y mitigar los riesgos. Puede haber un temor generalizado cuando se hace uso de las funcionalidades remotas: pueden quedar algunos huecos o brechas de seguridad permitiendo que se instalen virus, malware o en general software de alto riesgo. Esto permite la inyección de un código malicioso sin necesidad de tenerlo en el disco por lo cual los atacantes pueden generar daños sin usar archivos externos. En este artículo de Forbes podemos leer algunos ejemplos de casos en los que los hackers hacen uso de las capacidades de PowerShell para facilitar su ataques. Dado las capacidades de la herramienta en algunos entornos es difícil lograr el cumplimiento que permita a las organizaciones usar de forma segura esta herramienta.
∙ Comunidades: Es una comunidad en desarrollo promovida por Microsoft que esta en fase de desarrollo, por lo cual no es tan fuerte y completa como otras comunidades de otros entornos.
PowerShell sigue siendo uno de los productos más utilizados por los administradores de TI y su uso masivo se extiende a diversas industrias, por lo que conocer sus ventajas y oportunidades de mejora puede ser de utilidad a la hora de tomar decisiones relacionadas con la gestión de Active Directory y otras herramientas.