Windows Server-Administration mit PowerShell 5.1 (eBook)
XVII, 362 Seiten
Springer Fachmedien Wiesbaden (Verlag)
978-3-658-17666-2 (ISBN)
Peter Monadjemi ist ein erfahrener IT-Trainer und Entwickler, der die PowerShell seit der ersten Version kennt und intensiv nutzt. Seine Schwerpunkte sind das Automatisieren administrativer Abläufe und die Software-Entwicklung mit .NET und .NET Core.
Peter Monadjemi ist ein erfahrener IT-Trainer und Entwickler, der die PowerShell seit der ersten Version kennt und intensiv nutzt. Seine Schwerpunkte sind das Automatisieren administrativer Abläufe und die Software-Entwicklung mit .NET und .NET Core.
Windows Server-Administration mit PowerShell 5.1 4
Eine kompakte und praxisorientierte Einführung 4
Impressum 5
Vorwort 6
Open Source und PowerShell „on every System“ 7
Was lesen Sie in diesem Buch? 7
Die Beispiele zu diesem Kapitel 8
Kontakt zum Autor 8
Danksagungen 8
Inhaltsverzeichnis 9
1: PowerShell für Kurzentschlossene 18
1.1 Das WMF im Überblick 18
1.2 Die .NET-Laufzeit 20
1.2.1 Assemblys 20
1.3 Die Objekt-Pipeline 22
1.4 PSProvider und PSDrives 23
1.4.1 Dynamische Parameter 24
1.5 Functions, Aliase, Workflows und Configurations 25
1.6 Erweiterbarkeit 25
1.6.1 Ein Modulmanager in Gestalt des PowerShellGet-Moduls 27
1.7 Befehlssyntax 28
1.8 Die moderne Konsole 29
1.9 Hilfe 30
1.10 Andere Plattformen 31
2: Der Umgang mit Typen 32
2.1 Alles ist ein Objekt 32
2.1.1 Objekte basieren auf Typen 32
2.1.2 Den Typ eines Objekts herausfinden 33
2.2 Typen als Objekte 33
2.3 Die Typen eines Arrays erhalten 34
2.3.1 Auflisten der Konstruktoren einer Klasse 34
2.4 Neue Objekte anlegen mit dem New-Object-Cmdlet 36
2.4.1 Neue Objekte anlegen über die statische Methode New 36
2.4.2 Objekte mit Argumenten anlegen 36
2.4.3 Neue Objekte anlegen per [PSCustomObject] 37
2.5 Objektschreibweise 37
2.6 Das versteckte Member PSObject 38
2.7 Typen erweitern 38
2.8 Objekte erweitern über das Add-Member-Cmdlet 40
2.9 Typen definieren über externen Code 41
2.9.1 Zusammenfassung 43
3: Klassen definieren mit dem class-Befehl 44
3.1 Einleitung 44
3.1.1 Befehlswörter für die Definition von Klassen 45
3.2 Klassen definieren 45
3.3 Hinzufügen von Eigenschaften 46
3.4 Aus Klassen Objekte machen 48
3.5 Statische Member 48
3.6 Enumerationen 49
3.7 Aus Klassen werden Objekte 50
3.8 Klassen mit einem Konstruktor 51
3.8.1 Konstruktor mit Parameter 52
3.8.2 Versteckte Members 52
3.8.3 Überladene Konstruktoren 54
3.8.4 Klassen mit einem statischen Konstruktor 55
3.9 Methoden definieren 55
3.9.1 Methoden überladen 57
3.9.2 Statische Methoden 58
3.10 Klassen ableiten (Vererbung) 59
3.10.1 Ableiten mit einem Konstruktor, der nicht parameterlos ist 61
3.10.2 Ableiten von Klassen der .NET-Klassenbibliothek und der PowerShell-Bibliotheken 62
3.10.3 Members überschreiben 62
3.11 Typenformatierung mit eigenen Klassen 66
3.12 Zusammenfassung 68
4: Functions für Fortgeschrittene 69
4.1 Was macht eine Function „Advanced“? 69
4.1.1 Die Rolle der Attribute 69
4.1.2 Das Prinzip der Parameter-Zuordnung 70
4.2 Das CmdletBinding-Attribut 71
4.3 Das Parameter-Attribut 72
4.4 Die Parameterbindung im Detail 73
4.4.1 Wenn die Parameterbindung nicht funktioniert 74
4.4.2 Die Parameterbindung sichtbar machen 75
4.5 Functions mit Pipeline-Parametern 75
4.6 Functions, die die Pipeline abarbeiten 77
4.7 Functions mit einer eingebauten Bestätigungsanforderung 78
4.7.1 Die Auswirkung des Confirm-Parameters 79
4.7.2 Die Auswirkung des WhatIf-Parameters 79
4.7.3 Implementieren von Confirm und WhatIf an einem Beispiel 79
4.7.4 Eine Bestätigungsanforderung unabhängig von Confirm & Co
4.8 Parameter-Validierung 83
4.8.1 Einen Bereich validieren mit ValidateRange 83
4.8.2 Eine Auswahlmenge validieren mit ValidateSet 83
4.8.3 Ein beliebiges Kriterium validieren per ValidateScript 83
4.8.4 Credential-Parameter implementieren 84
4.8.5 Eigene Parameterattribute definieren 84
4.9 Dynamische Parameter 85
4.10 Zusammenfassung 87
5: Aus Functions und Skripte werden Module 88
5.1 Module und Modultypen 88
5.1.1 Skriptmodule 89
5.1.2 Manifestmodule 89
5.1.3 Binärmodule 89
5.1.4 Dynamische Module 90
5.1.5 Weitere Modulverzeichnisse hinzufügen 91
5.2 Manifestmodule im Detail 91
5.3 Verschachtelte Module 93
5.4 Mehrere Versionen eines Moduls verwenden 93
5.5 Internationale Module – Zeichenketten in Psd1-Dateien auslagern 94
5.5.1 Die Rolle der Kultur und das CultureInfo-Objekt 96
5.5.2 Ändern der aktuellen Kultur 97
5.6 Praxisteil: Erstellen eines Manifestmoduls 98
5.7 Zusammenfassung 100
6: PowerShell-Skripte testen mit Pester 101
6.1 Was testet Pester? 101
6.1.1 Testen und DevOps 102
6.2 Das Pester-Modul im Überblick 102
6.3 Die ersten Schritte mit Pester 103
6.4 Einen Test-Rahmen mit New-Fixture anlegen 106
6.5 Test-Ergebnisse vergleichen mit Should – die Rolle der Assertions 107
6.6 PowerShell-Commands nachbilden über Mocks 109
6.6.1 Feststellen, ob ein Mock-Command ausgeführt wurde 111
6.7 Tests in einen Ablauf einbeziehen 111
6.8 Testen als (Lebens-)Philosophie 111
6.9 Zusammenfassung 112
7: Skripte und Module bereitstellen 113
7.1 Die PowerShell-Paketverwaltung im Überblick 113
7.1.1 Ein Blick hinter die Kulissen 114
7.1.2 Überblick über das PackageManagement-Modul 117
7.1.3 Die ersten Schritte mit der Paketverwaltung 117
7.1.4 Anwendungspakete über Chocolatey installieren 117
7.1.5 Package-Provider offline installieren 121
7.1.6 Das PowerShellGet-Modul für die Modul- und Skriptverwaltung 121
7.1.7 Die ersten Schritte mit PowerShellGet 121
7.2 Eigene Ablagen für Module und Skripte einrichten 123
7.2.1 Skripte über GitHub als „Gists“ abrufen 126
7.2.2 Repository statt Webverzeichnis 126
7.2.3 Einrichten eines Modul-Repositorys mit MyGet 127
7.2.4 Skripte und Module in der PowerShell Gallery veröffentlichen 129
7.3 Arbeiten mit einer Versionsverwaltung 131
7.3.1 Schritt für Schritt 132
7.3.2 Git-Integration in Visual Studio Code 140
7.4 Aufsetzen einer Release-Pipeline für Module 143
7.4.1 Was genau ist eine Release-Pipeline? 143
7.4.2 Wo gibt es die Release-Pipeline? 144
7.4.3 Eine Release-Pipeline selber gebaut 145
7.4.4 Eine Release-Pipeline mit AppVeyor 148
7.4.5 Die ersten Schritte mit AppVeyor 149
7.4.6 Die Anatomie der Yaml-Datei 150
7.4.7 Ein PowerShell-Modul per AppVeyor bereitstellen 151
7.5 Zusammenfassung 153
8: DSC-Grundlagen 154
8.1 Ein erstes Beispiel 154
8.2 Ein wenig Theorie 161
8.2.1 MOF 161
8.2.2 DSC-Spracherweiterungen 162
8.2.3 Die Rolle der Ressourcen 162
8.2.4 Der Local Configuration Manager (LCM) 163
8.2.5 Pull statt Push 164
8.3 Verwenden von Konfigurationsdaten 165
8.4 Warum DSC? 167
8.5 Zusammenfassung 167
9: DSC in der Praxis 169
9.1 Auspacken von Zip-Dateien 169
9.2 Umgebungsvariablen anlegen 170
9.3 Dateien und Verzeichnisse anlegen 172
9.4 Lokale Benutzer und Gruppen anlegen 173
9.5 Registry-Schlüssel anlegen 174
9.6 Windows-Feature installieren 176
9.7 Prozesse starten 176
9.8 Systemdienste einrichten 177
9.9 DSC-Log-Meldungen schreiben 178
9.10 Beliebige Befehle ausführen 180
9.11 Einen Webserver einrichten 181
9.12 Eine Hyper-VM einrichten 185
9.13 Zusammenfassung 186
10: DSC für (etwas) Fortgeschrittene 187
10.1 Hinzufügen von DSC-Ressourcen 187
10.2 Ressourcenabhängigkeiten festlegen 188
10.3 Den LCM konfigurieren 189
10.4 Umgang mit Konfigurationsdaten 190
10.4.1 Konfigurationsdaten unterschiedliche Nodes zuordnen 191
10.4.2 Einzelne Nodes auswählen 192
10.4.3 Allgemeine Eigenschaften in den Konfigurationsdaten festlegen 193
10.4.4 Konfigurationsdaten, die nur allgemeine Einstellungen enthalten 194
10.4.5 Konfigurationsdaten mit strukturierten Werten 195
10.5 Kennwörter in einer Konfiguration verwenden 196
10.6 Einrichten eines Pull Servers 201
10.6.1 Überblick über das Einrichten eines Pull Servers 202
10.6.2 Einrichten eines webbasierten Pull Servers 202
10.6.3 Umstellen des LCM auf den Pull-Modus 207
10.6.4 Einen Pull Server testen 208
10.6.5 Die Rolle der Reportserver 209
10.7 DSC-Diagnose 209
10.8 Eigene Ressourcen definieren 211
10.8.1 Zusammengesetzte Ressourcen (Composite Resources) 215
10.9 Die PowerShell DSC-Cmdlets im Überblick 218
10.10 Zusammenfassung 220
11: Aus Text Objekte machen 221
11.1 Texte im CSV-Format konvertieren 222
11.2 Überschriften nachträglich hinzufügen oder vorhandene Überschriften ändern 223
11.3 Unregelmäßige Texte zerlegen 223
11.3.1 Texte mit dem Split-Operator zerlegen 223
11.3.2 Texte mit Hilfe regulärer Ausdrücke zerlegen 225
11.4 Objekte anlegen 227
11.4.1 Objekte mit dem New-Object-Cmdlet anlegen 227
11.4.2 Objekte mit einer Hashtable anlegen 228
11.4.3 Unregelmäßige Textdaten mit dem ConvertFrom-String-Cmdlet verarbeiten 228
11.4.4 XML-Daten verarbeiten 229
11.5 JSON-Daten verarbeiten 232
11.6 Zusammenfassung 233
12: Active Directory-Administration 234
12.1 AD DS und Domänencontroller einrichten 235
12.1.1 Aktualisieren der Hilfe 236
12.1.2 Authentifizierung 236
12.2 Suche nach Benutzerkonten per Get-AdUser 237
12.3 Die PowerShell-Abfragesyntax 237
12.3.1 Benutzerkonten auswählen über den Identity-Parameter 237
12.3.2 Die Rolle des Properties-Parameter bei Get-ADUser 238
12.3.3 Spezialfall zusammengesetzte Attribute 239
12.3.4 Eingrenzen der Suche 239
12.3.5 Suchen nach anderen AD-Objekten 239
12.4 Benutzer anlegen per New-AdUser 240
12.4.1 Benutzerkonten aktivieren 241
12.4.2 Benutzerkonten über eine CSV-Datei anlegen 241
12.5 Benutzerkonten ändern per Set-ADUser 241
12.5.1 Umgang mit Mehrwert-Attributen 242
12.6 Benutzerkonten löschen mit Remove-ADUser 242
12.7 Nach Kontenattributen suchen 243
12.8 Gruppenzugehörigkeiten verwalten 243
12.8.1 Nicht alles passt zusammen 244
12.9 Computerkonten abfragen per Get-AdComputer 245
12.10 Abfrageergebnisse mit Out-GridView kombinieren 245
12.11 Umgang mit Organisationseinheiten 246
12.12 Das AD-Laufwerk 246
12.13 Den AD-Papierkorb aktivieren 247
12.14 Einen AD LSD oder Open LDAP-Server ansprechen 248
12.15 Zusammenfassung 249
13: Azure-Administration per PowerShell 250
13.1 Ein erster Überblick 250
13.2 Der ARM im Überblick 251
13.2.1 Die Rolle der Resource Provider 251
13.2.2 Die Rolle der Templates 252
13.3 Zugriffssteuerung per BPAC 259
13.4 Die Azure PowerShell im Überblick 260
13.4.1 Abfragen der PowerShell-Version 260
13.4.2 Ein erster Überblick 261
13.4.3 Die ersten Schritte mit der Azure PowerShell 261
13.4.4 Beispiele aus der Praxis 263
13.4.5 Eine virtuelle Maschine über ein Template anlegen 268
13.4.6 Azure und DSC 269
13.5 Custom Script Extension als Alternative zu DSC 273
13.6 Zusammenfassung 276
14: Debugging für etwas Fortgeschrittene 277
14.1 Unsichtbare Variablen beim Debuggen 277
14.2 Der Debug-Modus im Überblick 278
14.3 Über das Wesen eines Haltepunktes 278
14.3.1 Allgemeine Haltepunkte setzen 278
14.3.2 Haltepunkt entfernen und deaktivieren 279
14.3.3 Haltepunkte für einen Befehl setzen 279
14.3.4 Haltepunkte für eine Variable setzen 279
14.3.5 Haltepunkte mit einer Bedingung verknüpfen 280
14.3.6 Ein Skript ohne Haltepunkte debuggen 280
14.4 Remote-Debugging von Skripten 280
14.4.1 Haltepunkte über Invoke-Command setzen 281
14.5 Einen Workflow debuggen 281
14.6 Runspaces debuggen 281
14.7 Zusammenfassung 283
15: Sicherheit 284
15.1 Die Rolle der Ausführungsrichtlinie 284
15.2 Umgang mit Credentials 285
15.2.1 Einen Secure String lesbar machen 287
15.2.2 Einen Secure String anlegen 288
15.2.3 Secure String-Dateien sicher speichern 288
15.3 Umgang mit Zertifikaten 289
15.4 Weiterer Umgang mit Zertifikaten 290
15.4.1 Auflisten bestimmter Zertifikate 290
15.5 Zertifikate anlegen 290
15.5.1 Selbstsignierte Zertifikate erstellen 291
15.6 Skripte signieren 294
15.7 Zeichenketten verschlüsseln 295
15.7.1 Texte verschlüsseln und entschlüsseln mit CipherNet 295
15.7.2 Zeichenketten mit Zertifikaten verschlüsseln 296
15.8 Umgang mit Zugriffsberechtigungen 297
15.8.1 Entfernen von Zugriffsberechtigungen 299
15.9 Die Befehlsausführung protokollieren 300
15.9.1 Befehlsprotokollierung per Gruppenrichtlinien steuern 300
15.9.2 Mehr Möglichkeiten bei Start-Transcript 302
15.10 PowerShell-Remoting-Endpunkte sichern mit Just Enough Administration (JEA) 303
15.10.1 JEA in der Praxis 304
15.11 Eine Session ohne Remoting einschränken 307
15.12 Das Invoke-Expression-Cmdlet und warum es potentiell gefährlich ist 308
15.12.1 Invoke-Expression per Scriptblock-Logging überwachen 309
15.13 Zusammenfassung 310
16: PowerShell für Linux 311
16.1 Ein erster Überblick 311
16.2 PowerShell unter Linux installieren 312
16.3 Die ersten Schritte unter Linux 313
16.4 Navigieren im Dateisystem 313
16.5 PowerShell-Remoting mit SSH 313
16.6 PowerShell versus PowerShell Core 315
16.7 Zusammenfassung 315
17: Wie man gute Skripte schreibt 316
17.1 Kommentare 316
17.2 Variableninitialisierung erzwingen 316
17.3 Aliase vermeiden 317
17.4 Datentypen für Parameter 317
17.5 Keine „Spuren“ hinterlassen 317
17.6 Der PSScriptAnalyzer 318
17.6.1 Eigene Regeln definieren 318
17.7 Zusammenfassung 320
18: Spaß mit der PowerShell 321
18.1 Zufallszahlen 321
18.2 Farbige Ausgaben 323
18.2.1 Farbe in der Konsole dank VT100-Unterstützung 324
18.3 Ein etwas anderer Prompt 326
18.3.1 Ein farbiger Prompt 327
18.4 Sounddateien abspielen 328
18.4.1 Systemso unds abspielen 328
18.4.2 Töne erzeugen 329
18.4.3 PowerShell-Musik 331
18.5 Die PowerShell lernt sprechen 331
18.5.1 Die .NET-Laufzeit kann auch sprechen 332
18.6 ASCII-Art und die 80er-Jahre 333
18.6.1 Bewegte ASCII-Art 333
18.7 Ein Zitat, bitte 334
18.7.1 Einen Internet-Zeitserver abfragen 335
18.8 Ein Matrix-Style-Bildschirmschoner 336
18.9 HAL ist IBM – der unwiderlegbare Beweis 336
18.10 April, April 336
18.11 Ein Spielhallenklassiker 338
18.12 Zusammenfassung 338
19: PowerShell für Entwickler 339
19.1 Unterschiede und Gemeinsamkeiten mit C# 339
19.2 Umgang mit Assemblys 340
19.3 Assemblys in eine PowerShell-Sitzung laden 341
19.3.1 Assemblys über ihren Pfad laden 342
19.3.2 Assemblys über ihren Namen laden 342
19.3.3 Alle geladenen Assemblys auflisten 343
19.3.4 Klassendefinitionen sichtbar machen 344
19.3.5 Den Inhalt einer Assembly sichtbar machen 344
19.4 Assemblys erstellen 346
19.4.1 Herunterladen von NuGet-Packages 347
19.5 Umgang mit generischen Typen 347
19.5.1 Generische Listen 348
19.5.2 Generische Methodenaufrufe 348
19.5.3 Aufruf einer generischen privaten Methode 349
19.6 Umgang mit Events 350
19.7 Das erweiterbare Typensystem 352
19.8 Cmdlets definieren 353
19.9 Benutzeroberflächen mit WPF 355
19.10 Win32-API-Funktionen aufrufen 359
19.11 Zusammenfassung 360
Glossar 361
Stichwortverzeichnis 364
Erscheint lt. Verlag | 27.7.2017 |
---|---|
Reihe/Serie | X.systems.press | X.systems.press |
Zusatzinfo | XVII, 362 S. 67 Abb. |
Verlagsort | Wiesbaden |
Sprache | deutsch |
Themenwelt | Mathematik / Informatik ► Informatik ► Betriebssysteme / Server |
Wirtschaft ► Betriebswirtschaft / Management ► Wirtschaftsinformatik | |
Schlagworte | Active Directory • Administration Active Directory • Azure-Dienste • CmdLets • Debuggen • Desired State Configuration • DevOps • Gruppenrichtlinien-Verwaltung • Konfigurationsmanagement • Linux • .NET Framenwork • Remote-Administration |
ISBN-10 | 3-658-17666-0 / 3658176660 |
ISBN-13 | 978-3-658-17666-2 / 9783658176662 |
Haben Sie eine Frage zum Produkt? |
Größe: 21,3 MB
DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasserzeichen und ist damit für Sie personalisiert. Bei einer missbräuchlichen Weitergabe des eBooks an Dritte ist eine Rückverfolgung an die Quelle möglich.
Dateiformat: PDF (Portable Document Format)
Mit einem festen Seitenlayout eignet sich die PDF besonders für Fachbücher mit Spalten, Tabellen und Abbildungen. Eine PDF kann auf fast allen Geräten angezeigt werden, ist aber für kleine Displays (Smartphone, eReader) nur eingeschränkt geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.
Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich