Windows PowerShell im Einsatz

Bruce Payette

Windows PowerShell im Einsatz

2007

592 Seiten

Format: PDF, Online Lesen

E-Book: €  39,99

E-Book kaufen

E-Book kaufen

ISBN: 9783446414167

 

Inhaltsverzeichnis

6

Geleitwort

16

Vorwort

18

Danksagung

20

Über dieses Buch

22

Teil I: PowerShell lernen

28

Willkommen bei PowerShell

30

1.1 Was ist PowerShell?

32

1.1.1 Shells, Befehlszeilen und Skriptsprachen

33

1.1.2 Warum eine neue Shell? Warum gerade jetzt?

34

1.1.3 Das Problem der letzten Meile

35

1.2 Seele einer neuen Sprache

35

1.2.1 Aus der Geschichte lernen

36

1.2.2 Unterstützung von .NET

36

1.3 OOP-Auffrischungskurs

38

1.3.1 Objektorientiertes Programmieren

38

1.3.2 Objekte in PowerShell

40

1.4 Heh! Wo bleibt der Code?

40

1.4.1 Installieren und starten von PowerShell

41

1.4.2 Editieren von Befehlen

43

1.4.3 Befehlsvervollständigung

44

1.4.4 Auswerten von elementaren Ausdrücken

45

1.4.5 Verarbeiten von Daten

46

1.5 Zusammenfassung

52

Grundlagen

54

2.1 Befehlskonzepte und Terminologie

55

2.1.1 Befehle und Commandlets

56

2.1.2 Befehlstypen

59

2.1.3 Aliase und flexible Syntax

63

2.2 Parsing und PowerShell

65

2.2.1 Wie PowerShell ein Skript zerlegt

66

2.2.2 Quoting

67

2.2.3 Parsing im Ausdrucks- und im Befehlsmodus

70

2.2.4 Terminieren von Statements

72

2.3 Pipelines und Befehle

74

2.3.1 Pipelines und Streamingverhalten

75

2.3.2 Parameter und Parameterbindung

76

2.4 Formatierung und Ausgabe

78

2.4.1 Die Format-Commandlets

79

2.4.2 Die Output-Commandlets

81

2.5 Zusammenfassung

84

Arbeiten mit Typen

86

3.1 Typenmanagement wie im wilden Westen

86

3.1.1 PowerShell: eine typ-promiskuitive Sprache

87

3.1.2 Typ-System und Typ-Adaption

89

3.2 Basistypen und Literale

91

3.2.1 Strings

91

3.2.2 Zahlen und numerische Literale

96

3.2.3 Collections: Dictionaries und Hashtabellen

98

3.2.4 Collections: Arrays und Sequenzen

103

3.2.5 Typliterale

108

3.3 Typumwandlungen

111

3.3.1 Wie die Typumwandlung funktioniert

112

3.3.2 PowerShells-Algorithmus zur Typumwandlung

114

3.3.3 Spezielle Typumwandlungen beim Binden von Parametern

117

3.4 Zusammenfassung

119

Operatoren und Ausdrücke

120

4.1 Arithmetische Operatoren

122

4.1.1 Der Additions-Operator

122

4.1.2 Der Multiplikations-Operator

125

4.1.3 Subtraktion, Division und der Modulo-Operator

127

4.2 Die Zuweisungsoperatoren

129

4.2.1 Mehrfache Zuweisungen

130

4.2.2 Mehrfache Zuweisungen mit Typqualifizierern

131

4.2.3 Zuweisungsoperationen als Wertausdrücke

133

4.3 Vergleichsoperatoren

134

4.3.1 Skalare Vergleiche

135

4.3.2 Vergleichsoperatoren und Auflistungen

139

4.4 Operatoren zum Musterabgleich

141

4.4.1 Wildcard Pattern

141

4.4.2 Reguläre Ausdrücke

142

4.5 Logische und Bit-Operatoren

147

4.6 Zusammenfassung

148

Erweiterte Operatoren und Variablen

150

5.1 Operatoren für die Arbeit mit Typen

150

5.2 Die unären Operatoren

153

5.3 Gruppieren, Unterausdrücke und Array-Unterausdrücke

154

5.4 Array-Operatoren

159

5.4.1 Der Komma-Operator ","

159

5.4.2 Der Bereichsoperator

162

5.4.3 Indizieren von Arrays

163

5.5 Operatoren für Eigenschaften und Methoden

169

5.5.1 Der "."-Operator

170

5.5.2 Statische Methoden und der "::"-Operator

172

5.6 Der PowerShell Format-Operator -F

173

