PowerShell 7 und Windows PowerShell

PowerShell 7 und Windows PowerShell
Автор книги: id книги: 2108829     Оценка: 0.0     Голосов: 0     Отзывы, комментарии: 0 1863,11 руб.     (20,4$) Читать книгу Купить и скачать книгу Электронная книга Жанр: Математика Правообладатель и/или издательство: Bookwire Дата добавления в каталог КнигаЛит: ISBN: 9783960104803 Скачать фрагмент в формате   fb2   fb2.zip Возрастное ограничение: 0+ Оглавление Отрывок из книги

Реклама. ООО «ЛитРес», ИНН: 7719571260.

Описание книги

Erprobtes Praxiswissen für das Allzweckwerkzeug PowerShell Tobias Weltner ist Organisator der psconf.eu und einer der weltweit führenden PowerShell-Experten Praxiswissen für alle Versionen der PowerShell Verständliche Erklärungen, kompakte und motivierende Code-Beispiele PowerShell ist eine hochmoderne Shell-Sprache. Im Windows-Umfeld entstanden, ist sie inzwischen für Linux und macOS und die Cloud verfügbar und wird auch zur Gerätesteuerung eingesetzt. Als plattformunabhängige Open-Source-Software ist sie sicher und zukunftsfähig.Dr. Tobias Weltner, einer der weltweit führenden PowerShell-Experten, erklärt Schritt für Schritt, praxisnah und mit wenigen Zeilen Code, wie man wiederkehrende Aufgaben automatisiert: Ob Sie beruflich Server oder Software remote konfigurieren oder privat Ihre Farbwechsellampen fernsteuern möchten – fast alles ist möglich. Wer das «IT-Allzweckwerkzeug» PowerShell beherrscht, steigert ganz erheblich seine Lösungskompetenz und seinen Wert für ein Unternehmen. Sie entscheiden selbst, wie schnell und wie tief Sie einsteigen. Bereits nach den ersten Kapiteln werden Sie erfolgreich und effizient Routineaufgaben automatisieren. Dieses Praxisbuch vermittelt Ihnen das nötige Wissen und Know-how, um PowerShell-Code parallel auf hunderten von Servern auszuführen, grafische Oberflächen und Fenster zu erzeugen, Heimgeräte zu steuern und eigene Befehlserweiterungen zu erstellen.

Оглавление

Tobias Weltner. PowerShell 7 und Windows PowerShell

PowerShell 7 und Windows PowerShell

Inhalt

Vorwort

Wie Sie dieses Buch nutzen

Achtung

Noch mehr Unterstützung

Kapitel 1. PowerShell: Erste Schritte

Achtung

Hinweis

PowerShell installieren

Windows-Betriebssystem

Immer vorhanden: Windows PowerShell

Ist Ihre Windows PowerShell noch aktuell?

Tipp

PowerShell 7: die »neue« PowerShell

Profitipp

Einfache Installation über den Microsoft Store

Achtung

Listing 1.1: Microsoft Store mit PowerShell öffnen. Wichtig

Hinweis

Tipp

Hinweis

PowerShell manuell installieren

Listing 1.2: Fehlenden Installationsbefehl nachrüsten

Hinweis

Profitipp

Kostenlose Softwareverteilungssysteme: Paketmanager

Chocolatey und Scoop

Voraussetzungen

Listing 1.3: Internetsicherheitsprotokoll TLS 1.2 für PowerShell erlauben

Listing 1.4: PowerShell-Skripte in der aktuellen PowerShell-Sitzung erlauben. Achtung

Chocolatey als Softwareverteilung

Achtung

Listing 1.5: Chocolatey installieren

Scoop als Softwareverteilung

Listing 1.6: Scoop installieren

Tipp

Andere Paketverwaltungssysteme

PowerShell nachrüsten: macOS und Linux

Linux

Hinweis

macOS

Kompatibilität der PowerShell

Abwärtskompatibilität der Sprache

Verfügbarkeit von Befehlen

Out-GridView

Listing 1.7: Einsatzbeispiel eines Auswahldialogs

PowerShell einrichten

Vorsicht mit Administratorrechten!

Hinweis

Interaktive Befehle eingeben

Profitipp

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

Listing 1.9: Grüne statt rote Fehlermeldungen

Autovervollständigung: Tippfehler vermeiden

Tipp

Hinweis

Befehlszeilen erneut verwenden

Groß- und Kleinschreibung

Unvollständige und mehrzeilige Eingaben

PowerShell-Hilfe aus dem Internet nachladen

Achtung

Achtung

Tipp

Skriptausführung erlauben

Weitere PowerShell-Einschränkungen

Achtung

Wichtige PowerShell-Werkzeuge

PowerShell-ISE-Editor

Hinweis

Hinweis

VSCode (Visual Studio Code)

Hinweis

Projektordner anlegen

Neues PowerShell-Skript anlegen

Profitipp

PowerShell-Unterstützung installieren

PowerShell-Version wählen

Alternative PowerShell-Hosts in VSCode einbinden

Listing 1.10: PowerShell Editor Services testweise manuell nachladen

Portable PowerShell herunterladen

Listing 1.11: Portable Version der PowerShell herunterladen

Neue PowerShell in VSCode einbinden

Achtung

Skript ausführen

PowerShell als Standardsprache einrichten

Windows-Terminal

Tipp

Transparenter Hintergrund

Weitere Konsoleneinträge für das Auswahlmenü

Wichtig

Windows-Terminal in eine portable App verwandeln

Listing 1.12: Das Windows-Terminal in eine portable Anwendung verwandeln. Codebeispiele automatisch herunterladen

Befehl zum Herunterladen von Codebeispielen nachrüsten

Listing 1.13: Beispielcode aus diesem Buch bequem herunterladen. Beispielcode in Zwischenablage kopieren

Wichtig

Beispielcode sofort ausführen

Hinweis

Profilskripte: PowerShell dauerhaft anpassen

Einzelne Profilskripte verwenden

Listing 1.14: Profilskript anlegen

Listing 1.15: Ein Beispiel-Profilskript für PowerShell

Listing 1.16: Profile von PowerShell und Windows PowerShell gemeinsam nutzen

Achtung

Fragen stellen

Wichtig

Wichtig

Alle Skripte herunterladen

Zusammenfassung

Ausführungsrichtlinie festlegen

Profitipp

Hilfe nachrüsten

Windows PowerShell aktualisieren

Achtung

Version prüfen

Paketmanager PowerShellGet überprüfen

Listing 1.17: »PowerShellGet« aktualisieren. Tipp

Profitipp

Hilfsbefehle zum Download von Beispielcode

»Fehlende Befehle« verstehen

Zusätzliche Werkzeuge

Kapitel 2. Überblick: Was PowerShell leistet

Wichtig

Befehle lösen Aufgaben

Literale

Hinweis

Text

Texte mit eingebetteten Variablen

Tipp

Anführungszeichen im Text

Here-Strings

Achtung

Zahlen

Datum und Zeit

Kommentare

Besondere Kommentare

Interaktive Konsole

Gespeichertes Skript

Editoren

Cmdlets: die PowerShell-Befehle

Hinweis

Nach Tätigkeitsbereich suchen (»Noun«)

Nach Tätigkeit suchen (»Verb«)

Hinweis

Beispiel: Ungefährliche Cmdlets zum Experimentieren finden

Beispiel: Netzwerkbefehle finden

Nach Herkunft suchen

Hinweis

Standardisierte Verben

Zugelassene Verben auflisten

Aus der Praxis

Logische Verbpärchen

