PowerShell 7 und Windows PowerShell. Tobias Weltner

Читать онлайн.
Название PowerShell 7 und Windows PowerShell
Автор произведения Tobias Weltner
Жанр Математика
Серия
Издательство Математика
Год выпуска 0
isbn 9783960104803



Скачать книгу

target="_blank" rel="nofollow" href="#ulink_a9a3a36f-6581-56fb-a03a-8386125aa963">Listing 1.7 zeigt ein Beispiel aus der Praxis, das alle laufenden Anwendungen in einem Auswahlfenster anbietet. Die ausgewählten Anwendungen werden geschlossen (jedenfalls dann, wenn Sie in Listing 1.7 den Parameter -WhatIf entfernen, der ansonsten das Stoppen der Prozesse nur simuliert).

      Where-Object MainWindowHandle |

      Select-Object -Property Name, Id, Description |

      Sort-Object -Property Name |

      Out-GridView -Title 'Prozesse' -OutputMode Multiple |

      Stop-Process -WhatIf

       Listing 1.7: Einsatzbeispiel eines Auswahldialogs

      Listing 1.7 funktioniert in allen PowerShell-Varianten, aber aufgrund des grafischen Auswahlfensters nur in Windows. Um das Skript plattformübergreifend einzusetzen, ersetzen Sie lediglich den Befehl Out-GridView durch Out-ConsoleGridView (sofern Sie den Befehl wie oben nachgerüstet haben).

      Out-ConsoleGridView ist eine hervorragende Umsetzung im Stile des bekannten Norton Commander, und die zur Auswahl gestellten Einträge lassen sich bequem per Maus anklicken (siehe Abbildung 1.12).

       Abbildung 1.12: Ein textbasiertes plattformübergreifendes Dialogfeld verwenden

       PowerShell einrichten

      Falls Sie noch nie mit textbasierten Shells gearbeitet haben, lernen Sie jetzt die allerwichtigsten PowerShell-Grundlagen kennen. Dazu gehört auch, wie man bequem und möglichst ohne Tippfehler auch größere Eingaben bewältigt.

      Anschließend schauen wir uns gleich noch die wichtigsten Sicherheitseinstellungen an, damit Sie PowerShell auch tatsächlich voll nutzen und alle Beispiele aus diesem Buch ausführen können.

       Vorsicht mit Administratorrechten!

      Starten Sie die PowerShell nicht routinemäßig mit Administratorrechten. Die PowerShell ist ein Profiwerkzeug, genau wie die Kettensäge des Waldarbeiters. Sie können damit in Sekundenschnelle viel lästige Arbeit erledigen, aber ebenso schnell mit den falschen Befehlen enorme Schäden anrichten.

      Solange die PowerShell nicht mit Administratorrechten gestartet wird, sind Sie vor gröbstem Unfug gefeit und können zumindest das Betriebssystem nicht beschädigen. Nutzen Sie Administratorrechte also ausschließlich dann, wenn Aufgaben dies wirklich erfordern und Sie genau wissen, was Sie tun.

       Hinweis

      Bei Windows lassen sich Administratorrechte nicht nachträglich zuschalten (so wie mit sudo bei Linux). Administratorrechte müssen beim Start einer Anwendung vergeben werden – oder eben nicht. Wenn Sie also bei Windows Administratorrechte benötigen, öffnen Sie eine neue PowerShell explizit als Administrator (siehe Abbildung 1.7).

       Interaktive Befehle eingeben

      Im Fenster sehen Sie die Eingabeaufforderung. Sie beginnt mit PS, und dahinter steht der Pfadname des Ordners, in dem Sie sich gerade befinden. Eine blinkende Einfügemarke wartet auf Ihre ersten Eingaben. Geben Sie zum Beispiel testweise ein:

      PS> hallo image

      Sobald Sie image drücken, wird Ihre Eingabe an PowerShell geschickt und verarbeitet. Das Ergebnis folgt postwendend, und erst jetzt stellt sich heraus, ob PowerShell mit dem, was Sie geschickt haben, etwas anfangen konnte. Falls nicht, erscheint eine spröde rote Fehlermeldung, die bei Windows PowerShell so aussehen könnte:

      hallo : Die Benennung "hallo" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei

      oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der

      Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.

      In Zeile:1 Zeichen:1

      + hallo

      + ~~~~~

      + CategoryInfo : ObjectNotFound: (hallo:String) [],CommandNotFoundException

      + FullyQualifiedErrorId : CommandNotFoundException

      Bei PowerShell 7 werden Fehlermeldungen etwas abgekürzt, stattdessen erhalten Sie mitunter Korrekturvorschläge (mit derzeit allerdings kaum wahrnehmbarem Praxisnutzen):

      hallo: The term 'hallo' is not recognized as a name of a cmdlet, function, script file, or

      executable program. Check the spelling of the name, or if a path was included, verify that the path

      is correct and try again.

      Suggestion [4,General]: The most similar commands are: gal, nal, sal, kill, help, Table, algm,

      echo, del, clc.

      Rote Fehlermeldungen sorgen bei den meisten Anwendern für einen Adrenalinschub oder führen zu Flüchen, aber eines tun die wenigsten: die Fehlermeldung lesen. Genau das sollten Sie aber tun, denn häufig stecken darin hilfreiche Informationen. So auch hier:

      Die Benennung »hallo«, also das, was Sie als Befehl an PowerShell geschickt haben, war kein ausführbarer Befehl. Ausführbare Befehle sind gemäß Fehlermeldung Cmdlets, Funktionen, Skriptdateien oder ausführbare Programme. Damit wissen Sie nun schon einmal ungefähr, was Sie alles bei PowerShell ausführen können.

       Profitipp

      Falls es Sie stört, dass PowerShell den Pfadnamen des aktuellen Ordners im Prompt (auch Eingabeaufforderung genannt) anzeigt, geben Sie diesen Befehl ein:

      PS> cd \ image

      Damit wechseln Sie in den Stammordner des aktuellen Laufwerks, also vermutlich zu C:\, und die Eingabeaufforderung ist jetzt immerhin kürzer und vergeudet in der Konsole keinen wertvollen Platz mehr.

      Wenn Sie sich mehr zutrauen, könnten Sie auch folgenden Code eingeben: Er verändert den Prompt, sodass dieser nun stets ein kurzes PS> anzeigt und den aktuellen Pfad stattdessen in die Titelleiste des Fensters schreibt:

      function prompt {

      'PS> '

      $host.UI.RawUI.WindowTitle = Get-Location

      }

       Listing 1.8: Einen kürzeren Prompt für das PowerShell-Konsolenfenster

      Es gibt sogar Anwender, die auf die rote Farbe der Fehlermeldung besonders sensibel mit einem Adrenalinschub reagieren und eine grüne Fehlermeldung grundsätzlich nervenschonender finden. Geben Sie dazu ein:

      $host.PrivateData.ErrorForegroundColor