No puedo creer que PowerShell sea realmente bueno
I can't believe PowerShell is good

El autor, escéptico de Microsoft, descubre PowerShell 7 y lo adopta para automatizar tareas en Mac y Linux. Destaca su sintaxis clara, el manejo nativo de JSON, objetos y parámetros, y su capacidad para tratar el registro de Windows como un sistema de archivos. Lo compara con Bash y Node.js, y lo usa en proyectos como Just the Browser y la migración de Tumblr a Eleventy.
PowerShell es genial, incluso si no lo usas como tu shell, e incluso si estás en Mac o Linux.
- d3Xt3r
Sysadmin de Windows aquí. PowerShell ha sido genial durante mucho tiempo, bueno, al menos desde la v5.1, cuando por fin arreglaron muchos de los problemas y limitaciones molestos de las versiones anteriores. Prácticamente vivo en él todo el día: el 90%+ de mi vida laboral está en PowerShell hoy en día.
Pero cuestiono su utilidad en otras plataformas, porque muchas de las cosas que hacen genial a PowerShell en Windows en realidad no funcionan en Linux ni en macOS.
Ej: Get-Service (y los cmdlets asociados). Un cmdlet muy práctico que uso todo el tiempo en Windows. En Linux, esperarías que funcionara con unidades de systemd, pero no, ese comando no existe en la versión de Linux. Lo mismo con Get-NetAdapter, o Get-NetTCPConnection, o Get-Disk y tantos otros cmdlets prácticos que uso todo el tiempo en Windows, todos faltan.
Sin embargo, algunos cmdlets sí existen, como Get-Process o Get-Uptime, etc., así que no entiendo por qué muchos de los cmdlets de Windows de uso común no se han portado.
Otra rareza molesta es cómo PowerShell en *nix delega algunos de los alias integrados a sus versiones nativas. Como en Windows, siempre uso 'ls' porque nadie tiene tiempo para escribir Get-ChildItem. Por desgracia, cuando lo ejecuto en PS de *nix, ejecuta la versión nativa. Y esto es un problema porque cuando canalizo 'ls' a un bucle for o a otro cmdlet para procesarlo más, naturalmente, no funciona. Para empeorarlo, esta decisión entre nativo o alias ni siquiera es consistente. Como 'pwd', por ejemplo, en realidad ejecuta la versión de PowerShell, mientras que […]
- 3eb7988a1663
Solo he usado PowerShell cuando no tenía otra opción, pero un buen número de las APIs parecen diseñadas por alguien que nunca ha usado una terminal. Como si estuvieran cumpliendo el objetivo a regañadientes sin imaginar nunca un caso de uso real.
Naturalmente, no puedo dar un ejemplo ahora mismo, pero me decepcionó bastante la última vez que tuve que recurrir a él y descubrí que algunos flujos de trabajo "obvios" parecían más improvisados de lo que habría esperado para un diseño de lenguaje de terminal desde cero.
- 16bitvoid
Personalmente prefiero nushell[0] antes que PowerShell para tareas similares. Mi shell principal sigue siendo Fish, pero de vez en cuando uso nushell cuando exploro datos estructurados de forma interactiva (p. ej., archivos JSON porque siempre olvido la sintaxis de jq) y ciertos scripts de nushell que tengo (p. ej., encontrar todos los nodos disponibles con GPU en un HPC gestionado con SLURM e imprimirlos como una bonita tabla), que encuentro mucho más fáciles de escribir que en bash/fish.
- majkinetor
PowerShell es tan bueno que me parece extraño que no se haya convertido en el predeterminado al menos en algunas distribuciones de Linux (o en algún fork/rehacer adecuado). Incluso lo usé para funcionalidades integradoras de algunos de mis proyectos estatales que sirven a millones de usuarios. El hecho de tener un lenguaje propio, diseñado para shell, muy eficiente, que no necesita un IDE ni nada, es bastante liberador.
Lo uso para todo tipo de cosas. Aquí hay un ejemplo que crea una colección de MusicBrainz desde mi carpeta de audio local, resolviendo de paso la prueba de trabajo del navegador: https://github.com/majkinetor/musicbrainz-userscripts/tree/m...
Si me pongo quisquilloso, el rendimiento podría ser mejor, aunque MS hizo mucho en años anteriores e incluso eso solo en teoría, ya que nunca me vi realmente bloqueado por ello. Pero si también pudiera ser una bestia del rendimiento, creo que podríamos dejar de investigar nuevos shells y simplemente usarlo en todas partes.
El soporte de JSON es increíble: no aprendes nada nuevo como con jq, simplemente funciona. Seleccionar cosas es increíble, me gusta más que SQL. Las HashTables son épicas para configuración (tienes un lenguaje de verdad dentro, a diferencia de, digamos, YAML).
Scripts que se ven horribles en bash son unas pocas líneas hermosas en pwsh.
Si no lo has probado, o no le has dado una oportunidad, sin duda te lo estás perdiendo.
- Schlagbohrer
Hace poco instalé PowerShell 7 porque al parecer es distinto del PowerShell que viene con Windows. Es genial, pero, ¿ahora tengo al menos 3 PowerShells diferentes en mi sistema operativo? ¿Por qué? Y funcionan de forma muy distinta. Tuve que cambiar todos los valores predeterminados para abrir una nueva terminal o una nueva ventana de shell en Windows porque muchos de los predeterminados seguían dándome uno de los PowerShell antiguos, cosa que no descubría hasta que mis comandos y scripts seguían dando errores, ya que usan comandos que solo existen en PowerShell 7. No puedo creer que Microsoft decidiera copiar el pecado original de Python y crear varias instalaciones coexistentes y en conflicto de exactamente lo mismo, pero con versiones diferentes e incompatibles. Por quéééééé
Sobre el artículo: Corbin Davenport es un nombre increíble. Buen artículo también.