Listing 2.1: Häufig verwendete Verben ermitteln

Tipp

Cmdlets per Fenster suchen

Achtung

Achtung

Suchen

Tipp

Befehlsaufruf konzipieren

In Befehlsaufruf verwandeln

Gemeinsamkeiten aller Cmdlets

Mit Autovervollständigung suchen

Syntax verstehen

Profitipp

Ausführliche Hilfe und Beispiele

Schneller Blick auf Cmdlet-Parameter

Hinweis

Hilfe für Parameter nachschlagen

Anwendungsprogramme (Applications)

Applications starten

Aus der Praxis

Applications finden

Aus der Praxis

Profitipp

Listing 2.2: Ein neues Cmdlet zur Suche nach unbekannten Befehlen nachrüsten

Systemsteuerung automatisieren

Tipp

Systembefehle nutzen

Akkunutzungsreport generieren

Listing 2.3: Vollautomatisch Akkureport der letzten 14 Tage generieren

Hilfe für Applications abrufen

Ausführlichere Hilfe für Applications

.NET-Methoden

Methoden verwenden

Hilfe für Methoden

Noch mehr Methoden

Methoden: vielseitiger, aber kleinteiliger

Methoden für ZIP-Dateien »ausborgen«

Listing 2.4: Inhaltsverzeichnis einer ZIP-Datei auslesen (unzuverlässig)

Listing 2.5: Inhaltsverzeichnis einer ZIP-Datei auslesen (zuverlässig)

Nur bestimmte Dateien aus ZIP-Archiv entpacken

Listing 2.6: Selektiv nur PNG-Dateien aus einem ZIP-Archiv extrahieren

Alles wird einfach

Listing 2.7: Eigener neuer Befehl Expand-ArchivePart

Operatoren

Profitipp

Operatoren nachschlagen

Vergleichsoperatoren

Textoperatoren

Listing 2.8: Ein sehr einfacher Kennwortgenerator. Zuweisungen und Pipeline

Listing 2.9: Kennwortgenerator mit Variablen und Pipeline. Achtung

Zahlenreihen

Listing 2.10: Lottozahlenziehung per PowerShell

Befehle verbinden

Das Türchen-Modell

Normalfall: »Türchen 3«

Modernes Pipeline-Streaming: »Türchen 1«

Hinweis

PowerShell-SQL

Erwünschte Spalten selbst festlegen

Tipp

Listing 2.11: Betriebssystem-Versionsinfos aus der Registry abrufen

Unerwünschte Zeilen herausfiltern

Beliebige Befehle verketten

Dialogfelder für den Helpdesk

Listing 2.12: Anwendungsprogramme per Dialogfeld auswählen und beenden

Hinweis

Sonntagskinder: Wochentag eines Datums finden

Listing 2.13: Wochentag bestimmen, auf den ein Datum fällt

Beliebige Dateien in ein ZIP-Archiv verpacken

Listing 2.14: Alle PowerShell-Skripte aus dem eigenen Benutzerprofil in eine ZIP-Datei speichern. Klassische Variablen: »Türchen 2«

Listing 2.15: Wochentagsbestimmung mit Variablen anstelle der Pipeline

Profitipp

Neue Befehle nachrüsten

Beispiel 1: QR-Codes generieren

Wichtig

Wichtig

Hinweis

Beispiel 2: Automatische HTML-Reports

Eine Tabelle als HTML-Report

Listing 2.16: Einen HTML-Report erstellen

Mehrere Tabellen anzeigen

Listing 2.17: Einen HTML-Report mit zwei Tabellen generieren

Konditionale Formatierung

Listing 2.18: HTML-Report mit farbig hervorgehobenen Diensten, die nicht laufen oder abgeschaltet sind

Diagramme

Listing 2.19: Zweispaltiger HTML-Report mit einem Prozessdiagramm

Tipp

Beispiel 3: Musik spielen

Einfache Töne spielen

Listing 2.20: Star Wars Imperial March spielen

Echte Noten angeben

Listing 2.21: Echte Noten in Töne umwandeln

Imperial March als Orchesterpartitur spielen

Listing 2.22: Digitales Notenblatt für den Imperial March herunterladen

Listing 2.23: Eine MIDI-Musikdatei mit PowerShell abspielen. Tipp

Notenblätter anzeigen und ausdrucken

Tipp

»MuseScore« als Automationsbefehl einsetzen

Listing 2.24: Speicherort einer laufenden Anwendung ermitteln

Notenblätter als PDF-Dateien herstellen

Listing 2.25: Automatisiert eine .mid-Datei in ein Notenblatt im PDF-Format konvertieren

Zusammenfassung

Kapitel 3. Skripte und Funktionen

Wichtig

PowerShell-Skripte verstehen

Skriptcode eingeben

Listing 3.1: Erstes kleines Skript, um Ihr Alter zu bestimmen

Skripte mit dem ISE-Editor entwickeln

Neues Skript anlegen

Skripte mit dem VSCode-Editor entwickeln

Hinweis

Neue Skripte anlegen

Skripte ausführen

Skripte innerhalb von PowerShell starten

Tipp

Skripte wie Befehle aufrufen

Achtung

Skripte außerhalb von PowerShell starten

Tipp

Skriptpfad als Argument für PowerShell

Konsolenfenster geöffnet halten

Listing 3.2: Verschiedene Möglichkeiten, auf einen Tastendruck zu warten. Fenstergröße und unsichtbare Skriptausführung

Encoded Commands

Listing 3.3: PowerShell-Code direkt ausführen. Achtung

Listing 3.4: Code in einen Befehlsaufruf mit encodiertem Argument verwandeln

Listing 3.5: Ein encodierter PowerShell-Befehl

Skripte automatisch starten

Skriptstart durch Task Scheduler

Einen Scheduled Task anlegen

Hinweis

Schritt 1: Ein geeignetes Skript entwickeln

Feststellen, wer Ihren Computer verwendet

Listing 3.6: Herausfinden, wer sich wann an einem Windows-Betriebssystem angemeldet hat

Listing 3.7: Enums und »sprechende« Werte

Listing 3.8: Informationen analysieren, die eine bestimmte Ereignis-ID zurückmeldet

Listing 3.9: Abmeldeereignisse aus dem Security-Ereignislogbuch lesen

Listing 3.10: Automatisch alle von »PowerShellGet« nachinstallierten Module auf Updates prüfen

Achtung

Listing 3.11: Automatische Logbuchdatei überprüfen

Schritt 2: Skript extern ausführen lassen

Achtung

Schritt 3: Automatischer Skriptaufruf

Listing 3.12: Ein Skript automatisch bei jeder Anmeldung ausführen

Achtung

Profitipp

Profilskripte – die Autostartskripte

Profitipp

Typische Aufgaben eines Profilskripts

Achtung

Vier verschiedene Profilskripte

»Current User Current Host«

»Current User All Hosts«

»All Users All Hosts«

»All Users Current Host«

Achtung

Profitipp

Profilskript anlegen und öffnen

Listing 3.13: Profilskript anlegen und öffnen. Typische Profilskriptaufgaben durchführen

Tipp

Aliase einrichten

Listing 3.14: Alias für den Windows-Geräte-Manager anlegen. Präferenzen festlegen

PowerShell für Vorsichtige

Wichtig

Standardwerte für Parameter

Listing 3.15: Als Standard-Encoding UTF8 verwenden

Hinweis

Kennwörter – Geheimnisse sicher speichern

Listing 3.16: Zwei verschiedene Anmeldeinformationen sicher verschlüsselt speichern