5.7 Umleitung und Umleitungsoperatoren

175

5.8 Variablen

178

5.9 Zusammenfassung

183

Flusskontrolle in Skripten

184

6.1 Das if/elseif/else-Statement

185

6.2 Die while-Schleife

188

6.3 Die do/while-Schleife

189

6.4 Die for-Schleife

190

6.5 Die foreach-Schleife

192

6.6 Labels, break und continue

196

6.7 Das switch- Statement

198

6.7.1 Grundlegendes zum switch-Statement

199

6.7.2 Wildcard Pattern und switch-Statement

200

6.7.3 Reguläre Ausdrücke mit dem switch- Statement

201

6.7.4 Dateiverarbeitung mit dem switch- Statement

205

6.7.5 Der $switch-Schleifenenumerator im switch-Statement

206

6.8 Ablaufsteuerung mit Commandlets

207

6.8.1 Das Foreach-Object-Commandlet

208

6.8.2 Das Where-Object-Commandlet

211

6.9 Der Wert von Statements

213

6.10 Zusammenfassung

214

Funktionen und Skripte

216

7.1 Grundlagen von Funktionen

217

7.2 Formale Parameter und das param-Statement

220

7.2.1 Spezifizieren von Parametertypen

222

7.2.2 Umgang mit einer variablen Anzahl von Argumenten

224

7.2.3 Initialisieren von Funktionsparametern

225

7.2.4 Verwendung von switch-Parametern zum Definieren von Flags

227

7.2.5 Lebenszeit von Variablen und Sichtbarkeits-Regeln

229

7.2.6 Bereichsmodifizierer

232

7.3 Rückgabewerte von Funktionen

232

7.3.1 Debugging des Funktionsoutputs

235

7.3.2 Das return-Statement

237

7.4 Funktionen in einer Pipeline

239

7.4.1 Filter und Funktionen

240

7.4.2 Funktionen als Commandlets

242

7.5 Verwalten von Funktionen

243

7.6 Zu guter Letzt – Skripte

245

7.6.1 Übergabe von Argumenten an Skripte

246

7.6.2 Das param-Statement

247

7.6.3 Bereiche und Skripte

248

7.6.4 Skripte beenden und exit-Statement

249

7.6.5 Dotting von Skripten und Funktionen

251

7.7 Zusammenfassung

253

Skriptblöcke und Objekte

254

8.1 Skriptblock-Grundlagen

255

8.1.1 Aufruf von Befehlen

256

8.1.2 Zugriff auf CommandInfo- Objekte

256

8.1.3 Das Skriptblock Literal

259

8.1.4 Funktionen zur Laufzeit definieren

260

8.2 Erzeugen und Manipulieren von Objekten

262

8.2.1 Blick auf die Mitglieder

262

8.2.2 Synthetische Mitglieder

263

8.2.3 Objekte mit Add-Member erweitern

265

8.2.4 Das Select-Object-Commandlet

271

8.3 Arbeiten am Typsystem

274

8.3.1 Hinzufügen einer Eigenschaft

276

8.3.2 Shadowing vorhandener Eigenschaften

277

8.4 Die PowerShell-Sprache erweitern

278

8.4.1 Kleine Sprachen

278

8.4.2 Hinzufügen eines CustomClass-Schlüsselworts

279

8.5 Typerweiterung

284

8.6 Code zur Laufzeit generieren

286

8.6.1 Das Invoke-Expression-Commandlet

287

8.6.2 Die ExecutionContext-Variable

287

8.6.3 Erzeugen von Funktionen über das function: Laufwerk

290

8.7 Zusammenfassung

291

Fehler, Ausnahmen und Skript- Debugging

294

9.1 Fehlerbehandlung

295

9.1.1 ErrorRecords und ErrorStream

296

9.1.2 Die $error-Variable und der -ErrorVariable-Parameter

299

9.1.3 Die Variablen $? und $LASTEXITCODE

302

9.1.4 $ErrorActionPreference und der -ErrorAction-Parameter

305

9.2 Umgang mit Fehlern die die Ausführung beenden

308

9.2.1 Das trap-Statement

308

9.2.2 Das throw-Statement

311

9.3 Skript-Debugging

313

9.3.1 Debugging mit den Host-APIs

313

9.3.2 Das Set-PSDebug-Commandlet

315

9.3.3 Überwachen der Befehlsausführung

315

9.3.4 Schrittweise Überwachung der Ausführung von Anweisungen

318

9.3.5 Überwachen undefinierter Variablen im Strict-Modus

320

9.4 Eingebettete Prompts und Breakpoints

321

