Ich kann nicht glauben, dass PowerShell tatsächlich gut ist
I can't believe PowerShell is good

Microsoft-Software ist oft enttäuschend, aber PowerShell 7 hat den Autor überzeugt. Die plattformübergreifende Skriptsprache bietet native Objekte, JSON-Unterstützung und integrierte Cmdlets wie Invoke-WebRequest – ohne das Boilerplate von Bash. Anhand von Projekten wie „Just the Browser“ und einem Tumblr-zu-Eleventy-Konverter zeigt er, warum PowerShell für Automatisierung auf Mac, Linux und Windows zur ersten Wahl wird.
Ich verstehe es jetzt. PowerShell ist großartig, selbst wenn man es nicht als Shell verwendet und selbst wenn man auf Mac oder Linux unterwegs ist.
- d3Xt3r
Windows-Sysadmin hier. PowerShell ist schon lange großartig, nun ja, zumindest seit v5.1, als sie endlich viele der nervigen Probleme und Einschränkungen früherer Versionen behoben haben. Ich lebe praktisch den ganzen Tag darin – 90 %+ meines Arbeitslebens spielt sich heutzutage in PowerShell ab.
Aber ich stelle seinen Nutzen auf anderen Plattformen infrage, weil viele der Dinge, die PowerShell unter Windows cool machen, unter Linux oder macOS tatsächlich nicht funktionieren.
Z. B.: Get-Service (und die zugehörigen Cmdlets). Ein sehr praktisches Cmdlet, das ich unter Windows ständig benutze. Unter Linux würde man erwarten, dass es mit systemd-Units funktioniert, aber nein, dieser Befehl existiert in der Linux-Version nicht. Dasselbe gilt für Get-NetAdapter, Get-NetTCPConnection, Get-Disk und so viele andere praktische Cmdlets, die ich unter Windows ständig verwende – alle fehlen.
Dennoch gibt es einige Cmdlets, wie Get-Process oder Get-Uptime usw., also verstehe ich nicht, warum viele der häufig verwendeten Windows-Cmdlets nicht portiert wurden.
Eine weitere nervige Eigenheit ist, wie PowerShell unter *nix einige der eingebauten Aliase an ihre nativen Versionen weitergibt. Unter Windows benutze ich zum Beispiel immer 'ls', weil niemand Zeit hat, Get-ChildItem zu tippen. Leider führt dies in *nix-PS die native Version aus. Und das ist ein Problem, denn wenn ich 'ls' in eine for-Schleife oder ein anderes Cmdlet zur Weiterverarbeitung pipe, funktioniert es natürlich nicht. Um es noch schlimmer zu machen, ist diese Entscheidung zwischen nativ oder Alias nicht einmal konsistent. 'pwd' zum Beispiel führt tatsächlich die PowerShell-Version aus, während […]
- 3eb7988a1663
Ich habe PowerShell bisher nur benutzt, wenn ich keine andere Wahl hatte, aber eine ganze Reihe der APIs fühlt sich an, als wären sie von jemandem entworfen worden, der noch nie ein Terminal benutzt hat. Als würden sie widerwillig das Ziel erfüllen, ohne sich jemals einen echten Anwendungsfall vorzustellen.
Natürlich kann ich aus dem Stegreif kein Beispiel nennen, aber ich war ziemlich enttäuscht, als ich das letzte Mal darauf zurückgreifen musste und feststellte, dass ein paar "offensichtliche" Workflows für ein von Grund auf neu gestaltetes Terminal-Sprachdesign hackiger wirkten, als ich erwartet hätte.
- 16bitvoid
Ich persönlich bevorzuge nushell[0] gegenüber PowerShell für ähnliche Aufgaben. Mein Hauptshell ist immer noch Fish, aber ich benutze gelegentlich nushell, wenn ich interaktiv strukturierte Daten erkunde (z. B. JSON-Dateien, weil ich immer die jq-Syntax vergesse) und für bestimmte nushell-Skripte, die ich habe (z. B. alle verfügbaren Knoten mit GPUs auf einem SLURM-verwalteten HPC als hübsche Tabelle ausgeben), was ich viel einfacher zu schreiben finde als bash/fish.
- majkinetor
PowerShell ist so gut, dass ich es seltsam finde, dass es nicht zumindest in einigen Linux-Distributionen zum Standard wurde (oder ein ordentlicher Fork/Neuentwurf davon). Ich habe es sogar für integrative Features in einigen meiner staatlichen Projekte verwendet, die Millionen von Nutzern bedienen. Die Tatsache, dass ich eine richtige Sprache habe, die für die Shell entworfen wurde, sehr effizient ist und keine IDE oder ähnliches benötigt, ist ziemlich befreiend.
Ich benutze es für alle möglichen Dinge. Hier ist ein Beispiel, das eine MusicBrainz-Sammlung aus meinem lokalen Audioordner erstellt und dabei den Proof-of-Work des Browsers löst: https://github.com/majkinetor/musicbrainz-userscripts/tree/m...
Wenn ich pingelig sein will, könnte die Performance besser sein, obwohl MS in den letzten Jahren viel getan hat und selbst das nur theoretisch, da ich nie wirklich dadurch blockiert wurde. Aber wenn es auch ein Performance-Biest sein könnte, würde ich denken, wir können die Erforschung neuer Shells einstellen und es einfach überall verwenden.
JSON-Unterstützung ist erstaunlich – man lernt nichts Neues wie bei jq, es funktioniert einfach. Das Auswählen von Dingen ist großartig, ich liebe es mehr als SQL. HashTables sind episch für Konfiguration (man hat eine echte Sprache darin, anders als z. B. in YAML).
Skripte, die in bash schrecklich aussehen, sind in pwsh ein paar Zeilen schöner Code.
Wenn du es nicht ausprobiert oder ihm keine Chance gegeben hast, verpasst du definitiv etwas.
- Schlagbohrer
Ich habe kürzlich PowerShell 7 installiert, weil das offenbar anders ist als das PowerShell, das mit Windows kommt. Es ist großartig, aber jetzt habe ich mindestens 3 verschiedene PowerShells in meinem OS? Warum? Und sie funktionieren sehr unterschiedlich. Ich musste alle Standardeinstellungen zum Öffnen eines neuen Terminals oder Shell-Fensters in Windows ändern, weil viele der Standardeinstellungen mir immer eine der alten PowerShells gaben, was ich erst merkte, als meine Befehle und Skripte weiter Fehler warfen, da sie Befehle verwenden, die nur in PowerShell 7 existieren. Ich kann nicht glauben, dass Microsoft beschlossen hat, Pythons Erbsünde zu kopieren und mehrere konkurrierende, koexistierende Installationen desselben Dings zu erstellen, aber mit unterschiedlichen, inkompatiblen Versionen. Waruuuum
Zum Artikel: Corbin Davenport ist ein großartiger Name. Auch ein schöner Artikel.