Powershell Automatización -  ¿ Por qué PowerShell ?


 
 
Get-PowerShell | Use-PowerShell -Force


     Las empresas disponen de numerosos equipos : Servidores, PCs, impresoras, dispositivos de comunicaciones...

     Y cuentan con personal para manejarlos, y probablemente con incluso algo de formación.
 
    Pero extrañamente, y aún contando con todo este hardware, todos los procesos se hacen manualmente. El usuario coge el ratón : hace clicks, corta, pega, edita...

    Incluso los procesos más críticos, o los que requieren más tiempo, o los que se deben realizar fuera de horas.

    ¿ Hemos tenido alguna vez la sensación de estar perdiendo el tiempo haciendo una tarea repetitiva una y otra vez ? ¿ Ver a todo un departamento copiando y pegando ?



   Los ordenadores, y no los humanos, deben automatizar las tareas !
 
   ¿ En qué estamos pensando ? ¡ No en la productividad, desde luego !

  ¿ Hemos parado a pensar que hay mejores maneras de trabajar ?
   

  El entorno Windows ha creado tradicionalmente generaciones de administradores 'de ratón', que conocen las operaciones 'pero-si-es-muy-fácil', a base de click & drag & drop... Si se les pide una tarea, corren a coger el ratón, sin pararse a pensar demasiado en las opciones.

   ... pero cuando hay que realizar una tarea múltiples veces, el procedimiento es altamente ineficiente, y muy poco fiable.

   ¿ Cuántas veces hemos borrado una OU, o una carpeta entera por error ? ¿ Cuántas veces nos hemos tenido que quedar más tiempo del requerido, copiando y pegando los mismos datos rutinariamente ? ¿ Cuántas veces hemos olvidado un paso importante, o lo hemos hecho en el orden incorrecto ? ¿ Cuántas veces ha habido que rehacer un proceso porque el resultado no ha sido coherente, ya que lo han realizado varias personas de modos diferentes ?

    La informática es una ingeniería. Que pretende que los ordenadores trabajen para los humanos, y no al revés... 

   La automatización, el scripting, son la manera de asegurarlo. De este modo, el resultado obtenido es coherente, predecible, fiable, y más barato. Los scripts no se olvidan de los pasos a realizar... incluso a medianoche. Y además documentan el proceso para otros administradores...

 


Ventajas de la automatización


Las ventajas son numerosas; algunas más evidentes, otras más sutiles, que se van apreciando con el paso del tiempo.

 

1. La primera es evidente. La automatización nos hace más rentables.

    La reducción de costes proporcionada por la automatización nos permite realizar más tareas, en más entornos, con menos recursos, en menos tiempo... y con mayor fiabilidad.

    Un proceso que se realiza más rápidamente, de modo más fiable, sin errores... reducirá el coste de operación (TCO) notablemente.

    Si la mayoría de nuestros procesos cotidianos son scriptados... el ahorro es sustancial e inmediatamente comprobable.

  Los alumnos en esta serie de cursos lo aprecian inmediatamente : desde el primer día del curso de Conceptos ya podemos comenzar a automatizar tareas reales. 

 

2. Es obligatorio. Microsoft ha cambiado drásticamente su enfoque.

     El interface gráfico (GUI) no escala; la automatización es imprescindible para cualquier tarea. 

     Microsoft ha decidido que Windows y todos los productos de servidor deben ser gestionados obligatoriamente mediante PowerShell.

     Muchas opciones ya no son accesibles desde el interface gráfico... ni lo serán.

     Además, los antiguos comandos como IPCONFIG, PING, TRACERT, NETSTAT...  ¡ pronto dejarán de estar soportados ! Hay que aprender sus equivalentes en PowerShell.

 

3. Escalabilidad

   Un proceso scriptado requiere los mismos recursos tanto si se ejecuta en un par de ordenadores... como si se realiza en cientos de ellos. Con la misma fiabilidad.

 

4. Podemos ser más competitivos.

     Una empresa que pueda reaccionar a los cambios con tareas automatizadas tendrá mejores ventajas competitivas.

   Cuidado : en España llevamos bastante retraso frente el resto de Europa !

     Bajo el punto de vista personal, un empleado que es capaz de automatizar procesos es mucho más valioso que uno que no lo es.

 

5. Mayor eficiencia, fiabilidad, predecibilidad.

     La automatización nos hace trabajar de una manera más estricta, más profesional, que evita riesgos, dudas, errores... incluso a altas horas de la madrugada.

     Es lo que cualquier empresa requiere : evitar costosos errores, tareas no planificadas, improvisaciones, olvidos...

     Un script no se equivoca ni se olvida de nada !

 

6. Mayor productividad, pero con mejor balance de vida personal.

    Un proceso rutinario que se ejecuta automáticamente libera tiempo para otras tareas más productivas, o más gratificantes.

     La satisfacción de realizar una tarea creativa, y evitar trabajos rutinarios, tiene un gran valor a largo plazo. Dedicarse sólamente a resolver problemas acaba quemando la moral.

 