Listing 3.17: Verschlüsselte Anmeldeinfos in Profilskript laden

Neue Befehle: Funktionen

Schritt 1: Nützlicher Code

Listing 3.18: Text in Sprache umwandeln (Text-to-Speech)

Hinweis

Schritt 2: Als Funktion verpacken

Listing 3.19: Eine neue Funktion namens Out-TextToSpeech. Profitipp

Schritt 3: Parameter definieren

Parameter hinzufügen

Listing 3.20: Parameter definieren

Hinweis

Listing 3.21: Parameter können auch direkt hinter dem Funktionsnamen angegeben werden

Parameter implementieren

Listing 3.22: Die Funktion nutzt die übergebenen Parameter

Hinweis

Zwingend erforderliche Parameter

Listing 3.23: Sprachausgabe mit zwingendem Parameter für den Sprechtext

Profitipp

Schritt 4: Funktionen dauerhaft verfügbar machen

Funktionen im Modul permanent verfügbar

Listing 3.24: Funktion Out-TextToSpeech als Modul speichern

Achtung

Hinweis

Die gemeinsame Grundlage: der Skriptblock

Listing 3.25: Simpler Währungsrechner. Skripte sind gespeicherte Skriptblöcke

Funktionen sind vorgeladene Skriptblöcke

Listing 3.26: Ein benannter Skriptblock wird zu einer PowerShell-Funktion

Listing 3.27: Skriptcode in eine ausführbare Funktion verwandeln. Module laden Funktionen bei Bedarf in den Speicher

Skript oder Funktion?

Kapitel 4. Cmdlets – PowerShell-Befehle

Parameter steuern Cmdlets

Argumente an Parameter übergeben

Listing 4.1: Aktuellen Monatsnamen ermitteln. Parameter machen Cmdlets vielseitig

Listing 4.2: Mit Datumsplatzhaltern eigene Formatierungen definieren

Listing 4.3: Datumseingabe in ISO-Format umwandeln

Listing 4.4: Wochentag bestimmen, auf den in diesem Jahr Heiligabend fällt

Listing 4.5: Liste der installierten Hotfixes in einer Datei mit Zeitstempel im Namen speichern. Hinweis

Politisch inkorrekt: positionale Argumente

Positionale Argumente sind häufige Fehlerquellen

Listing 4.6: Cmdlets mit benannten Parametern einsetzen

Listing 4.7: Die Verwendung von positionalen Argumenten führt leicht zu Fehlern

Verkürzungsmöglichkeiten beim Cmdlet-Aufruf

Profitipp

Listing 4.8: Parameterinformationen für Cmdlet ermitteln

Gratiszugabe: »Common Parameters«

Auf Fehler reagieren

Vielseitigkeit durch Parametersätze

»Schmal, aber tief« – Cmdlets sind Spezialisten

Beliebige Daten sortieren

Listing 4.9: Verschiedene Einsatzbereiche von Sort-Object

Tipp

Listing 4.10: Vermeiden Sie es, Objekte zu sortieren, ohne mit -Property die zu sortierende Eigenschaft anzugeben. Deckt alle typischen Sonderwünsche ab

Listing 4.11: Doppelgänger aus einer Liste entfernen. Profitipp

Listing 4.12: Zufällige Reihenfolge für Zahlenliste

Listing 4.13: Komplexe Kennwörter herstellen

Listing 4.14: Sortieralgorithmus ändern durch vorübergehende Umwandlung der zu sortierenden Objekte

Listing 4.15: Verschiedene Eigenschaften in verschiedenen Sortierrichtungen

Listing 4.16: Hashtables sortieren. Mehrere Parametersätze: noch mehr Vielseitigkeit

Hinweis

Listing 4.17: Neuer Parameter in Sort-Object

Listing 4.18: Etablierte Cmdlets leisten dasselbe und gefährden nicht die Kompatibilität

Hinweis

Praxis: Ereignisse aus dem Ereignislogbuch lesen

Hinweis

Welche Ereignislogbücher gibt es überhaupt?

Hinweis

Listing 4.19: Ereignislogbücher nach Größe sortiert absteigend ausgeben

Logbuchinhalte lesen

Listing 4.20: 5 Einträge aus einem Ereignislogbuch lesen

Listing 4.21: Informationen aufbereiten und lange Zeilen umbrechen

Listing 4.22: Alle verfügbaren Informationen im GridView anzeigen lassen

Ergebnisse in Excel-Datei schreiben

Listing 4.23: Befehle für den Datenaustausch mit Excel nachinstallieren

Listing 4.24: Ereignislogbuchinformationen in Excel-Datei schreiben

Nach bestimmten Ereignissen suchen

Mit Hashtables filtern

Listing 4.25: Alle Fehler und Warnungen der letzten 24 Stunden aus dem System-Ereignislogbuch auslesen

Mit XML filtern

Listing 4.26: Als Verbose-Ausgabe die tatsächliche XML-Query ausgeben

Listing 4.27: Ereignislogbuchabfrage mit XML-Query. Hinweis

»ISA/HASA« – wie Cmdlets in der Pipeline funktionieren

Listing 4.28: Ein eingegebener Text wird in ein Datum verwandelt, und der Wochentag wird ausgegeben

Das »ISA/HASA«-Prinzip

»ISA« – Pipeline-Input »ist« die benötigte Information

»HASA« – Pipeline-Input »enthält« die benötigte Information

Listing 4.29: Übergabe einer Objekteigenschaft direkt an den Parameter eines folgenden Cmdlets. Praxisnutzen

Vorteile des Pipeline-Streamings

Listing 4.30: Kleine Helpdesk-Tools bieten Auswahldialoge an und ändern dann Betriebszustände

Echtzeit-Streaming

Listing 4.31: Alle Textstellen in allen Logdateien finden, die das Wort »Error« enthalten

Kapitel 5. Die PowerShell-Pipeline

Aufbau der PowerShell-Pipeline

Befehle reichen Ergebnisse weiter

Listing 5.3: Rohdaten im CSV-Format in Objekte verwandeln

Pipeline steuert Befehle

Parameter können Pipeline-Eingaben akzeptieren

Pipeline-fähige Parameter eines Cmdlets finden

Achtung

ByValue und ByPropertyName

Listing 5.4: Umwandlung von CSV-Daten in Objekte ohne Einsatz der Pipeline

Hinweis

Prinzipieller Aufbau der Pipeline

Tipp

Listing 5.5: Alle Logdateien im Windows-Ordner anzeigen, die größer sind als 10 MByte (mit Pipeline)

Listing 5.6: Alle Logdateien im Windows-Ordner anzeigen, die größer sind als 10 MByte (ohne Pipeline) Die sechs wichtigsten Pipeline-Befehle

Select-Object

Detailinformationen festlegen

Listing 5.7: Prozessname und Prozess-ID für alle laufenden Prozesse ausgeben. Unsichtbare Eigenschaften sichtbar machen

Eine bestimmte Eigenschaft auswählen: -ExpandProperty

Dateiversionen ausgeben

Listing 5.8: Informationen einer Datei anzeigen

Listing 5.9: Sämtliche Eigenschaften einer Datei anzeigen

Listing 5.10: Eine Versionsliste der Windows-Befehlsbibliotheken erstellen

Listing 5.11: Das komplette VersionInfo-Objekt sämtlicher Dateien im GridView anzeigen

Selbst festlegen, welche Informationen wichtig sind

Listing 5.12: Ergebnis von Get-Process auf verschiedene Fragestellungen anwenden. Hinweis

