¿ Por qué PowerShell ?
|
 |
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 :
-
Gartner lleva tiempo diciéndolo explícitamente. El futuro de IT es la automatización. Y el empleado que sepa automatizar
tareas es más rentable que el que no sepa.
-
Es la evolución actual de la informática.
Y ayuda a solucionar el problema principal : Cada vez hay más máquinas a gestionar... y cada vez contamos con menos recursos. El Scripting ayuda a salvar
esta brecha.
-
¡ Porque ya era hora ! Otros sistemas operativos se han automatizado desde siempre. ¿ Por qué Windows no ?
-
Sólo es preciso aprender un lenguaje (y una filosofía de uso). Una vez aprendida la base, el conocimiento adquirido servirá para el resto de productos en el futuro.
-
Porque lo están adoptando muchos fabricantes : IBM, VMWare,
Cisco, Lego, Intel, Citrix... PowerShell no es una tecnología cerrada de Microsoft, sino de
amplio uso. Y no sólo en IT : también en domótica, electrónica
industrial, automoción... Lo que aprendamos sobre el producto también
servirá para dichos entornos.

(Extraído del curso "PowerShell Exhaustivo") |
|
-
Es gratuito (viene incluido con la licencia de Windows)
-
Todo se
puede debe scriptar : backups, monitorización, gestión de usuarios, permisos, auditorías, reports, logs, documentos en Office...
¿ Por qué no ?
-
PowerShell ha venido para quedarse. No es un producto que cambiará en 2 años. Lo que se aprenda ahora servirá durante mucho más tiempo...
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 :
- Renombra todas tus fotos a un nombre más lógico (India_0001.jpg en vez de IMG4512.jpg)
- Manda un mail automáticamente cada noche. Filtra y ordena tu correo.
- Detecta dónde está este ordenador y elige la impresora más cercana automáticamente.
- Avisa sobre los discos que están a punto de llenarse en toda la empresa... limpia los ficheros inútiles, y defragmenta todos los discos (remotamente, sin interacción de usuario).
- Detecta qué día es y haz la copia de seguridad adecuada.
- Haz un informe de ficheros copiados.. en formato Word
- Clona el entorno de Producción en el de Test.
- Crea 70 máquinas virtuales para una prueba. Cópiales algunos ficheros necesarios a todas. Ahora, en Azure.
- Lee un Excel en voz alta.
- Monitoriza los problemas de replicación de tu AD. Avisa por mail de los problemas.
- Documenta todo el entorno de Cluster en un Visio y Excel.
- Copia todas las carpetas que contienen la palabra clave 'Video' pero no las demás.
- Manda un mensaje al móvil cada vez que alguien se acerque a mi ordenador (pista : ___)
- Borra todos los ficheros inútiles del ordenador : TMPs, DMPs, LOGs antiguos... Libera 1 TB. Ahora, lo mismo en toda la red.
- Repara el entorno WMI de todos los PCs de la empresa
- Revertir las páginas Web críticas a su estado inicial; un hacker las ha modificado.
- Crea 10 máquinas virtuales cada Lunes, y bórralas cada viernes.
- ...
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
|