7. Coherencia.

  Una tarea realizada por scripts tendrá un resultado coherente. Una tarea realizada por varios humanos siempre mostrará diferencias.

 

8. Profesionalidad.

   La informática no debe ser una chapuza o improvisación constante, sino una Ingeniería. El scripting obliga a seguir esta dirección : Planificar, probar, mejorar, documentar.

 

9. Retorno de Inversión (ROI) inmediato

   Cuanto más se profundiza en el conocimiento de PowerShell, se es capaz de automatizar tareas cada vez más complejas.

   PowerShell se muestra muy útil a la hora de ahorrar tiempo y recursos... y desde el primer día de aprendizaje.

  

10.  Algunas razones adicionales :


















(Extraído del curso "PowerShell Exhaustivo")

 

 


 DevOps - ¿ la última moda ?


    Se viene hablando mucho de DevOps recientemente... ¿ pero de qué se trata ? 

    Desde sus inicios, la informática (IT) ha sufrido la segmentación de roles ya impuesta por IBM desde los años 50. Había Analistas, Programadores, Operadores... pero como roles diferentes y separados, y una persona se encasillaba en sólo una de estas tareas.

    En el siglo XXI la distinción ha evolucionado un poco, pero aún se mantiene : nuestra empresa cuenta con desarrolladores (quienes escriben las aplicaciones o herramientas, en su entorno ideal de desarrollo), y administradores : los encargados de la operación de los sistemas (System Administrators o similares).

   Ambos grupos trabajan en entornos diferentes, con permisos diferentes, problemáticas y objetivos distintos... y sólo algunas veces deben ponerse de acuerdo. Pero en general un administrador no sabe escribir una sóla línea de código, y un desarrollador no tiene ni idea de los problemas reales para desplegar su aplicación en los 17000 ordenadores de la empresa.

   DevOps es una nueva filosofía. Pretende que en todo el ciclo de vida del software, ambos mundos se acerquen... y se toquen. Esto implica (entre muchas otras cosas) que habrá personas con conocimientos de operación y administración, pero que también tengan conceptos de desarrollo. O, lo mismo dicho al revés, personas con conocimientos de desarrollo pero que conozcan también la problemática de la operación. Es decir, lo mejor de ambos mundos.

  PowerShell es un punto de comienzo perfecto. El futuro va en esta dirección : Windows, System Center y otros productos ya requieren perfiles de DevOps...

 


 Ya sé algo de PowerShell... ¿ seguro ?


  Entonces es el momento de profundizar. Si ya lo has empleado en serio, sus ventajas te serán evidentes, y aprender sobre posibilidades más avanzadas ofrecerá un beneficio inmediato.

  Pero antes de avanzar, una reflexión. En mi experiencia docente, he encontrado muchos usuarios que han leído por su cuenta algo sobre PowerShell, lo han asimilado a otros lenguajes... pero no han llegado a entender la filosofía subyacente. PowerShell parece muy similar a otros lenguajes de scripting, pero ofrece algunas diferencias filosóficas muy radicales.

 Si no adquirimos correctamente los principios, podemos escribir código mediocre... o código que será mero VBS reescrito... o peor aún, código que mostrará a veces sutiles problemas.

 

   Los cursos formales permiten asimilar los conceptos rápidamente, evitando los errores más frecuentes, y ahorrando montones de tiempo.

   Y además, adquirir y aprovechar ideas y experiencias prácticas de otros equipos y entornos. Y, por supuesto, valorar la excelencia al crear scripts.

   Para poder revisar los conceptos he creado algunos ejemplos de prueba. Todos son erróneos. Compruébalos aquí : 

Algunos Errores

   Contesta a las preguntas honestamente; las respuestas son sólo para uno mismo. Si crees que los ejemplos son correctos o tienes dudas sobre las respuestas... entonces tus scripts fallarán en algunas ocasiones. Necesitarás formación sobre los conceptos.  


PowerShell no sirve para nada...


     ... A no ser que se le encuentre un uso práctico.

PowerShell es una mera herramienta, una gran colección de posibilidades a usar.

Sólo en el momento en el que se le da un uso práctico es cuando empieza a brillar !

Algunas ideas :

    Por supuesto, hay miles de usos prácticos... que surgen según se van creando más scripts. ¡ La experiencia proporciona las ideas !

    Y las ideas proporcionan código que luego se reusará. Construir en PowerShell es más rápido de lo que parece, si se siguen las mejores prácticas recomendadas, y se evitan los 'puntos difíciles'.


Aprende PowerShell antes de que sea tarde ! 


Algunos links adicionales :


http://www.microsoft.com/powershell

http://technet.microsoft.com/en-us/scriptcenter/dd742419.aspx 

Mis artículos en LinkedIn (en inglés) : The Need For Automation y Why PowerShell ?

Por cierto, la prensa española ya habla sobre la necesidad de aprender PowerShell ! http://labanguardia.com  (en clave de humor )

 

 

Get-JC © Diciembre 2015
Todos los derechos reservados.

Get-PowerShell | Use-PowerShell -Force