PowerShell 7 und Windows PowerShell
Реклама. ООО «ЛитРес», ИНН: 7719571260.
Оглавление
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
.....