9.4.1 Abbrechen eines Skripts während des Schritt-Modus

321

9.4.2 Erstellen eines breakpoint-Befehls

323

9.4.3 Skript ruft Stack oder "Wie kam ich hierher?"

325

9.5 Low-Level- Überwachung

327

9.5.1 Das Trace-Command-Commandlet

328

9.5.2 Verfolgen von Typkonvertierungen

329

9.5.3 Überwachen der Parameterbindung

331

9.6 Das Ereignisprotokoll von PowerShell

335

9.6.1 Das Ereignisprotokoll untersuchen

335

9.6.2 Exchange 2007 und das PowerShell-Ereignisprotokoll

337

9.7 Zusammenfassung

338

Teil II: PowerShell anwenden

340

Verarbeitung von Texten, Dateien und XML

342

10.1 Verarbeiten von unstrukturiertem Text

342

10.1.1 Verwenden von System.String für das Arbeiten mit Text

342

10.1.2 Verwendung regulärer Ausdrücke zur Textmanipulation

349

10.2 Dateiverarbeitung

350

10.2.1 Arbeiten mit PSDrives

352

10.2.2 Arbeiten mit Pfaden die Wildcards enthalten

354

10.2.3 Lesen und Schreiben von Dateien

358

10.2.4 Suche in Dateien mit dem Select-String-Commandlet

365

10.3 XML-Verarbeitung

367

10.3.1 Verwendung von XML-Objekten

368

10.3.2 Laden und Speichern von XML-Dateien

372

10.3.3 XML-Dokumente in einer Pipeline verarbeiten

379

10.3.4 XPath verwenden

380

10.3.5 Die Import-Clixml- und Export-Clixml-Commandlets

385

10.4 Zusammenfassung

388

.NET und WinForms

390

11.1 .NET in PowerShell verwenden

390

11.1.1 .NET-Grundlagen

391

11.1.2 Arbeiten mit Assemblies

391

11.1.3 Auffinden von Typen

394

11.1.4 Instanzen von Typen erzeugen

396

11.1.5 PowerShell ist nicht C# – eine Moralgeschichte

399

11.1.6 Arbeiten mit generischen Typen

403

11.2 PowerShell und das Internet

407

11.2.1 Beispiel: Herunterladen einer Webseite

407

11.2.2 Beispiel: Ein RSS-Feed verarbeiten

408

11.2.3 Beispiel: Einen Webserver mit PowerShell schreiben

410

11.3 PowerShell und grafische Benutzerschnittstellen

417

11.3.1 WinForms-Grundlagen

418

11.3.2 Beispiel: "Mein erstes Formular"

419

11.3.3 Beispiel: Einfacher Dialog

421

11.3.4 Beispiel: Eine WinForms-Bibliothek

424

11.3.5 Beispiel: Ein einfacher Rechner

427

11.3.6 Beispiel: Daten anzeigen

432

11.3.7 Beispiel: Verwendung von GDI+ zur Grafikausgabe

435

11.4 Zusammenfassung

439

Windows Objekte: COM und WMI

440

12.1 COM in PowerShell verwenden

441

12.1.1 Windows-Automatisierung mit COM

443

12.1.2 Netzwerkzugriff, Office- Applikationen und Spielzeuge

455

12.1.3 Einsatz des ScriptControl-Objekts

466

12.1.4 Probleme mit COM

468

12.2 WMI und PowerShell

472

12.2.1 Was sind die WMI und was müssen wir beachten?

472

12.2.2 Das Get-WmiObject-Commandlet

473

12.2.3 Der WMI-Objektadapter

474

12.2.4 WMI-Elfmeterschießen – VBScript versus PowerShell

475

12.2.5 Die Shortcuts für WMI-Typen

480

12.2.6 Arbeiten mit WMI-Methoden

482

12.2.7 Arbeiten mit WMI-Events

484

12.2.8 Modifizierte WMI-Objekte zurückgeben

485

12.3 Welches Objektmodell sollte man verwenden?

487

12.4 Zusammenfassung

488

Sicherheit, Sicherheit, Sicherheit

490

13.1 Einführung in die Sicherheit

491

13.1.1 Was Sicherheit ist

491

13.1.2 Was Sicherheit nicht ist

491

13.1.3 Sicherheitsempfinden

491

13.2 Sicherheitsmodellierung

493

13.2.1 Einführung in das Modellieren von Bedrohungen

493

13.2.2 Klassifizieren von Bedrohungen mit dem STRIDE-Modell

494

13.2.3 Bedrohungen, Angriffsobjekte und Risiko-Minimierung

495

13.3 Absichern der PowerShell- Umgebung