Weitere Informationen anfügen

Wichtig

-First, -Last und -Skip

Berechnete Eigenschaften

Listing 5.13: Dateigrößen werden in der Eigenschaft »Length« immer in Bytes angegeben

Listing 5.14: Dateigrößen automatisch in Kilobytes umrechnen und auf eine Nachkommastelle runden

Listing 5.15: Berechnete Eigenschaft mit eigenem Namen und berechnetem Inhalt. Profitipp

Listing 5.16: Hashtable für berechnete Spalte als Einzeiler mit abgekürzten Schlüsselnamen. Where-Object

Clientseitiger Universalfilter

Tipp

Tipp

Listing 5.17: Alle Eigenschaften eines Diensts sichtbar machen

Hinweis

Leere Elemente aussortieren

Fortgeschrittene Syntax bietet mehr Möglichkeiten

Out-GridView: das »menschliche« Where-Object

Listing 5.18: Kleines Helpdesk-Tool zum Restart ausgewählter Dienste

Listing 5.19: Alle gesperrten Konten auflisten und selektierte Konten entsperren. Sort-Object

Cmdlet-Ergebnisse sortieren

Tipp

Sortierung mit anderen Cmdlets kombinieren

Tipp

Datentyp der Sortierung ändern

Listing 5.20: Texte werden alphanumerisch sortiert, auch wenn die Texte wie Zahlen aussehen

Listing 5.21: Texte werden vorübergehend in Integer-Zahlen umgewandelt und numerisch sortiert

Listing 5.22: IPv4-Adressen werden alphanumerisch sortiert

Listing 5.23: IPv4-Adressen vorübergehend in Versionsnummern konvertieren und korrekt sortieren. Mehrere Spalten in umgekehrter Sortierung

Listing 5.24: Zwei Spalten in umgekehrter Sortierreihenfolge ausgeben

Group-Object

Häufigkeiten feststellen

Listing 5.25: Die häufigsten Probleme der letzten zehn Tage, die im System-Ereignislogbuch zu finden sind

Listing 5.26: Anzahl der Software, die von einem Hersteller auf Ihrem System gerade ausgeführt wird. Daten gruppieren

Listing 5.27: Laufende und gestoppte Dienste gruppenweise abrufen. Hinweis

Listing 5.28: Hashtable mit unzugänglichen Schlüsseln

Berechnete Gruppierungskriterien

Listing 5.29: Gruppennamen werden zu Hashtable-Schlüsseln

Measure-Object

Statistische Berechnungen

Ordnergrößen berechnen

Foreach-Object

Grundprinzip: eine Schleife

Format-Cmdlets

Gefährlich: Format-Cmdlets verändern Objekte

Mehrspaltige Anzeigen

Listing 5.30: Ordner-Listing dreispaltig ausgeben

Listing 5.31: Dreispaltiges Ordner-Listing mit jeweils zusammengefassten Informationen

Listing 5.32: Dreispaltiges Ordner-Listing mit Altersangabe der Dateien. Tabellenausgabe mit Gruppierung

Listing 5.33: Dateiliste als gruppierte Tabellen

Listing 5.34: Gruppierte Tabellenausgabe nach Dateialter

Kapitel 6. Arrays und Hashtables

Arrays verwenden

Listing 6.1: Mehrere Werte in einer Variablen speichern

Profitipp

Auf Array-Elemente zugreifen

Gezielt Elemente ansprechen

Tipp

Sämtliche Array-Elemente ansprechen

Listing 6.2: Ein IP-Segment herstellen

Listing 6.3: Klassische foreach-Schleife. Wichtig

Eigene Arrays (und einige Fallen)

Automatische Array-Erzeugung

Profitipp

Manuelle Array-Erzeugung

Schlecht: der +=-Operator

Listing 6.4: Langsam: Ein Array wird mit »+=« gefüllt. Hinweis

Viel besser: PowerShell-Automatismus nutzen

Listing 6.5: Viel schneller: PowerShell generiert das Array automatisch

Profitipp

Listing 6.6: Beliebiger Code in einem Skriptblock liefert automatisch Arrays. Gebräuchliche Ersatz-Arrays

Listing 6.7: Ein flexiblerer Array-Typ erlaubt das Hinzufügen von neuen Elementen ohne Zeitverlust

Listing 6.8: Ein typisiertes generisches Array verwenden, das nur Strings speichert. Tipp

Hashtables – »sprechende Arrays«

Tipp

Hashtables in Objekte umwandeln

Listing 6.9: Informationen in eigenem Objekt zusammenfassen

Profitipp

Neue Objekte mit Eigenschaften initialisieren

Listing 6.10: Ein Öffnen-Dialogfenster anzeigen. Hinweis

Weitere Einsatzbereiche

Listing 6.11: »$PSBoundParameters« führt Buch über die übergebenen Parameter und Argumente

Kapitel 7. PowerShell-Laufwerke

Dateisystemaufgaben meistern

Cmdlets für das Dateisystem finden

Listing 7.1: Komplette Liste der Laufwerk-Cmdlets ausgeben

Erste Schritte

Ordner anlegen

Bedingungen verwenden

Listing 7.2: Neuen Ordner anlegen, falls er noch nicht existiert

Listing 7.3: Hilfe zur if-Konstruktion abrufen. Profitipp

Listing 7.4: Funktionsweise des Ternary-Operators

Listing 7.5: Sehr dichter und schlecht lesbarer Einzeiler mit neuem Ternary-Operator

Listing 7.6: Ordner anlegen, falls er noch nicht existiert (Ternary-Operator) Dateien anlegen und Informationen speichern

Listing 7.7: PowerShell-Profildatei anlegen, falls sie noch nicht existiert

Achtung

Informationen in Dateien speichern

Listing 7.8: Texte in eine Datei schreiben

Listing 7.9: Alle installierten Updates eines Windows-Systems erfragen

Listing 7.10: Liste der installierten Updates ohne Informationsverlust in eine Textdatei schreiben

Profitipp

Listing 7.11: Nur erwünschte Spalten in Textdatei ausgeben

Listing 7.12: Selbst zusammengestellten Text in eine Datei schreiben

Listing 7.13: Liste installierter Updates als Excel-Sheet exportieren

Einfachen Text in Dateien schreiben

Encoding von Textdateien

Listing 7.14: Wenn Encodings nicht zueinander passen, können Texte nicht richtig gelesen werden

Encodings sichtbar machen

Listing 7.15: Cmdlet zur Bestimmung von Encodings nachinstallieren

Hinweis

Standard-Encoding

Listing 7.16: Standard-Encoding verschiedener Befehle überprüfen

Wichtige Schlussfolgerungen

Profitipp

Listing 7.17: UTF8 als Standardwert für alle -Encoding-Parameter

Dateien finden

Nach Dateinamen oder Dateitypen suchen

Listing 7.18: Dateien in einem ganzen Ordnerbaum finden

-Filter und -Include: Unterschiede verstehen

Mehrere Top-Level-Ordner durchsuchen

Alternative zur Rekursion

Nach Dateiinhalten suchen

Hinweis

Listing 7.19: Suchfunktion, um Skripte über ein Schlüsselwort wiederzufinden. Achtung

Dateien und Ordner kopieren

Einzelne Datei kopieren

Listing 7.20: Sicherheitskopie einer Datei anlegen. Achtung

Mehrere Dateien kopieren

Listing 7.21: Alle .log-Dateien aus dem Windows-Ordner in einen anderen Ordner kopieren

Listing 7.22: Sicherheitskopien für alle Skriptdateien auf dem Desktop anlegen. Ordner kopieren

