Vor einiger Zeit habe ich ein einfaches Skript geschrieben, das in einem angegebenen Verzeichnis alle Unterverzeichnisse mit bestimmten Namen löscht:
Remove-Item * -Force -Recurse -Include name1,name2,name3 -ErrorAction SilentlyContinue Ich habe es lange nicht benutzt, aber jetzt benötigte ich es. Ich starte es — und es löscht nichts.
„WTF?“, denke ich. Ich beginne zu stöbern. Ich habe alles überprüft, eine vorläufige Liste erstellt und die Namen geändert — trotzdem löscht es nichts. Schließlich habe ich in ihrer Dokumentation gelesen: "Tatsächlich hat -Include Probleme, wenn es zusammen mit -Recurse verwendet wird, also benutze eine Umgehungslösung.":
Weil der Recurse-Parameter in Remove-Item ein bekanntes Problem hat, verwendet der Befehl in diesem Beispiel Get-ChildItem, um die gewünschten Dateien zu erhalten, und leitet sie dann über den Pipeline-Operator an Remove-Item weiter.
Na gut, ich habe es mit dieser Umgehungslösung umgeschrieben. Trotzdem — es löscht nichts. Außerdem Get-ChildItem mit -Include gibt leer zurück. Wiederum, egal was ich gemacht habe oder wie ich mit den Parametern herumexperimentiert habe — es funktioniert nicht. Das Hauptproblem ist, dass -Exclude funktioniert, aber mit -Include geht gar nichts. Einen ganzen Tag habe ich dafür verschwendet: Ich dachte ständig, dass ich irgendwo bei den Parametern einen Fehler gemacht habe, dass ich irgendeinen kniffligen Punkt übersehen habe. Und was kam am Ende heraus? Ich habe ihnen PS7.1 installiert — und darin hat es funktioniert. Sogar die erste Variante ohne Umgehung, die nur Remove-Item Ich habe einen Fehler gefunden. Insgesamt ist es ein Bug von ihnen.
Aber nachdem ich mit ihrem Mighty Shell gekämpft habe, habe ich bei Google nachgelesen, warum ihr Shell so einen schrecklichen Syntax hat. Sie positionieren es als .NET für die Konsole, aber mit der Syntax von C# hat es nichts zu tun. Stattdessen...
Ich bin auf so einen Artikel gestoßen: "". Wie man so schön sagt: „Ich könnte nicht mehr zustimmen.“
Ich vermute, dass das Team von Mighty Shell eine Gruppe von Bash-Enthusiasten ist.
— Lassen Sie uns endlich eine Windows-Konsole schaffen, in der man komplexe Skripte schreiben kann. Unser cmd ist so veraltet, dass wir uns etwas schämen.
— Lassen Sie uns das tun! Auf welcher Basis wollen wir das machen? Wir haben bereits VBScript, JScript. Schließlich haben wir Sprachen für .NET: C#, VB. Vielleicht machen wir es in C#? Im Sinne von, wir verwenden C# als Script-Sprache für unsere Konsole. Außerdem wollen wir ja .NET-Klassen einbringen.
— Komm schon, was soll das, Alter, C#? Echte Nerds nutzen bash! Lass uns bash für Windows machen. Es ist egal, dass die Syntax für bash anscheinend von einer Horde bekiffter Hipster in den späten 1960ern geschrieben wurde. Je komplizierter, desto besser! Intuitive Verständlichkeit ist was für Schwache! Während man ein Skript in unserer Sprache schreibt, muss der Nutzer unbedingt alles verfluchen und ein paar neue Schimpfwörter erfinden. Nur eine solche Sprache hat ein Recht auf Existenz. Schaut euch die Linux-Nutzer an, die leben ihr ganzes Leben so und genießen das alles in unbeschreiblichem Maße. Und wir sind nicht schlechter?
Nur registrierte Benutzer können an der Umfrage teilnehmen. Sind Sie an Contour interessiert?
Nutzen Sie PowerShell und sind Sie damit zufrieden?
30,3%Ich benutze es nicht.
29,6%Habe es ausprobiert – hat mir nicht gefallen.
23,5%Ich benutze es und bin vollkommen zufrieden.
12,9%Ich benutze es, bin aber unzufrieden.
3,8%Hurra! Endlich kann ich mein geliebtes bash in Windows nutzen!
132 Nutzer haben abgestimmt. 26 Nutzer haben sich enthalten.
Quelle: habr.com