499

13.3.1 Standardmäßige Sicherheit

499

13.3.2 Befehlspfad verwalten

500

13.3.3 Wahl der Ausführungs-Richtlinie für Skripte

501

13.4 Signieren von Skripten

503

13.4.1 Wie Public Key-Verschlüsselung und Hashing funktionieren

503

13.4.2 Signierende Autoritäten und Zertifikate

504

13.4.3 Erstellen eines selbst-signierten Zertifikats

505

13.4.4 Skripte mit einem Zertifikat signieren

509

13.4.5 Freigabe des Strong Private Key-Schutzes für Ihr Zertifikat

513

13.5 Sichere Skripte schreiben

516

13.5.1 Verwenden der SecureString-Klasse

517

13.5.2 Arbeiten mit Credentials

519

13.5.3 Vermeiden Sie Invoke-Expression

522

13.6 Zusammenfassung

525

PowerShell im Vergleich mit anderen Sprachen

528

A.1 PowerShell und CMD.EXE

528

A.1.1 Grundlegendes Navigieren und Dateioperationen

528

A.1.2 Variablen und Substitution

530

A.1.3 Befehle ausführen

532

A.1.4 Syntaktische Unterschiede

533

A.1.5 Textsuche: findstr und Select- String

534

A.1.6 Äquivalente für die For-Schleife

534

A.1.7 Batchdateien und Subroutinen

535

A.1.8 Den Prompt einstellen

537

A.1.9 Verwenden von doskey in PowerShell

538

A.1.10 Verwenden von cmd.exe in PowerShell

540

A.2 PowerShell und UNIX-Shells

541

A.2.1 Beispiel: Alle Prozesse anhalten

541

A.2.2 Beispiel: Stoppen einer gefilterten Prozessliste

542

A.2.3 Beispiel: Berechnen der Größe eines Verzeichnisses

542

A.2.4 Beispiel: Arbeiten mit dynamischen Werten

543

A.2.5 Beispiel: Die Lebenszeit eines Prozesses überwachen

544

A.2.6 Beispiel: Prüfen auf Pre-Release-Binärcode

544

A.2.7 Beispiel: Einen String in Großbuchstaben verwandeln

545

A.2.8 Beispiel: Text in einen String einfügen

545

A.3 PowerShell und Perl

546

A.4 PowerShell und C#

547

A.4.1 Aufruf von Funktionen und Befehlen

547

A.4.2 Methodenaufrufe

548

A.4.3 Rückgabe von Werten

548

A.4.4 Sichtbarkeit von Variablen

549

A.5 PowerShell und VBScript

549

Anhang B

552

Beispiele zum Administrieren

552

B.1 Active Directory-Infos abrufen

552

B.2 Installierte Software anzeigen

553

B.3 Terminal Server-Einstellungen bestimmen

554

B.4 Auflisten aller Hotfixes des aktuellen Computers

555

B.5 Computer mit fehlenden Hotfixes suchen

556

B.6 Ereignisprotokoll verwenden

559

B.6.1 Ein spezifisches EventLog-Objekt ermitteln

560

B.6.2 Das Ereignisprotokoll als Live-Objekt

560

B.6.3 Remote-Zugriff auf Ereignisprotokolle

561

B.6.4 Speichern von Ereignisprotokollen

562

B.6.5 Ereignisse schreiben

563

B.7 Arbeiten mit vorhandenen Dienstprogrammen

564

B.8 Arbeiten mit Active Directory und ADSI

566

B.8.1 Zugriff auf den Active Directory-Service

566

B.8.2 Benutzer hinzufügen

567

B.8.3 Benutzergruppe hinzufügen

568

B.8.4 User-Eigenschaften aktualisieren

570

B.8.5 User entfernen

571

B.9 Zusammenführen von zwei Datenmengen

572

Anhang C

574

Die PowerShell- Grammatik

574

C.1 Statement-Liste

574

C.2 Statement

575

C.2.1 Pipeline

575

C.2.2 Das if Statement

576

C.2.3 Das switch-Statement

577

C.2.4 Das foreach-Statement

577

C.2.5 Die for- und while-Statements

578

C.2.6 Die do/while- und do/until- Statements

578

C.2.7 Das trap-Statement

579

C.2.8 Das finally- Statement

579

C.2.9 Anweisungen zur Flusskontrolle

579

C.2.10 Funktionsdeklarationen

580

C.2.11 Parameterdeklarationen

580

C.3 Ausdruck

581

C.4 Wert

582

C.5 Tokenizer- Regeln

583

Index

586

 

© 2009-2024 ciando GmbH