Listing 7.23: Sicherheitskopie des PowerShell-Ordners anlegen

Listing 7.24: PowerShell-Profil mit robocopy.exe kopieren

Dateien umbenennen

Einzelne Datei

Listing 7.25: Datei anlegen und anschließend umbenennen. Ganze Ordnerinhalte umbenennen

Listing 7.26: Alle JPEG-Bilder aus dem Windows-Ordner in einen Testordner kopieren

Listing 7.27: Alle Bilder im Ordner mit laufender vierstelliger Zahl umbenennen

Achtung

Listing 7.28: Nützliche Befehlssammlung nachinstallieren, mit der unter anderem Datei-Metadaten lesbar sind

Dateien und Ordner löschen

Listing 7.29: Überflüssige Dateien von der Festplatte löschen. Achtung

Größe eines Laufwerks ermitteln

Listing 7.30: Speicherbelegung eines Laufwerks ermitteln. Hinweis

Größe eines Ordners ermitteln

Listing 7.31: Gesamtgröße eines Ordners feststellen

Umgebungsvariablen

Alle Umgebungsvariablen auflisten

Auf einzelne Umgebungsvariablen zugreifen

Profitipp

Listing 7.32: Variablen werden auf dem Laufwerk »variable:« gespeichert

Umgebungsvariablen ändern

Achtung

Listing 7.33: Umgebungsvariable dauerhaft anlegen beziehungsweise löschen

Hinweis

Windows-Registrierungsdatenbank

Schlüssel suchen

Werte lesen

Listing 7.34: Installierte Software aus der Windows-Registrierungsdatenbank lesen

Neue Registry-Schlüssel anlegen

Tipp

Listing 7.35: Registry-Schlüssel mit übergeordneten Schlüsseln anlegen, falls er noch fehlt. Registry-Schlüssel löschen

Tipp

Werte hinzufügen, ändern und löschen

Profitipp

Virtuelle Laufwerke und Provider

Tipp

Hinweis

Neue PowerShell-Laufwerke

Listing 7.36: Laufwerk »desktop:« anlegen. Tipp

Listing 7.37: Wichtige Registry-Wurzeln als neue Laufwerke zugänglich machen. Profitipp

Ohne Laufwerksbuchstaben direkt auf Provider zugreifen

-Path oder -LiteralPath?

Existenz eines Pfads prüfen

Pfadnamen auflösen

Kapitel 8. Operatoren und Bedingungen

Operatoren – Aufbau und Namensgebung

Wie Operatornamen aufgebaut sind

Unäre Operatoren

Zuweisungsoperatoren

Listing 8.1: Zuweisungsoperator einsetzen

Tipp

Mehreren Variablen unterschiedliche Werte zuweisen

Variableninhalte ändern

Null-bedingte Zuweisung

Listing 8.2: Werte nur dann zuweisen, wenn die Variable (noch) leer ist

Vergleichsoperatoren

Listing 8.3: Alarmmeldung bei niedrigem Akkustand ausgeben

Ternary-Operator

Listing 8.4: Klassisches Konstrukt: if-Bedingung verwendet einen Vergleichsoperator

Listing 8.5: Der Ternary-Operator funktioniert wie eine kompakte if-Anweisung

Listing 8.6: Ternary-Operator eignet sich vor allem dafür, einzelne Anweisungen auszuführen. Wichtig

Unterscheidung zwischen Groß- und Kleinschreibung

Unterschiedliche Datentypen vergleichen

Der Datentyp des ersten Werts zählt

Automatisches Widening

Hinweis

Vergleiche umkehren

Achtung

Vergleiche kombinieren

Vergleiche auf Arrays anwenden

Hinweis

Bedingungen

if-Bedingung

Listing 8.7: Die if-Konstruktion führt den Vergleich nicht selbst durch

Listing 8.8: Die if-Konstruktion führt den Vergleich selbst durch. switch-Bedingung

Listing 8.9: Die switch-Konstruktion führt mehrere Vergleiche durch

Listing 8.10: Diskrete Fehlernummern in Klartextmeldungen übersetzen. Profitipp

Listing 8.11: Diskrete Fehlercodes mit einer Hashtable übersetzen

Where-Object

Listing 8.12: Where-Object ist eine Pipeline-Bedingung

Listing 8.13: In Wirklichkeit wertet Where-Object eine gewöhnliche Bedingung aus. Profitipp

Listing 8.14: Pipeline-fähige Skriptblöcke können Where-Object ersetzen und direkt if-Bedingungen verwenden

Null-Koaleszenz-Operatoren

Profitipp

Listing 8.15: Datum erfragen und bei ungültigem Datum einen Standardwert einsetzen (PowerShell 7)

Listing 8.16: Datum erfragen und bei ungültigem Datum einen Standardwert einsetzen (alle Versionen) Pipeline-Verkettungsoperatoren

Hinweis

Wichtig

Listing 8.17: Exit-Code einer Anwendung auswerten

Achtung

Kapitel 9. Textoperationen und reguläre Ausdrücke

Texte zusammenfügen

Listing 9.1: Texte addieren

Profitipp

Doppelte Anführungszeichen lösen Variablen auf

Listing 9.2: Variablen direkt in Text einbetten

Listing 9.3: Ausdrücke und Befehlsaufrufe in Text integrieren

Wichtig

Der Formatierungsoperator -f

Listing 9.4: Der Operator -f trennt statischen Text von einzusetzenden dynamischen Inhalten

Platzhalter verstehen

Profitipp

Listing 9.5: Dynamische Codegenerierung erfordert geschweifte Klammern im Text

Listing 9.6: Mehrere Informationen in einen Text integrieren

Bündige Spalten herstellen

Listing 9.7: Dienste als bündige Tabelle ausgeben

Listing 9.8: PowerShell formatiert bündige Tabellen automatisch

Zahlen formatieren

Listing 9.9: Größe des Laufwerks C:\ in GByte mit einer Nachkommastelle angeben

Datums- und Zeitangaben formatieren

Profitipp

Array-Elemente in Text umwandeln

Listing 9.10: Lottozahlen als kommaseparierte Liste

Listing 9.11: Array-Elemente mit Zeichen umschließen

Profitipp

Listing 9.12: Automatische Umwandlung von Arrays in Text

Listing 9.13: Manuelle Umwandlung eines Arrays in Text

Listing 9.14: Automatische Umwandlung von Arrays zu Text mit eigenem Trennzeichen

Textstellen finden und extrahieren

Texte splitten

Hinweis

Listing 9.15: Kennwortgenerator für komplexe zufällige Kennwörter

Listing 9.16: Simpler Kennwortgenerator in einer Zeile. Informationen in Texten finden

Positionen bestimmen und Text extrahieren

Listing 9.17: Position einer Zahl innerhalb eines Texts bestimmen

Reguläre Ausdrücke

Hinweis

Achtung

Listing 9.18: Textmuster in Text finden. Profitipp

Listing 9.19: Textmuster in Text finden und Ternary-Operator zur Auswertung verwenden (PowerShell 7)

Reguläre Ausdrücke: Textmustererkennung

Hinweis

Erste Schritte: Textmuster basteln

Muster definieren

Achtung

Listing 9.20: Einen beliebigen Text automatisch mit Escape-Zeichen für reguläre Ausdrücke versehen

Tipp

Listing 9.21: Servernamen aus Text auslesen. Viele Treffer pro Datei finden

Listing 9.22: Eine Datei mit Textinhalten erstellen, die als Übungsobjekt für Regex-Ausdrücke dient

