Holger Schwichtenberg
Windows Scripting lernen
Von Windows Script Host und Visual Basic Script bis zur Windows PowerShell
Inhalt
6
Vorwort
18
Website für Leser
23
Über den Autor Dr. Holger Schwichtenberg
24
Hinweise für den Leser
26
Schreibweisen in diesem Buch
26
Hinweise zu den Listings
27
1 Einführung in den Windows Script Host (WSH)
28
1.1 Der Windows Script Host
28
1.2 Scripting versus Programmierung
29
1.3 Voraussetzungen
29
1.4 Die Sprache Visual Basic Script
31
1.5 Das erste Skript
32
1.6 Scripting im Kommandozeilenfenster
35
1.7 Das zweite Skript: Versionsnummern ermitteln
38
1.8 Ein Wort zur Sicherheit
39
1.9 Wie geht es weiter?
40
1.10 Fragen und Aufgaben
41
2 Scripting-Werkzeuge
42
2.1 Nur zur Not: Notepad
43
2.2 Einer für alles: PrimalScript
45
2.3 Der WSH-Spezialist: SystemScripter
47
2.3.1 Fehlerarten
50
2.3.2 Start des Debuggers
51
2.3.3 Funktionen des Microsoft Script Debuggers
53
2.4 Fragen und Aufgaben
54
3 Scripting und die Benutzerkontensteuerung
56
3.1 Benutzerkontensteuerung
56
3.2 WSH-Skripte arbeiten nicht mit der Benutzerkontensteuerung zusammen
58
3.3 Lösungen des Problems
59
3.4 Start aus dem Admin-Konsolenfenster heraus
60
3.5 Anlegen einer Verknüpfung zu wscript.exe oder cscript.exe
62
3.6 Benutzerkontensteuerung deaktivieren
63
3.7 Änderungen der Benutzerkontensteuerung in Windows 8.x und Windows 10 sowie Windows Server 2012 sowie Windows Server 2016
64
4 Programmieren mit VBScript
66
4.1 Die Visual-Basic-Sprachfamilie
66
4.2 Allgemeines zum Arbeiten mit VBScript
67
4.3 Kommentare
69
4.4 Literale
69
4.5 Konstanten
71
4.5.1 Vordefinierte Konstanten
72
4.5.2 Definieren eigener Konstanten
73
4.5.3 Verwenden von Konstanten
74
4.6 Variablen
74
4.6.1 Verwendung von Variablen
75
4.6.2 Datentypen
77
4.7 Operatoren
78
4.7.1 Arithmetische Operatoren
79
4.7.2 Vergleichsoperatoren
80
4.7.3 Logische Operatoren
81
4.7.4 Bitweise Operationen
82
4.8 Bedingungen
83
4.8.1 If .?.?. Then
84
4.8.2 Select Case
85
4.8.3 Bedingte Ausgaben zur Fehlersuche
86
4.9 Schleifen
88
4.9.1 For .?.?. Next
88
4.9.2 Do .?.?. Loop
89
4.10 Arrays (Variablenmengen)
92
4.10.1 Eindimensionale Arrays
93
4.10.2 Mehrdimensionale Arrays
95
4.11 Eingebaute Funktionen
96
4.11.1 Eingabehilfen
96
4.11.2 Ein- und Ausgabefunktionen
96
4.11.3 Konvertierungsfunktionen
101
4.11.4 Abs() und Int()
103
4.11.5 Rnd()
104
4.11.6 InStr()
105
4.11.7 Left(), Right() und Mid()
105
4.11.8 Replace() und Trim()
106
4.11.9 UCase() und LCase()
107
4.11.10 Split() und Join()
108
4.11.11 Date(), Time() und Now()
109
4.11.12 DateAdd() und DateDiff()
109
4.11.13 Hour(), Minute(), Second(), Day(), Month(), Year() und WeekDay()
111
4.11.14 Format(), FormatNumber() und FormatDateTime()
112
4.11.15 IsDate(), IsNumeric(), IsArray()
114
4.12 Unterroutinen
115
4.12.1 Unterroutine ohne Rückgabewert (Prozedur)
116
4.12.2 Unterroutine mit Rückgabewert (Funktion)
117
4.13 Benutzerdefinierte Fehlerbehandlung
118
4.14 Fragen und Aufgaben
120
5 Programmieren mit Objekten
122
5.1 Was ist ein Objekt?
122
5.2 Was ist eine Klasse?
123
5.3 Objekte haben Beziehungen
126
5.4 Was ist eine Komponente?
127
5.5 Wie arbeitet man mit Objekten?
128
5.5.1 Objektvariablen
129
5.5.2 Instanziierung eines Objekts aus einer Klasse
129
5.5.3 Auslesen des Werts eines Attributs
131
5.5.4 Setzen des Werts eines Attributs
131
5.5.5 Aufruf einer Methode
131
5.5.6 Reagieren auf ein Ereignis
132
5.5.7 Löschen eines Objekts
132
5.5.8 Duplizieren eines Objekts
133
5.5.9 Vergleich zweier Objekte
134
5.5.10 Ermitteln der Klasse, zu der ein Objekt gehört
134
5.6 Eingabehilfen für Objekte
134
5.7 Wie erfahre ich, welche Objekte es überhaupt gibt?
135
5.8 Was passiert, wenn ein Objekt nicht da ist?
137
5.9 Was ist eine Objektmenge?
137
5.9.1 For Each ... Next
138
5.9.2 Zugriff auf einzelne Objekte in einer Objektmenge
139
5.9.3 Verändern einer Objektmenge
140
5.10 Fragen und Aufgaben
141
6 Komponenten für das Scripting
142
6.1 WSH Runtime (WSHRun)
142
6.1.1 Installation
143
6.1.2 Klassen
143
6.1.3 Beispiele
145
6.2 Scripting Runtime (SCRRun)
145
6.2.1 Installation
146
6.2.2 Klassen
146
6.2.3 Objektauswahl
148
6.2.4 Beispiele
148
6.3 ActiveX Data Objects (ADO)
148
6.3.1 Installation
149
6.3.2 Klassen
149
6.3.3 Objektauswahl
150
6.3.4 Beispiele
152
6.4 Active Directory Service Interface (ADSI)
152
6.4.1 Installation
153
6.4.2 Klassen
154
6.4.3 Hilfsmittel
159
6.5 Group Policy Management-Komponente (GPMC Objects)
160
6.5.1 Installation
162
6.5.2 Klassen
162
6.5.3 Hilfsmittel
165
6.5.4 Beispiele
169
6.6 Windows Management Instrumentation (WMI)
169
6.6.1 Installation
170
6.6.2 WMI-Klassen
171
6.6.3 Scripting-Hilfsklassen für WMI
172
6.6.4 Objektauswahl
174
6.6.5 Hilfsmittel
177
6.7 Microsoft XML (MSXML)
178
6.7.1 XML-Grundlagen
178
6.7.2 Installation
181
6.7.3 Klassen
181
6.8 Fragen und Aufgaben
182
7 Datenübergabe und Datenausgabe
184
7.1 Kommandozeilenparameter
185
7.1.1 Komplexere Parameter
186
7.1.2 Kommandozeilenparameter des WSH
188
7.2 Zugriff auf Datendateien
189
7.2.1 Zugriff auf CSV-Dateien
190
7.2.2 Zugriff auf INI-Dateien
193
7.2.3 Zugriff auf Access-Datenbanken
197
7.2.4 Zugriff auf XML-Dateien
202
7.3 Fragen und Aufgaben
207
8 Scripting des Dateisystems
210
8.1 Dateien
210
8.1.1 Auflisten von Dateien
210
8.1.2 Dateieigenschaften bestimmen
211
8.1.3 Dateieigenschaften ändern
213
8.1.4 Anlegen einer Textdatei
214
8.1.5 Lesen einer Textdatei
215
8.1.6 Schreiben von Dateien
218
8.1.7 Umbenennen einer Datei
219
8.1.8 Kopieren einer Datei
219
8.1.9 Verschieben einer Datei
220
8.1.10 Dateien suchen
221
8.1.11 Suchen in Dateiinhalten
223
8.1.12 Dateien löschen
224
8.2 Verzeichnisse
225
8.2.1 Auflisten eines einzelnen Verzeichnisses
225
8.2.2 Auflisten eines Verzeichnisbaums
226
8.2.3 Anlegen eines Verzeichnisses
227
8.2.4 Verzeichnisattribute bestimmen
227
8.2.5 Umbenennen eines Verzeichnisses
229
8.2.6 Löschen von Verzeichnissen
230
8.2.7 Kopieren von Verzeichnissen
231
8.2.8 Verschieben von Verzeichnissen
231
8.2.9 Verzeichnis suchen
232
8.2.10 Eine Verzeichnisstruktur gemäß einer XML-Datei anlegen
234
8.2.11 Eine Verzeichnisstruktur in einer XML-Datei dokumentieren
237
8.3 Papierkorb leeren
240
8.4 Rechte auf Dateien und Verzeichnisse vergeben
242
8.5 Laufwerke
242
8.5.1 Auflisten von Laufwerken
242
8.5.2 Laufwerkstyp bestimmen
244
8.5.3 Dateisystemtyp ermitteln
245
8.5.4 Speicherplatzbelegung anzeigen
246
8.5.5 Mit einem Netzlaufwerk verbinden
249
8.5.6 Netzwerkverbindung trennen
250
8.5.7 Festplattenprüfung (CheckDisk)
250
8.6 Freigaben
251
8.6.1 Anlegen von Freigaben
252
8.6.2 Löschen von Freigaben
253
8.6.3 Rechte auf Freigaben
253
8.7 Fragen und Aufgaben
253
9 Scripting der Benutzerverwaltung
256
9.1 Benutzerverwaltung für lokale Benutzerkonten
257
9.1.1 Anlegen eines Benutzerkontos
257
9.1.2 Umbenennen eines Benutzers
260
9.1.3 Kennwort eines Benutzers ändern
261
9.1.4 Anlegen einer Benutzergruppe
262
9.1.5 Hinzufügen eines Benutzers zu einer Gruppe
264
9.1.6 Entfernen eines Benutzers aus einer Gruppe
265
9.1.7 Deaktivieren eines Benutzerkontos
265
9.1.8 Löschen einer Gruppe
266
9.1.9 Löschen eines Benutzers
267
9.2 Active-Directory-Benutzerverwaltung unter Windows Server
268
9.2.1 Anlegen einer Organisationseinheit
268
9.2.2 Anlegen eines Organisationseinheitenbaums im Active Directory
270
9.2.3 Anlegen eines Benutzerkontos
272
9.2.4 Anlegen von Benutzern aus einer Access-Datenbank
273
9.2.5 Anlegen einer Benutzergruppe
275
9.2.6 Hinzufügen eines Benutzers einer Gruppe
276
9.2.7 Ändern des Kennworts
278
9.2.8 Umbenennen eines Benutzers
278
9.2.9 Ändern der Benutzerdaten
279
9.2.10 Deaktivieren eines Benutzerkontos
280
9.2.11 Entfernen eines Benutzers aus einer Gruppe
281
9.2.12 Löschen eines Benutzerkontos
283
9.2.13 Löschen einer Organisationseinheit
284
9.3 Fragen und Aufgaben
285
10 Scripting der Computerverwaltung
286
10.1 Computer auflisten
286
10.2 Leistung eines Computers ermitteln
288
10.3 Computerkonto erstellen
290
10.4 Computerkonto löschen
291
10.5 Computer zu Domäne hinzufügen
292
10.6 Computer umbenennen
293
10.7 Einen Computer herunterfahren/neu starten
295
10.8 Fragen und Aufgaben
296
11 Scripting der Ereignisprotokolle
298
11.1 Protokolleinträge lesen
299
11.2 Protokolleinträge schreiben
300
11.3 Protokolleinträge auswerten
303
11.4 Datensicherung des Ereignisprotokolls
305
11.5 Ereignisprotokoll anlegen
306
11.6 Ereignisprotokoll löschen
307
11.7 Ereignisprotokoll leeren
308
11.8 Überwachung von Einträgen
309
11.9 Fragen und Aufgaben
310
12 Scripting der Systemdienste
312
12.1 Auflisten aller Dienste
312
12.2 Auflisten aller laufenden Dienste
314
12.3 Status ermitteln
314
12.4 Starten
315
12.5 Beenden eines Dienstes
316
12.6 Neustart eines Dienstes auf mehreren Computern gemäß einer Textdatei
317
12.7 Anhalten eines Dienstes
319
12.8 Fortsetzen eines Dienstes
320
12.9 Daten ändern
321
12.10 Dienste überwachen
323
12.11 Fragen und Aufgaben
324
13 Scripting des Desktops
326
13.1 Desktop verändern
326
13.2 Startmenü verändern
327
13.3 Fragen und Aufgaben
329
14 Scripting der Registrierungsdatenbank
330
14.1 Eintrag lesen
332
14.1.1 Zugriff mit WSHRun
332
14.1.2 Zugriff mit WMI
333
14.2 Wert schreiben
335
14.2.1 Alternative: WMI
336
14.3 Eintrag anlegen
338
14.4 Eintrag löschen
338
14.4.1 Alternative 1: Löschen mit der WSHRun-Komponente
338
14.4.2 Alternative 2: Löschen mit der WMI-Komponente
339
14.5 Unterschlüssel auflisten
339
14.6 Schlüssel anlegen
340
14.6.1 Alternative: WMI
341
14.7 Schlüssel löschen
342
14.7.1 Alternative: Löschen mit der WSHRun-Komponente
343
14.8 Berechtigungen vergeben
343
14.9 Fragen und Aufgaben
344
15 Scripting der Netzwerkkonfiguration
346
15.1 Festlegen einer statischen IP-Adresse
347
15.1.1 Besonderheiten
349
15.2 Standard-Gateway festlegen
349
15.3 DNS-Server festlegen
351
15.4 WINS-Server festlegen
352
15.5 Auf DHCP umstellen
353
15.6 Fragen und Aufgaben
354
16 Scripting der Softwareverwaltung
356
16.1 Installierte Software auflisten (Softwareinventarisierung)
356
16.2 Software (entfernt) installieren
361
16.3 Software auf mehreren Computern installieren (gemäß einer XML-Datei)
362
16.4 Software deinstallieren
364
16.5 Fragen und Aufgaben
364
17 Scripting der Prozessverwaltung
366
17.1 Prozesse auflisten
366
17.2 Prozesse (entfernt) starten
368
17.2.1 Prozesse starten mit WScript.Shell
369
17.2.2 Prozesse starten mit Win32_Process
370
17.3 Prozesse (entfernt) beenden
373
17.3.1 Prozesse beenden mit WScript.Shell
373
17.3.2 Prozesse beenden mit Win32_Process
375
17.4 Fragen und Aufgaben
376
18 Scripting der Gruppenrichtlinien
378
18.1 Informationen über ein einzelnes Gruppenrichtlinienobjekt
378
18.1.1 Suche nach einem GPO
378
18.1.2 Informationen über ein GPO
379
18.1.3 Verknüpfungen auflisten
379
18.1.4 Das komplette Skript
380
18.2 Alle Gruppenrichtlinien und ihre Verknüpfungen auflisten
382
18.3 Eine Gruppenrichtlinie für einen Container auflisten
385
18.4 Eine Gruppenrichtlinie mit einem AD?Container verknüpfen
387
18.5 Eine Gruppenrichtlinienverknüpfung löschen
389
18.6 Eine Gruppenrichtlinie löschen
391
18.7 Sicherungskopien von Gruppenrichtlinien anlegen
393
18.8 Sicherungskopien einer Gruppenrichtlinie auflisten
395
18.9 Wiederherstellung von Gruppenrichtlinien
396
18.10 Weitere Möglichkeiten
398
18.11 Fragen und Aufgaben
398
19 Scripting-Sicherheit
400
19.1 Bedrohungen durch WSH-Skripte
400
19.2 Schutz vor bösen Skripten
401
19.2.1 Globale WSH-Deaktivierung
401
19.2.2 Sperrung auf Skriptdateiebene
402
19.2.3 WSH-Skripte signieren
402
19.2.4 Skriptkontrolle durch Richtlinien für Softwareeinschränkungen
413
19.3 Schutz vor dem Einblick in den Quellcode
415
19.4 Ein Skript unter einem anderen Benutzerkontext starten
417
19.4.1 Benutzerwechsel für ein komplettes Skript
417
19.4.2 Benutzerwechsel im Skriptablauf
419
19.5 Fragen und Aufgaben
425
20 Windows PowerShell (WPS) 5.0
426
20.1 Vergleich zwischen WSH und PowerShell
426
20.2 Voraussetzungen und Installation
428
20.3 PowerShell-Werkzeuge
428
20.4 PowerShell-Commandlets
431
20.5 PowerShell-Pipelines
432
20.6 Ausgaben
435
20.7 Navigation in Containern
437
20.8 Hilfe zur PowerShell
439
20.9 PowerShell-Skripte
441
20.9.1 PowerShell-Skript-Editoren
442
20.9.2 Ein Beispiel
443
20.9.3 Sprachkonstrukte
444
20.9.4 Skripte ausführen
446
20.10 Fernausführung von Befehlen (Remoting)
449
20.11 Zusatzkomponenten und Klassen nutzen
451
20.12 Zusätzliche PowerShell-Module mit weiteren Commandlets
451
20.12.1 Module manuell installieren
451
20.12.2 Module automatisch herunterladen und installieren (ab PowerShell 3.0)
452
20.12.3 Module auflisten
458
20.12.4 Module laden
459
20.13 COM-Komponenten, die man auch im WSH mit VBScript nutzen kann
460
20.14 .NET-Klassen
461
20.15 WMI-Klassen
462
20.15.1 Abruf von WMI-Objektmengen
463
20.15.2 Fernzugriffe
464
20.15.3 Filtern und abfragen
464
20.15.4 Filtern mit Get-WmiObject
465
20.15.5 Zugriff auf einzelne WMI-Objekte
465
20.15.6 WQL-Abfragen
467
20.15.7 Ermittlung der Mitglieder des WMI-Objekts
468
20.15.8 Umgang mit WMI-Datumsangaben
470
20.15.9 Zugriff auf Mitglieder von WMI-Klassen
470
20.15.10 Statische Klassenmitglieder
472
20.15.11 Werte setzen in WMI-Objekten
472
20.15.12 Methodenaufrufe mit Invoke-WmiMethod
473
20.15.13 Liste aller WMI-Klassen
473
20.15.14 Neue WMI-Instanzen erzeugen
474
20.15.15 Weitere Möglichkeiten
475
20.16 PowerShell-Commandlets in Aktion
475
20.17 PowerShell-Skripte aus der Praxis
480
20.17.1 Leere Ordner löschen
480
20.17.2 Fotos nach Aufnahmedatum sortieren
481
20.17.3 Papierkorb leeren
483
20.17.4 Freigaben anlegen
483
20.17.5 Netzwerkkonfiguration
493
20.17.6 Massenanlegen von Active-Directory-Benutzerkonten
495
20.17.7 Massenanlegen von IIS-Websites
499
20.17.8 Massenanlegen von Registry-Schlüsseln
500
20.17.9 Softwareinstallation
502
20.17.10 Virtuelles System in Hyper-V anlegen
503
21 Wie geht es weiter?
506
Anhang A: Eingebaute Funktionen in VBScript
508
A.1 Numerische Funktionen
508
A.2 Formatierungsfunktionen
509
A.3 Zeichenkettenfunktionen
509
A.4 Datums-/Uhrzeitfunktionen
511
A.5 Array-Funktionen
512
A.6 Funktionen zur Arbeit mit COM-Klassen
512
A.7 Systemfunktionen und Ein-/Ausgabe
513
A.8 Typprüfung und -umwandlung
513
A.9 Sonstige Funktionen
514
Anhang B: Lösungen zu den Übungsaufgaben in diesem Buch
516
B.1 Lösungen zu Kapitel 1
516
B.2 Lösungen zu Kapitel 2
517
B.3 Lösungen zu Kapitel 3
518
B.4 Lösungen zu Kapitel 4
519
B.5 Lösungen zu Kapitel 5
520
B.6 Lösungen zu Kapitel 6
520
B.7 Lösungen zu Kapitel 7
521
B.8 Lösungen zu Kapitel 8
522
B.9 Lösungen zu Kapitel 9
523
B.10 Lösungen zu Kapitel 10
525
B.11 Lösungen zu Kapitel 11
525
B.12 Lösungen zu Kapitel 12
526
B.13 Lösungen zu Kapitel 13
526
B.14 Lösungen zu Kapitel 14
527
B.15 Lösungen zu Kapitel 15
527
B.16 Lösungen zu Kapitel 16
529
B.17 Lösungen zu Kapitel 17
529
B.18 Lösungen zu Kapitel 18
531
B.19 Lösungen zu Kapitel 20
531
Anhang C: Abkürzungsverzeichnis
534
Anhang D: Quellen und weiterführende Literatur
542
Stichwortverzeichnis
546
© 2009-2024 ciando GmbH