283 - ¿Que es y porque aprender PowerShell?
En algún momento seguro que te has preguntado sobre que es PowerShell, y en el momento que lo conoces te planteas porque aprender PowerShell
Desde el primer momento PowerShell me ha llamado la atención. ¿Porque liberar una nueva shell?¿Que no tenemos bastantes?¿Porque no trabajar en las que ya tenemos? Pero, esto mismo te puedes plantear, no solo con PowerShell, sino con otras Shell en Linux. Y ya no solo intérprete de comandos. También te lo puedes plantear con entornos de escritorio, e incluso con distribuciones. Lo cierto es que una de las características, que sin lugar a dudas son intrínsecas del Open Source, es precisamente la diversidad.
La diversidad es claramente beneficiosa. Por supuesto, que esto no siempre lo he tenido tan claro como lo tengo ahora mismo. En un momento, pensaba, que si todos los esfuerzos se centraran, en una única shell, en un único entorno de escritorio o incluso, en una única distribución, todo sería mejor, porque se avanzaría mucho mas rápido.
Ahora, mirando hacia atrás, me doy cuenta de lo equivocado que estaba. Estaba equivocado y mucho. En cuanto a escritorios, por ejemplo, he tenido la oportunidad de conocer bspwm, que ha supuesto un antes y un después en lo que a productividad se refiere. Mientras, que por ejemplo, en el caso de shell, de intérpretes de comandos, PowerShell, me ha permitido ver, que hay otra forma de hacer las cosas.
¿Que es y porque aprender PowerShell?
¿Que es PowerShell?
Pues como ya te imaginas es una shell, un intérprete de comandos, diseñado para administradores de sistemas con el objetivo de automatizar tareas.
Una de las características que mas me han resultado interesantes sobre PowerShell, es precisamente, que se trata de un intérprete de comandos orientado a objetos. Con las ventajas que esto conlleva a la hora de realizar scripts. O por lo menos, esa es una de las sensaciones que me he llevado.
Otra de las interesantes características que tiene PowerShell, y precisamente una de las razones, por las que he estoy publicando el tutorial sobre PowerShell, es precisamente que se trata de un intérprete de comandos multiplataforma, disponible tanto para Microsoft Windows, como para Linux.
Aunque esto, tal y como comento en el propio tutorial, lo tienes que coger, un poco con pinzas, en tanto en cuanto, no todo está disponible en todas las plataformas. Hay determinados cmdlet que no están disponibles en todas las plataformas.
¿Me servirá a mi PowerShell?
Si te estás preguntando si PowerShell es para ti, o si a ti te servirá… Sinceramente, cualquier intérprete de comandos te va a ser de gran utilidad. Simplemente se trata de aprenderlo y comenzar a hacer tus scripts para automatizar todas aquellas tareas repetitivas.
Como te he comentado, depende de la plataforma en la que utilices PowerShell, podrás sacar mas o menos partido. Sin embargo, esto no es óbice para que tu lo extiendas como necesites, en tanto en cuanto, PowerShell, es extensible, es modular.
Un poquito de historia sobre PowerShell
Originalmente denominada MONAD en 2003, pasó a llamarse PowerShell en 2006, cuando fue liberada en 2006. En 2016, Microsoft publicó el código fuente de PowerShell en GitHub y a partir de la versión 6 se ofrece bajo licencia MIT.
La versión en el momento de publicar el podcast es la 7.1.
Conociendo PowerShell
Una de las características de PowerShell son los cmdlet que tienen nombres del tipo verbo-sustantivo
, y que además están capitalizados. Están capitalizados a pesar de que PowerShell no entiende de mayúsculas y minúsculas, es insensible, por así decirlo.
Esto es algo que siempre me ha llamado la atención de Windows, y una de las cuestiones que siempre me han atraído de Linux.
La ayuda de PowerShell
Toda la documentación que he encontrado a lo largo y ancho de internet, en referencia a PowerShell, siempre hace mención a la ayuda. Y prácticamente es un pilar fundamental a la hora de conocer este intérprete de comandos.
Esto me ha hecho ver, que probablemente, con otros intérpretes de comandos, también tendría que haber empezado por el final, o mejor dicho, por el principio. Tendría que haber comenzado por la ayuda. Algo que seguro que tendré en cuenta de aquí en adelante.
En este sentido, dentro de la ayuda de PowerShell, tienes tres cmdlet, fundamentales, que te ayudarán a conocer mas a fondo este intérprete de comandos.
Get-Help
que te da información sobrecmdlet
, funciones,scripts
, módulos y mucho mas.Get-Command
te muestra un listado de todos loscmdlet
, funciones,scripts
que tienes instalados en tu equipo.Get-Member
este últimocmdlet
te muestra las propiedades y métodos de un objeto.
Sobre los objetos
Si no conoces nada sobre programación, indicarte que los objetos permite realizar una abstracción. Un objeto es un elemento que tiene una serie de propiedades y una serie de métodos. Donde las propiedades son las características del objeto, mientras que los métodos son las cosas que puedes hacer con ese objeto.
Así por ejemplo, un archivo es un objeto, donde las propiedades, son las características del objeto, mientras que los métodos, las distintas operaciones que puedes realizar con ese archivo.
¿Es muy distinto a otros shell?
Salvado el punto de que se trata de un intérprete de comandos orientado a objetos, lo cierto es que no es muy distinto a otros. Cierto es que tiene su particular sintaxis, igual que la puede tener otro, pero a mi me ha dado la impresión que es una sintaxis mas orientada a la programación. O al menos eso es lo que a mi me ha parecido.
Dicho esto, verás que muchas característica, son realmente similares, por no decirte iguales, a las que puedes encontrar en Bash. Con lo que no te costará mucho hacerte con este intérprete de comandos si ya conoces Bash.
De la misma forma, también me he resultado mas intuitivo hacer scripts con PowerShell. Probablemente, porque en su momento ya estuve desarrollando en C#. Pero, con independencia de esto, creo que a cualquiera que venga mas del mundo del desarrollo, le resultará mas cómodo.
Esto no quita que te vaya a resultar complejo si vienes del lado de la administración de sistemas. Mas bien todo lo contrario.
Conclusión
Seguramente te estés preguntando si reemplazará PowerShell a Bash, por ejemplo. Desde mi punto de vista, yo no lo creo. Una de las características de los administradores de sistemas es que son muy conservadores. Seguro que tu ya has oído aquella frase de si algo funciona no lo toques. Pues esto, es así.
Por otro lado, mi experiencia con PowerShell, es que actualmente es, sensiblemente, mas lento que Bash. Se nota a simple vista, sin necesidad de realizar ninguna medición. Entiendo que esto es posible que mejore con el tiempo, pero, no lo tengo tan claro.
Lo que tengo claro, es que aprender PowerShell es beneficioso, en tanto en cuanto, te permite realizar scripts que podrían funcionar en ambas plataformas. Y esto lo pongo en cursiva por lo que he comentado en varias ocasiones a lo largo del podcast. No todo funciona en todas las plataformas.
En este sentido, yo lo tengo claro, si tienes la oportunidad, aprende PowerShell, y esta es una de las razones, para el tutorial que puedes encontrar aquí.
Espero que te haya gustado este nuevo episodio del podcast. Si puedes, te agradecería una valoración en iVoox y/o en Apple Podcast.
Imagen de portada de Photo by Karsten Würth