Listing 9.23: Servernamen aus dem Beispiellogbuch extrahieren

Muster erweitern

Hinweis

Listing 9.24: Mehrere Informationen aus jeweils einer Textzeile extrahieren

Ergebnisse in Objekte verwandeln

Listing 9.25: Direkt Objekte aus $matches herstellen

Listing 9.26: Benannte Unterausdrücke direkt in Objekte umwandeln

Gedanken aus der realen Praxis

Listing 9.27: Rohe Textinformationen mit festen Spaltenbreiten in strukturierte Objekte verwandeln

Eigene reguläre Ausdrücke konzipieren

Anker

Platzhalter

Quantifizierer

Längste oder kürzeste Fassung?

Listing 9.28: Längstmöglichen Treffer finden

Listing 9.29: Kürzestmöglichen Treffer finden

Textstellen ersetzen

Einfache Ersetzungen

Listing 9.30: Einfache Textersetzungen mit Replace()

Sichere Ersetzungen mit -replace

Listing 9.31: Textersetzungen mit -replace und regulären Ausdrücken

Mehrere Zeichen durch eins ersetzen

Split und Join: eine mächtige Strategie

Dateipfade ändern

Listing 9.32: Pfadbestandteile ändern mit -split und -join

X500-Pfade auslesen

Profitipp

Kapitel 10. Anwendungen und Konsolenbefehle

Programme starten

Profitipp

Tipp

Listing 10.1: Die simple Funktion leitet Argumente in »$args« weiter an den Startbefehl des Edge-Browsers

Optionen für den Programmstart festlegen

Warten, bis ein Programm wieder beendet ist

Programme unter anderem Benutzernamen ausführen

Profitipp

Hinweis

Profitipp

Argumente an Anwendungen übergeben

Hilfe für Konsolenbefehle anzeigen

Beispiel: Lizenzstatus von Windows überprüfen

Achtung

Ergebnisse von Anwendungen weiterverarbeiten

Error Level auswerten

Fragen an Benutzer stellen mit choice.exe

Achtung

Tipp

Rückgabetext auswerten

Hinweis

Laufende Programme steuern

Feststellen, ob ein Prozess läuft

Listing 10.2: Herausfinden, ob ein bestimmter Prozess ausgeführt wird

Auf einen Prozess warten

Listing 10.3: Warten, bis Microsoft Excel beendet wurde

Einstellungen laufender Prozesse ändern

Listing 10.4: Priorität der PowerShell vorübergehend verringern

Hinweis

Prozesse vorzeitig abbrechen

Kapitel 11. Typen verwenden

Profitipp

Typumwandlungen

Geeignete Datentypen auswählen

Explizite Umwandlung

Deutsches Datumsformat mit dem Operator -as

Profitipp

Listing 11.1: Benutzereingaben validieren und dann den Wochentag bestimmen, auf den ein Datum fällt

Verkettete Umwandlungen

Listing 11.2: In Benutzung befindliche Laufwerksbuchstaben

Listing 11.3: Nicht in Benutzung befindliche Laufwerksbuchstaben

Typen: optimale Informationsbehälter

Listing 11.4: Eigenschaften und Methoden eines DateTime-Objekts verwenden

Listing 11.5: Eigenschaften und Methoden eines Version-Objekts verwenden

Listing 11.6: Eigenschaften und Methoden eines E-Mail-Objekts einsetzen

Implizite Umwandlung

Typisierte Variablen

Profitipp

Parameter und Argumente

Vergleichsoperationen

Profitipp

Listing 11.7: Eine gültige IPv4-Adresse überprüfen

Listing 11.8: Der reguläre Ausdruck für eine IPv4-Adresse ist relativ komplex. Statische Methoden eines Typs verwenden

Listing 11.9: Zeitangaben aus dem Active Directory in DateTime-Format umrechnen

Listing 11.10: Tage eines Monats berechnen

Dateiextension ermitteln

Mathematische Funktionen

Zahlenformate konvertieren

DNS-Auflösung

Umgebungsvariablen

Pfade zu Systemordnern finden

Konsoleneinstellungen

Profitipp

Spezielle Datumsformate lesen

Datumsinformationen und verschiedene Kulturen

Listing 11.11: Das Skript »convert_datetime_culture.ps1« Statische Eigenschaften verwenden

Neue .NET-Typen finden

Type Accelerators untersuchen

Listing 11.12: Eingebaute Abkürzungen für Typen sichtbar machen

Profitipp

Typen nachladen

Assembly-Namen feststellen

Aktuell geladene Assemblies auflisten

Listing 11.13: Namensliste der automatisch geladenen Assemblies für die PowerShell-Konsole erstellen

Zusätzliche Assembly nachladen

Assembly aus Datei nachladen

Kapitel 12. Mit Objekten arbeiten

Objekte kennenlernen

Objekte funktionieren wie beschriftete Schubladen

Listing 12.1: Datumsinformation als objektorientierte Struktur sichtbar machen

Tipp

Profitipp

Typisierte Variablen

Objekteigenschaften erforschen

Listing 12.2: Laufzeit des Betriebssystems in Minuten ermitteln

Eigenschaften lesen

Profitipp

Eigenschaften ändern

Listing 12.3: Testdatei anlegen

Methoden verwenden

Profitipp

Listing 12.4: Alle Fehler und Warnungen der letzten 48 Stunden aus dem System-Ereignislog auslesen. Tipp

Zusammenfassende Systematik

Eigenschaften

Tipp

Automatic Unrolling: Punktschreibweise bei Arrays

Praxisbeispiel: Prozesspriorität ändern

Listing 12.5: Priorität des PowerShell-Prozesses absenken

Methoden

Tipp

Listing 12.6: Maximal drei Sekunden auf die Beendigung des Notepad-Editors warten

Listing 12.7: Einen Prozess beenden und dem Anwender anbieten, ungesicherte Informationen zu speichern. Hilfe finden

Listing 12.8: Neuer Befehl »Help()« für alle Objekte nachrüsten

Achtung

Neue Objekte herstellen

Konstruktoren verstehen

Listing 12.9: Get-Constructor liefert die Konstruktoren eines Typs

Ein Credential-Object zur automatischen Anmeldung

Listing 12.10: Ohne Anmeldedialog unter anderer Identität auf ein Remote-System zugreifen. Achtung

Listing 12.11: Export-Import-Credential.ps1

Hinweis

Eigene Objekte erstellen

Listing 12.12: Ein eigenes neues Objekt aus einer Hashtable erzeugen. Profitipp

Listing 12.13: Eine geordnete Hashtable merkt sich die Reihenfolge, in der Informationen eingetragen werden

Listing 12.14: Einen eigenen Datentyp definieren und ein Objekt dieses Typs verwenden

Achtung

Kapitel 13. Eigene Typen und Attribute

Typen (Klassen) selbst herstellen

Listing 13.1: Mehrere Informationen in einem Custom-Objekt speichern

Einen eigenen Typ erfinden

Listing 13.2: Eine neue Klasse (einen neuen Typ) definieren

Neue Objekte eines Typs generieren

Listing 13.3: Einen Piepton ausgeben

Listing 13.4: Ein neues Objekt vom Typ Person erzeugen und Daten darin speichern

Konstruktoren hinzufügen

Profitipp

Listing 13.5: Neuer Datentyp Person mit einem Konstruktor

Listing 13.6: Typ mit vier Konstruktoren

Profitipp

Methoden zum Typ hinzufügen

Listing 13.7: Laufwerksbuchstaben eines Pfads mit der Methode Substring() ermitteln

