-
schrott
Autor: schulz_me 17.06.21 - 13:41
es folgt meine persönliche meinung...
ich (als systemintegrator und nicht-anwendungsentwickler) finde die powershell einfach nur schlecht. wenn man aus der linux-welt kommt, ist das doch einfach nur traurig.
"mal eben" etwas skripten? leider nicht möglich. erstmal muss man eine merkwürdige und absolut unintuitive befehlsstruktur versuchen zu verstehen... mit punkt notierung!? WTF?
nen einfachen dauerping der schneller als 1/s ping? kann man nicht machen ohne ein powerschrott skript schreiben zu müssen.
aliase? sehr witzig, bitte weitergehen...
pipe? pipe am ar|sch. funktioniert absolut schlecht und nur wenn ein befehl es erlaubt. unfassbar...
tab-completion? direkt aus der hölle... wie kommt man auf die ******** idee, dass man den user sooft tab drücken lässt bis irgendwann vielleicht der gewünschte befehl kommt?? und das beste: es wird auch noch der falsche befehl hingeschrieben, sodass man erst hocheffizient die backspace taste zerdrücken muss um ein weiteres zeichen einzugeben um die suche zu verfeinern.
mir würden wahrscheinlich noch zig sachen einfallen, wenn ich das ding nicht nach einer halben stunde abgehakt hätte (im gegensatz dazu, als ich aus der windows welt kommend mit linux anfing und es alles sehr intuitiv und logisch war).
muss es leider beruflich nutzen und zumindest das wt ist halbwegs brauchbar, was copy/paste und mehrere tabs und/oder unterfenster angeht. die cmd und die powershell selbst kriegen ja nicht mal das gesch*ssen. und die ISE ist einigermaßen interessant, wird aber wohl nicht mehr weiterentwickelt. und powershell skripts? was ein griff ins klo. man hätte sich auch einfach das abgucken können, was seit ewigkeiten sehr gut funktioniert, intuitiv ist und auch einen mal eben was skripten lässt ohne anwendunsentwickler zu sein...
sorry für den rant, aber ist doch wahr :) -
Re: schrott
Autor: dominikp1996 17.06.21 - 15:00
Vielleicht solltest du überlegen ob du für den Beruf geeignet bist wenn du es nicht schaffst dich an die einfache Syntax von PowerShell zu halten oder dich mal ausführlich damit zu beschäftigen.
PowerShell hat sehr viele Vorteile was Automation von Prozessen und Aufgaben angeht.
Ob Bash oder PowerShell, man erreicht in beiden Welten sein Ziel. -
Re: schrott
Autor: VilsaBrunnen 17.06.21 - 15:30
schulz_me schrieb:
> nen einfachen dauerping der schneller als 1/s ping? kann man nicht machen
> ohne ein powerschrott skript schreiben zu müssen.
100ms?
ping -w 100
ping /?
Syntax: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
[-r count] [-s count] [[-j host-list] | [-k host-list]]
[-w timeout] [-R] [-S srcaddr] [-c compartment] [-p]
[-4] [-6] Zielname
Optionen:
-t Pingt den angegebenen Host bis zur Beendigung des Vorgangs.
Drücken Sie STRG+UNTBR, um die Statistik anzuzeigen und
den Vorgang fortzusetzen.
Drücken Sie STRG+C, um den Vorgang abzubrechen.
-a Löst Adressen zu Hostnamen auf.
-n count Die Anzahl der zu sendenden Echoanforderungen.
-l size Die Größe des Sendepuffers.
-f Legt das Kennzeichen für "Nicht fragmentieren" im Paket
fest (nur IPv4).
-i TTL Die Lebensdauer.
-v TOS Der Diensttyp (nur IPv4. Diese Einstellung ist veraltet
und hat keine Auswirkungen auf das Diensttypfeld im IP-
Header).
-r count Datensatzroute für Anzahl von Hops (nur IPv4).
-s count Zeitstempel für Anzahl von Hops (nur IPv4).
-j host-list "Loose Source Route" gemäß Hostliste (nur IPv4).
-k host-list "Strict Source Route" gemäß Hostliste (nur IPv4).
-w timeout Zeitlimit in Millisekunden für die einzelnen Antworten.
-R Verwendet den Routingheader, um auch die umgekehrte Route
zu testen (nur IPv6).
Dieser Routingheader wird nicht mehr verwendet
(siehe RFC 5095). Bei manchen Systemen werden
Echoanforderungen verworfen, wenn
dieser Header verwendet wird.
-S srcaddr Die zu verwendende Quelladresse.
-c compartment Routingdepotbezeichner
-p Pingt die Adresse eines Anbieters für die
Hyper-V-Netzwerkvirtualisierung.
-4 Erzwingt die Verwendung von IPv4.
-6 Erzwingt die Verwendung von IPv6. -
Re: schrott
Autor: schulz_me 17.06.21 - 16:01
dominikp1996 schrieb:
--------------------------------------------------------------------------------
> Vielleicht solltest du überlegen ob du für den Beruf geeignet bist wenn du
> es nicht schaffst dich an die einfache Syntax von PowerShell zu halten oder
> dich mal ausführlich damit zu beschäftigen.
>
> PowerShell hat sehr viele Vorteile was Automation von Prozessen und
> Aufgaben angeht.
>
> Ob Bash oder PowerShell, man erreicht in beiden Welten sein Ziel.
ja, danke. werde ich mal drüber nachdenken.
natürlich kann man alles in beiden welten erreichen, aber die frage ist wie aufwändig es ist. und ich bezweifle, dass du viel auf der bash unterwegs wars, wenn du die PS syntax als einfach bezeichnest. als praktiker ist es ein himmelweiter unterschied ob man mal eben mit "|grep" hinter einem befehl ein ergebnis verfeinern kann oder das so umständlich wie auf der PS machen muss. und sich ausführlich damit beschäftigen, müsste man tatsächlich um es zu benutzen. wenn du dafür zeit hast oder deine freizeit investieren möchtest, mach das.
was die automation usw. angeht, davon habe ich ja nie gesprochen. Vielleicht solltest du überlegen ob du für das golem-Forum geeignet bist wenn du es nicht schaffst Posts richtig zu lesen? ;) -
Re: schrott
Autor: FreiGeistler 17.06.21 - 16:56
dominikp1996 schrieb:
--------------------------------------------------------------------------------
> Vielleicht solltest du überlegen ob du für den Beruf geeignet bist wenn du
> es nicht schaffst dich an die einfache Syntax von PowerShell zu halten oder
> dich mal ausführlich damit zu beschäftigen.
Bin Entwickler (deine implizierte Berufsgruppe statt der des TO) und finde ebenfalls, dass OOP in einer Kommandozeile völlig übers Ziel hinausgeschossen ist. Schwerer zu lernen und weniger effizient zum Scripten.
Scheinst ja ebenfalls Entwickler zu sein? Was glaubst du, sind die Usecases einer Kommandozeile? Sie überschneiden sich jedenfalls nicht mit denen einer Programmiersprache. Python ausrollen will MS ja trotzdem nicht.
> PowerShell hat sehr viele Vorteile was Automation von Prozessen und
> Aufgaben angeht.
> Ob Bash oder PowerShell, man erreicht in beiden Welten sein Ziel.
Sicher. Irgendwie geht immer. Zweckmässigkeit und Effizienz sind aber wichtig.
2 mal bearbeitet, zuletzt am 17.06.21 16:58 durch FreiGeistler. -
Re: schrott
Autor: Kleba 17.06.21 - 17:24
schulz_me schrieb:
--------------------------------------------------------------------------------
> als praktiker ist es ein himmelweiter unterschied ob man mal eben mit "|grep" hinter
> einem befehl ein ergebnis verfeinern kann oder das so umständlich wie auf der PS
> machen muss.
Das ist aber auch für dich nur nicht umständlich wenn du a) weißt, dass es "grep" gibt b) wofür es gedacht ist und c) wie die Syntax davon ist.
In PS finde ich es tatsächlich deutlich intuitiver, weil der erste Teil des Befehls aus wenigen Verben besteht (Get-, Select-, Start-, Stop-, etc.) und der zweite Teil meist relativ klar sagt was gemacht werden soll.
Will ich z.B. von dem Dateiinhalt nur bestimmte Teile habe, nutze ich es bspw. so
Will ich den Inhalt einer bestimmten Datei?
> Get-Content .\function.proj
Will ich nur die Zeilen, die einen bestimmten Begriff beinhalten?
> Get-Content .\function.proj | Select-String -Pattern 'PackageReference'
Gibt mir nur die Zeilen aus dem File zurück die "PackageReference" beinhalten.
Will ich die führenden Leerzeichen entfernen (weil das ein XML-File ist)?
> Get-Content .\function.proj | Select-String -Pattern 'PackageReference' | foreach { $_.ToString().Trim() }
Wenn du übrigens nicht mit Tab durch alle Optionen durchwechseln willst, empfehle ich mal Ctrl+Space zu drücken - dann kommt eine Auswahl aller möglichen Optionen an der jeweiligen Stelle ;-)
Ist ja nicht unüblich, dass einem etwas leichter fällt, was man gut kennt. Ich würde jederzeit die PS ggü. bash bevorzugen - aber vermutlich hauptsächlich, weil ich für bash praktisch jeden Befehl nachschlagen müsste (da bin ich mit PS einfach schneller). Ich finde deinen Rant deshalb etwas übertrieben... -
Re: schrott
Autor: Kleba 17.06.21 - 17:42
schulz_me schrieb:
--------------------------------------------------------------------------------
> "mal eben" etwas skripten? leider nicht möglich. erstmal muss man eine
> merkwürdige und absolut unintuitive befehlsstruktur versuchen zu
> verstehen...
Klar ist das möglich - wieso sollte das nicht gehen? Klar, wenn man die Cmds nicht kennt geht das nicht - das betrifft aber jede Shell. Da ist es müßig drüber zu diskutieren. Deine Probleme hätte ich, wenn ich unter Linux die Shell nutzen möchte
> mit punkt notierung!? WTF?
Was meinst du? Das man - je nach Rückgabewert - einfach auf jede Eigenschaft zugreifen kann? Ist super :). Du willst den Sekundenwert der aktuellen Uhrzeit? Einfach "(Get-Date).Second" eingeben und fertig
> nen einfachen dauerping der schneller als 1/s ping? kann man nicht machen
> ohne ein powerschrott skript schreiben zu müssen.
Wie VilsaBrunnen schon dargestellt hat...
> aliase? sehr witzig, bitte weitergehen...
Natürlich gibt es Aliase? Statt "Get-ChildItem" kannst du bspw. "gci" verwenden. Kannst dir natürlich deine eigenen erstellen
> pipe? pipe am ar|sch. funktioniert absolut schlecht und nur wenn ein befehl
> es erlaubt. unfassbar...
Pipes funktionieren bei den meisten Befehlen. Klar, wenn ein Entwickler es im eigenen Modul nicht implementiert, dann nicht. Aber ich bezweifle, dass das ein großer Unterschied zu anderen vergleichbaren Konstellation unter Linux ist.
> tab-completion? direkt aus der hölle... wie kommt man auf die ********
> idee, dass man den user sooft tab drücken lässt bis irgendwann vielleicht
> der gewünschte befehl kommt?? und das beste: es wird auch noch der falsche
> befehl hingeschrieben, sodass man erst hocheffizient die backspace taste
> zerdrücken muss um ein weiteres zeichen einzugeben um die suche zu
> verfeinern.
Ctrl+Space ist dein Freund - zeigt dir alle Optionen (egal ob CmdLets, Parameter, Files, ...) an die möglich sind (zugegeben, das war nicht von Anfang an dabei, benutze es aber mittlerweile nur noch)
> mir würden wahrscheinlich noch zig sachen einfallen, wenn ich das ding
> nicht nach einer halben stunde abgehakt hätte (im gegensatz dazu, als ich
> aus der windows welt kommend mit linux anfing und es alles sehr intuitiv
> und logisch war).
Das ist definitiv Geschmackssache. Ich finde die Kombination aus Verb und "Art-der-Sache-die-ich-machen-möchte" sehr viel intuitiver (bspw. Get-Content um Dateiinhalte auszugeben oder Set-ItemProperty um eine Eigenschaft zu ändern) als Befehle die man sich - ohne Hintergrundwissen - nicht zusammenreimen kann (wie bspw. "grep" unter Linux; klar, wenn man es weiß ist es easy; wenn ich es nicht weiß würde ich das Akronym nicht aufgrund der Bedeutung "global search for a regular expression and print out matched lines" erraten können).
> muss es leider beruflich nutzen und zumindest das wt ist halbwegs
> brauchbar, was copy/paste und mehrere tabs und/oder unterfenster angeht.
> die cmd und die powershell selbst kriegen ja nicht mal das gesch*ssen.
Copy-Paste nervt wirklich, zumindest wenn man die Finger von der Maus lassen möchte (also zumindest das markieren ist nervig und kollidiert vom Shortcut her häufig mit anderen Dingen, zumindest bei mir)
> die ISE ist einigermaßen interessant, wird aber wohl nicht mehr
> weiterentwickelt.
Die ISE ist Grütze - aber VS Code ist der leichtgewichtige Freund :)
> und powershell skripts? was ein griff ins klo. man hätte
> sich auch einfach das abgucken können, was seit ewigkeiten sehr gut
> funktioniert, intuitiv ist und auch einen mal eben was skripten lässt ohne
> anwendunsentwickler zu sein...
Was meinst du damit? Die Skripte könnten doch einfacher nicht sein? Oder was ist dein Problem hier?
> sorry für den rant, aber ist doch wahr :)
Starke Ansichtssache würde ich sagen ;-) -
übelster schrott
Autor: Standard 17.06.21 - 19:51
Die Powershell ist übelster Schrott und sollte komplett eingestampft werden.
Sie ist durch zahlreiche "Fehler" im Konzept das allerbester Malwareframework.
Case sensitive Befehle oder Parameter? Warum sollte man, denn so etwas machen, dann wäre es ja schwieriger zu obfuskieren!
Befehle und Parameter abgekürzt gültig solange die abkürzung eindeutig ist? Wer käme denn darauf das für Obfuskierung von Malware zu benutzen!
Rechteausweitung mit einem einfachen Befehl? Was kann da schon schiefgehen?!?!
...
Die Leute, die Powershell verbrochen haben und diejenigen, die es abgenickt haben gehören ordentlich ausgepeitscht. -
Re: schrott
Autor: CreepCreep 17.06.21 - 23:58
Kleba schrieb:
--------------------------------------------------------------------------------
> Pipes funktionieren bei den meisten Befehlen. Klar, wenn ein Entwickler es
> im eigenen Modul nicht implementiert, dann nicht. Aber ich bezweifle, dass
> das ein großer Unterschied zu anderen vergleichbaren Konstellation unter
> Linux ist.
Ist der Punkt an der Pipe nicht gerade der, dass STDOUT einfach weitergegeben wird? Ich kenne mich unter PS nicht aus aber unter Linux funktioniert es per Definition immer wenn es eine Ausgabe per STDOUT gibt, oder? -
Re: schrott
Autor: Kleba 18.06.21 - 06:25
Es geht eher darum, dass der Befehl nach der Pipe nicht unbedingt einen Pipeline-Input akzeptiert. Klar, kann erst mal alles per Pipe weitergegeben werden, aber wenn das "Ziel" es nicht akzeptiert bringt das ja nichts.
Grob zusammengefasst: der Parameter des Ziel-CmdLets muss mit "ValueFromPipeline" (oder "ValueFromPipelineByPropertyName") markiert sein, damit das klappt. Soweit ich weiß, ist das bei praktisch allen Standard-CmdLets der Fall. Bei Modulen von 3rd-Party-Entwicklern aber nicht unbedingt. -
Re: schrott
Autor: Isse me, Mario 18.06.21 - 08:59
schulz_me schrieb:
--------------------------------------------------------------------------------
> "mal eben" etwas skripten? leider nicht möglich. erstmal muss man eine
> merkwürdige und absolut unintuitive befehlsstruktur versuchen zu
> verstehen... mit punkt notierung!? WTF?
Punkt Notierung - sorry aber hier hatte ich schon einen kleinen Lachflash ;-). Ich war um die 15 Jahre lang Unix Admin und _jeder_ aus der Unix Welt kapiert das anfangs einfach nicht. In Powershell geben die Funktionen/Cmdlets OBJEKTE aus, während die klassischen Shells einfach TEXT ausgeben. Wird ein Objekt auf die Konsole ausgegeben, so wird das Objekt entsprechend den Vorgaben formattiert, damit es für den Anwender lesbar ist. Mit der "Punkt Notation" greifst du auf Methoden und Eigenschaften der OBJEKTE zu.
Der "grep"-Fetisch ist ebenfalls aus der Unix Welt.. Du gehst davon aus, dass die Funktion dir 100% Informationen gibt und du die 5% raus-grepst & awk'st, die dich interessieren. Bei Objekten funktioniert das natürlich so nicht. Informationen müssen nicht aus der Ausgabe "rausgewurstelt" werden sondern stehen in Eigenschaften zur Verfügung. Ein Filtern nach Eigenschaften sieht dann auch anders aus..
Get-Process | Where-Object Name -eq "svchost"
...statt einem
ps -ef | grep svchost
Es ist viel sauberer als mit grep & awk etwas zu nuscheln oder sich durch einen Dschungel von Parametern oder Hilfstools zu kämpfen. -
Re: schrott
Autor: schulz_me 18.06.21 - 09:11
Isse me, Mario schrieb:
--------------------------------------------------------------------------------
> Get-Process | Where-Object Name -eq "svchost"
> ...statt einem
> ps -ef | grep svchost
>
> Es ist viel sauberer als mit grep & awk etwas zu nuscheln oder sich durch
> einen Dschungel von Parametern oder Hilfstools zu kämpfen.
das sehe ich ganz anders. es ist (natürlich durch gewohnheit, aber auch durch pragmatismus) einfacher die text-ausgabe mit grep/awk/sed usw. passend zu machen. den dschungel von parametern kenne ich nicht. jeder befehl bringt (bei den meisten distros) eine man-page mit in der man suchen kann.
und in deinem beispiel muss ich ja auch wissen, dass das objekt das mir Get-Process zurückgibt nen parameter "Name" hat. und das ist ja noch ein einfacher. verstehe ich nicht wie das einfacher sein soll. -
Re: schrott
Autor: dominikp1996 23.06.21 - 15:27
schulz_me schrieb:
--------------------------------------------------------------------------------
> dominikp1996 schrieb:
> ---------------------------------------------------------------------------
> -----
> > Vielleicht solltest du überlegen ob du für den Beruf geeignet bist wenn
> du
> > es nicht schaffst dich an die einfache Syntax von PowerShell zu halten
> oder
> > dich mal ausführlich damit zu beschäftigen.
> >
> > PowerShell hat sehr viele Vorteile was Automation von Prozessen und
> > Aufgaben angeht.
> >
> > Ob Bash oder PowerShell, man erreicht in beiden Welten sein Ziel.
>
> ja, danke. werde ich mal drüber nachdenken.
>
> natürlich kann man alles in beiden welten erreichen, aber die frage ist wie
> aufwändig es ist. und ich bezweifle, dass du viel auf der bash unterwegs
> wars, wenn du die PS syntax als einfach bezeichnest. als praktiker ist es
> ein himmelweiter unterschied ob man mal eben mit "|grep" hinter einem
> befehl ein ergebnis verfeinern kann oder das so umständlich wie auf der PS
> machen muss. und sich ausführlich damit beschäftigen, müsste man
> tatsächlich um es zu benutzen. wenn du dafür zeit hast oder deine freizeit
> investieren möchtest, mach das.
>
In der Bash arbeite ich deutlich mehr, das liegt unter anderem daran dass ich einer der wenigen Linux Administratoren im Team bin. Ich schreibe Scripte in Bash seit nicht weniger als 10 Jahren. Ich denke ich kenne mich ganz gut darin aus ^^.
Ich finde dennoch das Powershell Scripte deutlich einfacher zu lesen aber gleichzeitig mächtig sind. Mit Select und Where hat man sehr mächtige Befehle zum Filtern und Selektieren. Ähnliches ist auch mit grep und awk möglich, jedoch sieht es anschließend nicht so schön aus =).
Klingt verrückt, aber ich habe meine Hobby zum Beruf gemacht. Ich liebe was ich mache und mache es gerne auch 24/7.
> was die automation usw. angeht, davon habe ich ja nie gesprochen.
> Vielleicht solltest du überlegen ob du für das golem-Forum geeignet bist
> wenn du es nicht schaffst Posts richtig zu lesen? ;)
Ich werde mal darüber nachdenken ;)