Listing 13.8: Eigener Typ mit Methode

Achtung

Profitipp

Vererbung von Typen

Listing 13.9: Auf Person aufbauender neuer Typ namens Programmierer

Konstruktoren werden nicht geerbt

Listing 13.10: Der Konstruktor greift auf den Konstruktor des ursprünglichen Typs zu

Profitipp

Listing 13.11: Die Klasse »SuperProcess« basiert auf der .NET-Klasse »System.Diagnostics.Process«

Listing 13.12: Einen neuen Prozess über einen eigenen Typ starten

Listing 13.13: Prozess mit Wartefrist beenden

Philips Hue Smart Home mit Typen steuern

Listing 13.14: Poshue-Modul downloaden und installieren. Kontakt zur Philips Hue Bridge herstellen

Listing 13.15: Modul Poshue manuell in den Speicher laden

Listing 13.16: Anonymer (eingeschränkter) Zugriff auf die Bridge

Listing 13.17: Einen neuen Zugangscode zur Bridge generieren

Listing 13.18: Authentifizierter Zugriff auf die Bridge. Lampen- und Schalterinventar

Lampen und Steckdosen ansprechen

Listing 13.19: Ein bestimmtes Licht oder eine Steckdose ansprechen

Attribute erstellen

SecureString-Transformationsattribute

Listing 13.20: Ein Transformationsattribut für die Umwandlung von String in SecureString

Listing 13.21: Funktion akzeptiert Klartext und promptet maskiert für SecureStrings. Auf API-Funktionen zugreifen

Listing 13.22: Eine Systemfunktion von Windows in PowerShell einblenden

API-Funktion einsetzen

Listing 13.23: Ein Anwendungsfenster vorübergehend unsichtbar machen. Wiederverwertbare PowerShell-Funktion herstellen

Listing 13.24: »Set-Window« kann die Fensterdarstellung von Prozessen kontrollieren

Achtung

Kapitel 14. Parameter für Fortgeschrittene

Argumentvervollständigung

Wichtig

Statische Autovervollständigung

Autovervollständigung über Enumerationsdatentyp

Listing 14.1: Autovervollständigung eines Parameters über seinen Datentyp

Listing 14.2: Eine Farbe mit Argumentvervollständigung auswählen

Profitipp

Listing 14.3: Enumerationswerte und ihre Konstanten auflisten

Eigene Enumerationsdatentypen erstellen

Listing 14.4: Enumeration in älteren PowerShell-Versionen anlegen. Achtung

Profitipp

Autovervollständigung über ValidateSet

Listing 14.5: Erlaubte Farbwerte mit ValidateSet-Attribut festlegen. Dynamische Argumentvervollständigung

Eigene dynamische Vorschlagslisten erzeugen

Listing 14.6: Einträge aus Ereignislogbüchern abrufen

Listing 14.7: Alle verfügbaren Ereignislogbücher auflisten

Listing 14.8: Alle Ereignislogbuchnamen derjenigen Logs vorschlagen, die Inhalte haben

Eigenen ArgumentCompleter schreiben

Achtung

Profitipp

Listing 14.9: Get-WinEvent mit besserer Autovervollständigung ausrüsten

Zuweisungen mit Validierern überprüfen

Hinweis

ValidateSet

ValidateRange

Listing 14.10: Der Parameter -Würfe akzeptiert nur Zahlen zwischen 1 und 3

Profitipp

Listing 14.11: Mehrere unabhängige Würfe unterstützt Get-Random ab PowerShell 7. ValidateLength

Listing 14.12: Einfache Ping-Funktion, die Computernamen zwischen fünf und zehn Zeichen Länge akzeptiert. ValidatePattern

Listing 14.13: Computername muss mit »Server« beginnen, gefolgt von einer ein- bis dreistelligen Zahl. ValidateCount

Listing 14.14: Bis zu fünf Computer anpingen und auf Verfügbarkeit testen

ValidateScript

Listing 14.15: Ausschließlich Programme starten, die im System32-Ordner lagern. Nullwerte und andere Validierer

Profitipp

Parameter in ParameterSets einteilen

Gegenseitig ausschließende Parameter

Listing 14.16: Das Skript Test-Binding1.ps1

Binding über Datentyp

Parameter in mehreren Parametersätzen

Listing 14.17: Parameter gleichzeitig optional und zwingend machen. Hinweis

Simulationsmodus (-WhatIf) und Sicherheitsabfrage (-Confirm)

Listing 14.18: Einfache Unterstützung für -WhatIf und -Confirm

Festlegen, welche Codeteile übersprungen werden sollen

Listing 14.19: Selbst bestimmen, welcher Code im Simulationsmodus übersprungen wird

Weiterleitung verhindern

Listing 14.20: Sicherheitseinstellungen werden normalerweise an Cmdlets weitergereicht

Hinweis

Gefährlichkeit einer Funktion festlegen

Listing 14.21: Die »Gefährlichkeit« einer Funktion festlegen

Tipp

Dynamische Parameter

Dynamische Parameter selbst definieren

Voraussetzungen

Listing 14.22: Ausgangsfunktion mit statischen Parametern

Listing 14.23: Dieselben Parameter dynamisch generieren. Splatting: Argumente an Parameter binden

Splatting im Alltag einsetzen

Listing 14.24: Alle PowerShell-Skripte im Windows-Ordner auflisten

Listing 14.25: Parameter und Argumente in einer Hashtable definieren und diese an einen Befehl »splatten« Übergebene Parameter als Hashtable empfangen

Listing 14.26: Das Skript Test-Parameter.ps1

Achtung

Mit Splatting Parameter weiterreichen

Listing 14.27: Informationen über Laufwerke von der WMI abrufen

Listing 14.28: Argumente aus eigener Funktion direkt an ein Cmdlet weiterreichen

Profitipp

Listing 14.29: Übergebene Argumente aus $PSBoundParameters entfernen

Listing 14.30: Parameterwert in $PSBoundParameters aufnehmen, falls der Anwender keinen Wert angibt

Kapitel 15. Pipeline-fähige Funktionen

Anonyme Pipeline-Funktion

Prototyping

Listing 15.1: Laufende und gestoppte Dienste in unterschiedlichen Farben und unterschiedlicher Ausführungsdauer ausgeben. Pipeline-fähige Funktion erstellen

Listing 15.2: Den Foreach-Object-Prototyp in eine Funktion verwandeln

Benannte Parameter

Listing 15.3: Pipeline-Eingabe über einen benannten Parameter empfangen

Wichtig

Listing 15.4: Auch der Parameter kann nun mehrere Dienste empfangen

Where-Object durch eine Funktion ersetzen

Tipp

Listing 15.5: Find-OldItem findet Dateien, die älter sind als die angegebene Anzahl von Tagen

Listing 15.6: Dateien und Ordner finden, die älter sind als eine bestimmte Anzahl von Tagen

Kurzes Resümee

Parameter und Pipeline-Kontrakt

ISA-Kontrakt: Pipeline-Eingaben direkt binden

Listing 15.7: Mehrere Pipeline-fähige Parameter. Automatische Bindung über den Datentyp

ParameterSets einsetzen

Wichtig

Listing 15.8: Parameter werden unterschiedlichen ParameterSets zugewiesen

Mehrdeutigkeiten auflösen

HASA-Kontrakt: Objekteigenschaften lesen

Listing 15.9: Eigenschaften direkt an Parameter binden

HASA und ISA kombinieren

Listing 15.10: Dateigrößen ausgeben

Hinweis

Listing 15.11: Wahlweise eine Zahl oder ein Objekt mit der Eigenschaft »ID« empfangen

CSV-Dateien direkt an Funktionen übergeben

Listing 15.12: Eine CSV-Datei mit Testdaten anlegen

Listing 15.13: Die Funktion empfängt Informationen direkt aus einer CSV-Datei

Aliasnamen für Parameter

Listing 15.14: Einen Pfadnamen aus verschiedenen Objekteigenschaften empfangen

Kapitel 16. PowerShellGet und Module

PowerShellGet – die PowerShell-Softwareverteilung

Wichtig

Listing 16.1: Prüfen, ob PowerShellGet mindestens in Version 2.0 vorliegt

Grundlage »PackageManagement«

PowerShellGet – Softwareverteilung per Cmdlets

Wo PowerShell Module lagert

Unterschiede zwischen Windows PowerShell und PowerShell

Wichtig

Installierte Module untersuchen

Listing 16.2: Alle installierten Module auflisten

Achtung

Listing 16.3: PowerShell-Modul manuell nachladen

Listing 16.4: Alle Module in allen Modulordnern neu untersuchen lassen. Module mit PowerShellGet nachinstallieren

Module finden und installieren

Modul herunterladen

Profitipp

Modul testweise ausführen

Modul dauerhaft installieren

Hinweis

Module aktualisieren

Side-by-Side-Versionierung

Eigene Module veröffentlichen

Hinweis

Eigene Module herstellen

Listing 16.5: Neuen Modulordner anlegen

Neue Manifestdatei anlegen

Listing 16.6: Ein neues Modulmanifest anlegen

Listing 16.7: Modulmanifest im Editor öffnen

Listing 16.8: Eine Manifestdatei für ein PowerShell-Modul. Wichtig

Neue Moduldatei anlegen

Achtung

Listing 16.9: Moduldatei anlegen und im ISE-Editor öffnen (Windows)

Listing 16.10: Installierte Software-Updates abrufen. Modul testen

Listing 16.11: Modul manuell in PowerShell importieren. Wichtig

Nächste Schritte

Profitipp

Eigene Module verteilen

Netzwerkfreigabe

Hinweis

Modul in Repository übertragen

Listing 16.12: Modul ins Repository übertragen

Modul aus privatem Repository installieren

Listing 16.13: Ein Modul aus einem privaten Repository herunterladen und installieren

Kapitel 17. Fehlerhandling

Fehlermeldungen unterdrücken

Bestimmen, wie Cmdlets auf Fehler reagieren

Fehler mitprotokollieren lassen

Listing 17.1: Universeller Auswertungsfilter für ErrorRecord-Informationen

Listing 17.2: Fehler mehrerer Cmdlets in einer Variablen sammeln

Listing 17.3: Default-Vorgaben für Fehlerhandling nutzen

Erfolg eines Befehlsaufrufs prüfen

Fehlerhandler einsetzen

Lokaler Fehlerhandler: try…catch

Listing 17.4: Einfache try…catch-Anweisung

Listing 17.5: Einen .NET-Fehler behandeln

Listing 17.6: Nicht alle Fehler von Cmdlets werden vom Fehlerhandler behandelt

Listing 17.7: Fehler eines Cmdlets in Echtzeit behandeln

Listing 17.8: Vom Cmdlet unbehandelte Fehler können immer von eigenen Fehlerhandlern behandelt werden

Listing 17.9: Im Praxisbeispiel mehrere Fehlerhandler verwenden

Listing 17.10: Im catch-Block auf den ErrorRecord zugreifen

Hinweis

Globaler Fehlerhandler: Trap

Listing 17.11: Fehlerhandler auf Basis von try…catch

Listing 17.12: Fehlerhandler auf Basis einer Trap

Listing 17.13: Skriptblöcke können Befehle zu Gruppen zusammenfassen

Kapitel 18. Windows PowerShell-Remoting

Wichtig

PowerShell-Remoting aktivieren

Zugriff auch auf Windows-Clients

Tipp

Profitipp

Remoting-Verbindung überprüfen

NTLM-Authentifizierung erlauben

Wichtig

Profitipp

PowerShell-Remoting überprüfen

Listing 18.1: Korrekte Einrichtung des PowerShell-Remotings überprüfen

Hinweis

Erste Schritte mit PowerShell-Remoting

Profitipp

Achtung

Befehle und Skripte remote ausführen

Kontrolle: Wer besucht »meinen« Computer?

Listing 18.2: Aktive Remoting-Sitzungen auf einem Computer bestimmen. Hinweis

Remotefähigen Code entwickeln

Argumente an Remote-Code übergeben

Listing 18.3: Fehlerereignisse von einem Remote-System abrufen (enthält Fehler)

Listing 18.4: Argumente an remote ausgeführten Code übergeben

Listing 18.5: Remote auf lokale Variablen zugreifen. Ergebnisse vom Remote-Code an den Aufrufer übertragen

Listing 18.6: Ergebnisse vom Remote-System zurück zum Aufrufer transportieren und dort speichern

Fan-Out: integrierte Parallelverarbeitung

ThrottleLimit: Parallelverarbeitung begrenzen

Aus der Praxis: Remote-Desktop aktivieren

Listing 18.7: Remote-Desktop-Zugriff remote ein- und ausschalten. Double-Hop und CredSSP: Anmeldeinfos weiterreichen

Listing 18.8: Eine transparente zweite Anmeldung ist nicht erlaubt

Listing 18.9: Explizite erneute Anmeldungen sind erlaubt

Achtung

Eigene Sitzungen verwenden

Eigene Sitzungen anlegen

Parallelverarbeitung mit PSSessions

Listing 18.11: Systeminformationen remote von zwei Computern abfragen

Hinweis

Listing 18.12: Nativen Konsolenbefehl remote ausführen (korrektes Encoding) SSH-basiertes Remoting

SSH-Remoting aktivieren

Hinweis

Listing 18.13: PowerShell-RemotingTools installieren

Listing 18.14: SSH-basiertes Remoting aktivieren

Listing 18.15: SSHD-Dienst neu starten

Enter-PSSession über SSH

Listing 18.16: Interaktive Remoting-Sitzung über SSH öffnen. Achtung

Achtung

Invoke-Command über SSH

Listing 18.17: Skriptblock über SSH-basiertes Remoting ausführen. Unbeaufsichtigte Ausführung und Parallelbearbeitung

Kapitel 19. Grafische Oberflächen gestalten

Eigene Fenster herstellen

Achtung

GUI mit Code definieren

Listing 19.1: Ein einfaches Dialogfeld herstellen

Hinweis

Listing 19.2: Ereignisse einer Schaltfläche ermitteln

Profitipp

Listing 19.3: WPF-Fenster auf korrekte Weise anzeigen und Speicherplatz freigeben

GUI mit XAML definieren

Listing 19.4: Ein WPF-Fenster mit XAML gestalten

Tipp

Beispiel: Dienststopper-Anwendung

Tipp

Listing 19.5: Dienststopper-Anwendung

Index

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

Отрывок из книги

Dr. Tobias Weltner

Das komplette Praxiswissen für Administratoren und IT-Profis

.....

13Eigene Typen und Attribute

Typen (Klassen) selbst herstellen

.....

Добавление нового отзыва

Комментарий Поле, отмеченное звёздочкой  — обязательно к заполнению

Отзывы и комментарии читателей

Нет рецензий. Будьте первым, кто напишет рецензию на книгу PowerShell 7 und Windows PowerShell
Подняться наверх