Inhaltsverzeichnis Band 1 Teil A Einführung 1 1 Über den Autor Dr. Holger Schwichtenberg 3 2 Vorwort 5 2.1 2.2 2.3 2.4 2.5 2.6 Vorwort zur 5. Auflage Auszug aus dem Vorwort zur 4. Auflage (2004) Auszug aus dem Vorwort zur 3. Auflage (2002) Auszug aus dem Vorwort zur 2. Auflage (2001) Auszug aus dem Vorwort zur 1. Auflage (2000) Auszug aus dem Feedback zu den bisherigen Auflagen 5 6 7 9 10 11 3 Leser-Portal (Dienstleistungen für Leser nach dem Kauf) 15 4 Fragen und Antworten zu diesem Buch (FAQ) 17 4.1 17 17 17 18 18 18 18 19 4.2 Fragen zum Inhalt des Buchs 4.1.1 Wer ist die Zielgruppe dieses Buchs? 4.1.2 Welche Kenntnisse werden in diesem Buch vorausgesetzt? 4.1.3 Woher kann ich diese Grundlagenkenntnisse bekommen? 4.1.4 Für wen ist dieses Buch nicht geeignet? 4.1.5 Was ist der Schwerpunkt dieses Buchs? 4.1.6 Was bedeutet der Titel der Buchreihe „net.com“? 4.1.7 Wie positioniert sich dieses Buch zu Ihren anderen Büchern? 4.1.8 Finde ich in diesem Buch Informationen, die es nicht in der MSDN-Bibliothek gibt? 4.1.9 Woher beziehen Sie Informationen, die Sie in diesem Buch niederschreiben? 4.1.10 Warum lassen Sie manche Details aus? 4.1.11 Wie treffen Sie die Entscheidung, welche Themen in das Buch kommen und welche nicht? 4.1.12 Sind Teile des Buchs aus anderen Büchern übernommen? 4.1.13 Wie sollte ich dieses Buch lesen? Fragen zu den sprachlichen Konventionen 4.2.1 Wie halten Sie es mit Anglizismen? 4.2.2 Wie grenzen Sie die Windows-Versionen sprachlich ab? 4.2.3 Wie grenzen Sie die verschiedenen Visual Basic-Dialekte und Versionen voneinander ab? 20 20 21 21 21 21 22 22 22 22 VII Inhaltsverzeichnis 4.2.4 4.3 4.4 4.5 4.6 4.7 VIII Wie grenzen Sie die Begriffe Automation und Automatisierung ab? 4.2.5 Was bedeutet MINFU? Fragen zur Gestaltung des Buchs 4.3.1 Wie werden die Informationen in diesem Buch dargestellt? 4.3.2 Welche Formatierungen kommen in diesem Buch zum Einsatz? 4.3.3 Sind die Bildschirmabbildungen in diesem Buch in Deutsch oder Englisch? 4.3.4 Welche grafische Notation verwenden Sie in den Objektdiagrammen? 4.3.5 Wie vollständig sind die Objektdiagramme? 4.3.6 Was bedeutet es, wenn hinter einem Wort ein leeres Klammernpaar steht? 4.3.7 Wieso verweisen Sie bei Querverweisen nur auf Themen, nicht aber direkt auf die Kapitelnummer? Fragen zur Buch-CD-ROM 4.4.1 Was befindet sich auf der CD-ROM? 4.4.2 Wie finde ich die Codebeispiele auf der Begleit-CD-ROM wieder? 4.4.3 Was kann ich tun, wenn die CD-ROM zu meinem Buch fehlt oder defekt ist? Fragen zu den Programmcodebeispielen 4.5.1 Warum gibt es in diesem Buch nur Beispielcode in Visual Basic Script und nicht auch in JavaScript (JScript)? 4.5.2 Nach welchen Richtlinien erstellen Sie Codebeispiele? 4.5.3 Was bedeutet die Methode say(), die in einigen Listings steht? 4.5.4 Was bedeuten die unterschiedlichen Kommentararten? 4.5.5 Was bedeutet die Kommentare, in denen „as“ vorkommt? 4.5.6 Welche Infrastruktur haben Sie für dieses Buch verwendet? 4.5.7 Wie kann ich feststellen, welche Scripting-Komponenten auf meinem System installiert sind? 4.5.8 Woher bekomme ich die notwendigen Scripting-Komponenten? 4.5.9 Was muss ich tun, wenn die Fehlermeldung „Projekt oder Bibliothek nicht gefunden“ erscheint? Fragen zur Qualitätssicherung 4.6.1 Gibt es eine Qualitätssicherung für die Inhalte in diesem Buch? 4.6.2 Wie kann es sein, dass trotz der Qualitätssicherungsmaßnahmen Programmbeispiele aus Ihrem Buch auf meinem Rechner nicht funktionieren? Fragen zur Unterstützung nach dem Kauf 4.7.1 Gibt es Unterstützung nach dem Kauf eines Buchs? 4.7.2 Antworten Sie auf E-Mails, in denen ein Leser eine inhaltliche Frage stellt? 4.7.3 Wenn ich einen Fehler in dem Buch finde, möchten Sie dann, dass ich Sie darauf hinweise? 4.7.4 Bieten Sie auch kommerzielle Unterstützung für Scripting, .NET und PowerShell? 23 23 23 23 23 24 24 29 29 29 30 30 31 33 33 33 33 34 34 35 35 37 38 40 41 41 41 42 42 42 43 43 Inhaltsverzeichnis 5 Einführung 45 5.1 5.2 5.3 5.4 5.5 45 46 47 48 49 51 52 53 55 55 56 56 58 58 59 5.6 5.7 5.8 6 Der Automatisierungsbedarf Was ist Scripting? Automatisierungslösungen auf der Windows-Plattform Die DOS-Batchsprache Die Active Scripting-Architektur 5.5.1 Active Scripting Hosts 5.5.2 Active Scripting Engines 5.5.3 COM-Komponenten 5.5.4 Werkzeugunterstützung 5.5.5 Active Scripting versus VBA Scripting im .NET Framework Die Microsoft Powershell Neuerungen in Windows Vista im Überblick 5.8.1 Scriptumgebungen 5.8.2 Scriptbibliotheken Scripting-Schnellstart 61 6.1 6.2 6.3 6.4 61 62 63 64 Ein einfaches Script für den Windows Script Host Ein komplexeres Script mit zwei Sprachen für den Internet Explorer Benutzer aus dem Active Directory exportieren Ein PowerShell-Beispiel Teil B Active Scripting 67 7 Das Component Object Model (COM) 69 7.1 7.2 7.3 7.4 69 70 70 72 73 75 76 77 77 78 78 79 81 83 7.5 7.6 7.7 7.8 Binärstandard Programmiersprachen für COM COM-Laufzeitumgebungen COM-Bausteine 7.4.1 Die wichtigsten Bausteine im Kurzüberblick 7.4.2 Global Unique Identifier (GUIDs) 7.4.3 Moniker COM-Dienste COM-Konfigurationsdaten 7.6.1 Die Registrierungsdatenbank als Konfigurationsspeicher 7.6.2 XML-Konfigurationsdateien Komponentenarten Verpackungsformen 7.8.1 EXE-Server im Vergleich zu DLL-Server 7.8.2 Der Zusammenhang zwischen Komponentenart und Verpackungsform 7.8.3 Zusatzinformationen 83 84 IX Inhaltsverzeichnis 7.9 Registrierung von Komponenten 7.10 COM-Klassen 7.10.1 Klassenidentifikation mit CLSIDs 7.10.2 Programmatic Identifier 7.10.3 Friendly Class Name 7.10.4 Klassen in der Registrierungsdatenbank 7.11 COM-Schnittstellen 7.11.1 Standardschnittstelle einer COM-Klasse 7.11.2 Namensgebung 7.11.3 Schnittstellen in der Registrierungsdatenbank 7.11.4 Virtuelle Tabellen 7.11.5 Die Grauzone zwischen Klasse und Schnittstelle 7.11.6 Mangelnde Selbsterkenntnis bei den Schnittstellen 7.11.7 Bullet-and-Stick-Diagramme 7.12 Klassenmitglieder 7.13 Typinformationen 7.13.1 Interface Definition Language (IDL) 7.13.2 Typbibliotheken 7.14 Statischer Aufruf versus Automation 7.15 COM-Standardschnittstellen 7.15.1 Statisches Binden mit IUnknown 7.15.2 Automation mit IDispatch 7.15.3 Duale Schnittstellen 7.15.4 DispatchEx 7.16 Distributed COM (DCOM) 7.16.1 DCOM-Protokoll 7.16.2 DCOM-Installation und -Konfiguration 7.16.3 DCOM im Internet 7.17 Objektaktivierung 7.17.1 Service Control Manager (SCM) 7.17.2 Erzeugung neuer Instanzen 7.17.3 Zugriff auf bestehende Instanzen 7.17.4 Aktivierungsfehler 7.18 COM-Anwendungen 7.19 COM-Assemblies 7.20 COM-Kategorien 7.21 Persistenz und Structured Storage 7.22 COM-Sicherheit 7.22.1 Authentifizierung 7.22.2 Identität 7.22.3 Impersonifizierung 7.22.4 Zugriffsberechtigungen 7.23 Active Scripting 7.23.1 Entwicklung von Scripting Engines 7.23.2 Installierte Scripting Engines X 85 85 86 86 87 87 89 89 90 90 90 91 92 93 94 95 97 99 101 103 104 105 107 108 108 109 109 110 112 112 113 115 117 118 119 123 124 126 127 127 128 129 131 131 132 Inhaltsverzeichnis 7.24 7.25 7.26 7.27 7.28 8 7.23.3 Entwicklung von Scripting Hosts 7.23.4 COM-Komponenten beim Active Scripting 7.23.5 Eingebaute Objekte Microsoft Transaction Server (MTS) 7.24.1 MTS-Administration 7.24.2 Interception 7.24.3 Packages 7.24.4 Programmierung COM+ 7.25.1 Änderungen gegenüber dem MTS 7.25.2 Neue Dienste in COM+ 7.25.3 COM+-Administration Objektmodelle in COM-Komponenten 7.26.1 Objektorientierte Konzepte in COM 7.26.2 Bausteine von COM-Objektmodellen 7.26.3 Empfehlungen für Objektmodelle 7.26.4 Metaobjektmodelle Bewertung von COM 7.27.1 Vorteile von COM 7.27.2 COM auf anderen Plattformen 7.27.3 Unzulänglichkeiten von COM .NET Framework („DOTNET“) 133 133 133 134 134 135 135 136 136 137 138 138 139 139 140 141 142 146 147 147 147 150 Die Visual Basic-Sprachfamilie 151 8.1 153 154 154 156 156 156 156 156 158 158 158 159 160 161 161 162 163 163 164 166 8.2 8.3 8.4 8.5 Die Visual Basic-Sprachfamilie 8.1.1 Visual Basic for Applications (VBA) 8.1.2 Visual Basic Script (VBS) 8.1.3 Embedded Visual Basic (eVB) 8.1.4 Visual Basic .NET 8.1.5 Anwendungsgebiete Grundlagen 8.2.1 Grundlegendes zur Syntax 8.2.2 Speicherung des Programmcodes 8.2.3 Startpunkt eines Programms Einfache Ein- und Ausgabefunktionen 8.3.1 Ausgaben mit MsgBox() 8.3.2 Eingaben mit InputBox() empfangen Variablen 8.4.1 Gültigkeitsbereich von Variablen 8.4.2 Benennung von Variablen Datentypen 8.5.1 Datentypen in VBS 8.5.2 Datentypen in VB 6.0/VBA 8.5.3 Startwerte von Variablen XI Inhaltsverzeichnis 8.6 8.7 8.8 8.9 8.10 8.11 8.12 8.13 8.14 8.15 8.16 8.17 8.18 XII Darstellung von Werten 8.6.1 Literale 8.6.2 Symbolische Konstanten Operatoren Typkonvertierung Datenfelder (Arrays) 8.9.1 Statische Arrays 8.9.2 Dynamische Arrays 8.9.3 Array-Operationen Bedingungen 8.10.1 If...Then 8.10.2 Select...Case Schleifen 8.11.1 For...Next 8.11.2 For Each...Next 8.11.3 Do...Loop Unterroutinen 8.12.1 Prozeduren 8.12.2 Funktionen 8.12.3 Die Last mit den Parametern Codegenerierung zur Laufzeit Objektbasierte Programmierung 8.14.1 Definition von Klassen in VBS 8.14.2 Definition von Klassen in VB 6.0/VBA 8.14.3 Objektvariablen 8.14.4 Instanziierung 8.14.5 Objektverwendung 8.14.6 Objektoperationen 8.14.7 Property-Routinen 8.14.8 Objektvernichtung 8.14.9 Objektmengen (Collections) 8.14.10 Ereignisse 8.14.11 Vererbung und Mehrfachschnittstellen Nutzung von COM und DCOM 8.15.1 Instanziierung von COM-Komponenten 8.15.2 Zugriff auf bestehende Instanzen 8.15.3 Verwendung von COM-Objekten 8.15.4 Verwendung von Mehrfachschnittstellen 8.15.5 Datentypprobleme beim Zugriff auf COM-Komponenten Eingebaute Funktionen und Klassen Fehlerbehandlung Allgemeine Hilfsroutinen 8.18.1 Scripteinbindung 8.18.2 Umwandlungsroutinen 8.18.3 Rückumwandlung von Konstanten 166 167 168 171 173 175 175 176 176 181 181 182 184 184 186 187 190 190 191 192 194 196 196 198 199 199 200 202 203 208 208 211 213 216 217 219 220 220 221 222 222 225 225 226 226 Inhaltsverzeichnis 8.18.4 8.18.5 8.18.6 8.18.7 9 Ausgabe Schreiben in eine Log-Datei Fehlerüberprüfung COM-Funktionen 227 228 229 229 Die Scripting Hosts 233 9.1 236 236 238 238 241 245 253 254 258 259 260 271 271 279 283 283 284 285 286 291 293 296 298 299 300 300 309 309 311 311 312 314 314 330 334 336 337 338 339 9.2 9.3 9.4 Windows Script Host (WSH) 9.1.1 Verfügbare Versionen 9.1.2 WSH-Installation 9.1.3 WSH-Konfiguration 9.1.4 WScript versus CScript 9.1.5 Scriptdateien 9.1.6 Start eines Script 9.1.7 Befehlszeilenparameter für Scripts 9.1.8 Einbinden von anderen Scriptdateien 9.1.9 Statische Objekte und Einbinden von Typbibliotheken 9.1.10 Die eingebauten Objekte des WSH 9.1.11 Bildschirmmasken für den WSH 9.1.12 Sicherheitseinstellungen 9.1.13 Sicherheit in Windows Vista DHTML-Scripting im Internet Explorer 9.2.1 Grundlagen des Browser-Scripting 9.2.2 Einbindung von Scriptcode 9.2.3 Hello World im Browser 9.2.4 Sicherheitseinstellungen 9.2.5 DOM-Ereignisbehandlung 9.2.6 Eingebaute Objekte (Intrinsic Objects) 9.2.7 Zugriff auf externe COM-Komponenten 9.2.8 HTML-Applications (HTAs) Microsoft Gadgets Active Server Pages (ASP) 9.4.1 Grundlagen dynamischer Webserveranwendungen 9.4.2 Installation von ASP 9.4.3 IIS-Konfiguration 9.4.4 Aufbau von ASP-Seiten 9.4.5 Start einer ASP-Seite 9.4.6 Ausgaben in ASP 9.4.7 Render-Funktionen 9.4.8 Eingebaute Objekte 9.4.9 Global.asa und ASP-Ereignisse 9.4.10 Einbinden von Dateien 9.4.11 Einbinden von Typbibliotheken 9.4.12 Fehlermeldungen 9.4.13 Sicherheitseinstellungen 9.4.14 Transaktionssteuerung XIII Inhaltsverzeichnis 9.5 9.6 9.7 9.8 9.9 9.10 9.11 9.12 9.13 Job Scripting im Microsoft SQL Server 7.0/2000/2005 9.5.1 Überblick über den SQL Server-Agent 9.5.2 Definition von Aufträgen 9.5.3 Erstellung von Job Scripts 9.5.4 Eingebaute Objekte (Intrinsic Objects) Data Transformation Service (DTS) im Microsoft SQL Server 7.0/2000 9.6.1 DTS-Pakete 9.6.2 Datentransformationen mit dem DTS 9.6.3 ActiveX Script-Transformation 9.6.4 ActiveX ScriptTasks Microsoft SQL Server 2005 Integration Services (SSIS) Scripting im Microsoft Operations Manager (MOM) 2000/2005 9.8.1 Bausteine 9.8.2 Management Packs 9.8.3 Architektur 9.8.4 Überblick über das Regelsystem 9.8.5 Computergruppierungsregeln 9.8.6 Verarbeitungsregeln 9.8.7 Antworten auf die Erfüllung von Regeln 9.8.8 Scripting im MOM Event Scripting Agent im Exchange Server 5.5/2000/2003 9.9.1 Überblick über den Exchange Event Service 9.9.2 Exchange Event Scripting Microsoft Outlook Forms 9.10.1 Formulardesigner 9.10.2 Steuerelemente und Felder 9.10.3 Eingebaute Objekte (Intrinsic Objects) 9.10.4 Ereignisse in Outlook Forms Windows Installer Custom Actions XSLT-Scripting Scripting Hosts anderer Anbieter 9.13.1 System Script Host (SSH) 9.13.2 OnScript Host (OSH) 9.13.3 HyperHost 9.13.4 TextPipe 10 Basisfunktionen 10.1 WSH-Laufzeitbibliothek (WSH Runtime Library) 10.1.1 Objektmodelle der WSH Runtime Library 10.1.2 WSHNetwork und untergeordnete Klassen 10.1.3 WSHShell und untergeordnete Klassen 10.2 Scripting-Laufzeitumgebung (Scripting Runtime Library) 10.2.1 Daten speichern in der Dictionary-Klasse 10.2.2 File System Objects (FSO) 10.2.3 Zugriff auf die Dateisystemstruktur 10.2.4 Zugriff auf Dateiinhalte (Textstreams) XIV 339 340 341 344 346 347 348 353 358 359 362 363 364 364 365 366 367 370 376 378 389 390 392 402 402 403 404 405 406 406 407 408 409 410 410 411 412 413 420 423 439 440 443 445 460 Inhaltsverzeichnis 11 Verzeichnisdienste 11.1 Active Directory Service Interface (ADSI) 11.1.1 Verzeichnisdienste 11.1.2 Die ADSI-Grundlagen 11.1.3 Das ADSI-Meta-Objektmodell 11.1.4 Grundlagen der ADSI-Programmierung 11.1.5 ADS Namespaces Container 11.2 ADSI-Provider „WinNT“ für SAM-basierte Benutzerdatenbanken 11.2.1 WinNT-Objektmodell 11.2.2 Identifikation und Bindung 11.2.3 Verwaltung von NT-Domänen 11.2.4 Die WinNT-Klasse „Computer“ 11.2.5 Benutzerkonten verwalten mit der „User“-Klasse 11.2.6 Gruppenverwaltung 11.2.7 Verwaltung von Windows-Diensten 11.2.8 Verzeichnisfreigaben verwalten 11.2.9 Benutzersitzungen und geöffnete Ressourcen 11.2.10 Druckersteuerung 11.3 Active Directory-Administration mit ADSI 11.3.1 Allgemeine Informationen zum Active Directory 11.3.2 Active Directory Application Mode (ADAM) 11.3.3 Programmierschnittstellen 11.3.4 Das Objektmodell des Active Directory 11.3.5 Identifikation und Bindung 11.3.6 Verzeichnisattribute 11.3.7 Suchanfragen im Active Directory 11.3.8 Besondere ADS-Datentypen 11.3.9 Vergleich zum WinNT-Provider 11.3.10 Benutzerverwaltung im Active Directory 11.3.11 Benutzerauthentifizierung 11.3.12 Benutzer suchen 11.3.13 Gruppenverwaltung im Active Directory 11.3.14 Verwaltung der Organisationseinheiten im Active Directory 11.3.15 Computerverwaltung im Active Directory 11.3.16 Gruppenrichtlinienverwaltung 11.3.17 Schemazugriff 11.4 Administration eines Exchange Server 5.5 mit ADSI 11.5 Administration des Internet Information Server mit ADSI 11.5.1 IIS-Objektmodell 11.5.2 Identifikation und Bindung 11.5.3 Arbeit mit virtuellen Webservern 11.5.4 Sicherung der IIS-Metabase 11.6 System-Info-Klassen für ADSI 11.6.1 WinNTSystem 11.6.2 ADSystemInfo 467 470 471 476 480 487 504 506 507 508 509 511 511 516 517 519 520 521 521 522 525 525 526 528 531 532 535 537 538 550 551 552 557 559 561 561 562 562 563 565 565 569 570 570 570 XV Inhaltsverzeichnis 11.7 Zusatzkomponenten für ADSI 11.7.1 ADSI-Versionsabfrage mit ADsVersion 11.7.2 Detaillierte Fehlermeldungen mit ADsError 11.7.3 GetObject() durch die Hintertür mit ADsFactory 11.7.4 RAS-Konfiguration mit ADsRAS 11.7.5 Zugriff auf Sicherheitseinstellungen mit ADsSecurity 11.7.6 Beispiel 11.7.7 IADsTools 11.8 Group Policy Objects (GPO) 11.8.1 Grundlagen zur Gruppenrichtlinienverwaltungskonsole 11.8.2 GPO-Objektmodell 11.8.3 Hilfsroutinen 11.8.4 Informationen ausgeben 11.8.5 Verknüpfungen verwalten 11.8.6 Weitere Möglichkeiten 12 Universal-Scripting-Komponenten 12.1 Windows Management Instrumentation (WMI) 12.1.1 WMI-Grundlagen 12.1.2 Metaobjektmodell in der WMI-COM-Komponente 12.1.3 Arbeit mit der WMI-Komponente 12.1.4 Abfragen mit WQL 12.1.5 WMI ODBC-Treiber 12.2 WMI im Einsatz 12.2.1 Computerverwaltung 12.2.2 Dateisystemverwaltung 12.2.3 Registrierungsdatenbank (Registry) 12.2.4 Hardware 12.2.5 Softwareverwaltung 12.2.6 Prozesse 12.2.7 Zeitplandienst 12.2.8 Benutzer und Gruppen 12.2.9 Druckerverwaltung 12.2.10 Systemdienste 12.2.11 Netzwerkkonfiguration 12.2.12 Leistungsdaten 12.2.13 Terminaldienste 12.2.14 Ereignisprotokolle 12.2.15 Exchange Server-Administration mit WMI 12.2.16 IIS-Administration mit WMI 12.2.17 Beispiel 12.2.18 Informationen über WMI selbst 12.2.19 Ihre Expedition in die WMI XVI 571 571 572 573 574 577 589 590 590 591 595 597 599 603 613 615 615 616 639 648 663 670 671 671 678 685 689 690 694 697 699 701 703 707 715 715 716 719 727 727 728 730 Inhaltsverzeichnis 12.3 Windows Remote Management (WinRM) 12.3.1 Nutzung von WinRM 12.3.2 Objektmodell der WinRM Scripting Objects 12.3.3 Adressierung 12.3.4 WinRM im Einsatz 13 Benutzerschnittstelle 730 732 732 733 733 739 13.1 Microsoft Shell Objects 13.1.1 Objektmodell der Shell Objects 13.1.2 Arbeit mit Explorer-Fenstern 13.1.3 Arbeiten mit Ordnern und Dateien 13.2 Microsoft Internet Controls 13.2.1 Objektmodell des Webbrowser Control 13.2.2 Anwendungsbeispiele 13.3 Microsoft Common Dialog Control 13.3.1 Objektmodell 13.3.2 Einfaches Beispiel 13.3.3 Öffnen-Dialog 13.3.4 Speichern-Dialog 13.3.5 Schriftarten-Dialog 739 741 742 745 747 748 749 750 751 753 754 756 757 Stichwortverzeichnis 759 Band 2 14 Daten und Dokumente 14.1 ActiveX Data Objects (ADO) 14.1.1 Von ODBC zu OLE DB 14.1.2 Einführung in die ActiveX Data Objects (ADO) 14.1.3 Beschreibung von Datenverbindungen 14.1.4 Das ADO-Objektmodell 14.1.5 Tabellenzugriff mit Recordsets 14.1.6 Befehlsausführung mit der Command-Klasse 14.1.7 Dauerhafte Verbindungen mit der Connection-Klasse 14.1.8 Zugriff auf einzelne Elemente mit der Record-Klasse 14.1.9 Transaktionssteuerung 14.1.10 ADO-Fehlerbehandlung 14.2 SQL Server Distributed Management Objects (DMO) 14.2.1 DMO-Objektmodell 14.2.2 Application-Klasse 14.2.3 SQLServer-Klasse 14.2.4 Anlegen einer neuen Datenbank 14.2.5 Anlegen einer neuen Tabelle 14.2.6 Datensicherung 14.3 DTS-Paketobjekte 791 792 792 796 798 803 805 816 820 822 825 826 828 830 834 835 836 840 842 844 XVII Inhaltsverzeichnis 14.4 Microsoft Office-Komponenten 14.5 Document Object Model (DOM) 14.5.1 HTML Document Object Model (MSHTML) 14.5.2 XML Document Object Model (MSXML) 14.6 OLE File Property Reader 2.0 (DSOFile) 14.6.1 Klassen 14.6.2 Daten auslesen 14.6.3 Daten ändern 14.6.4 Selbst definierte Eigenschaften 14.6.5 Selbst definierte Eigenschaften löschen 14.7 Microsoft Office-Komponenten 15 Netzwerk und Kommunikation 15.1 Collaboration Data Objects (CDO) 15.1.1 CDO-Grundlagen 15.1.2 CDO-Objektmodell 15.1.3 CDO- und MAPI-Basiskonzepte 15.1.4 CDO-Anmeldung 15.1.5 Zugriff auf Nachrichtenspeicher 15.1.6 Zugriff auf Ordner 15.1.7 Zugriff auf die Nachrichten 15.1.8 Anlegen neuer Nachrichten in Ordnern 15.1.9 Adressbücher und Adresseinträge 15.1.10 Senden einer E-Mail 15.1.11 Arbeit mit Nachrichtenanhängen 15.2 Komponenten für den Exchange Server 2000/2003/2007 15.2.1 Überblick 15.2.2 Exchange-Programmierung mit ADO 15.2.3 CDO 3.0 für Exchange 2000/2003/2007 15.2.4 CDO for Exchange Management 15.3 SMTP-Mail-Komponenten 15.3.1 CDONTS für NT4 15.3.2 CDO for Windows 2000 15.3.3 JMAIL 15.4 Microsoft WinSock-Komponente 15.5 Internet Transfer-Komponente 15.6 ASPInet (FTP) 15.7 Mabry FTPX 15.8 HTTP-Download 15.9 NETCon (Windows Firewall) 15.9.1 Objektmodell 15.9.2 Beispiele XVIII 846 846 847 854 869 870 871 872 872 873 874 875 876 876 879 883 888 892 893 897 902 904 906 907 909 910 922 943 951 963 964 966 970 972 976 981 982 984 985 986 986 Inhaltsverzeichnis 16 Sicherheitskomponenten 16.1 CAPICOM 16.1.1 Klassen 16.1.2 Verschlüsselung 16.1.3 Hashing 16.2 Scripting Password-Komponente 16.2.1 Klassen 16.2.2 Beispiel 17 Sonstige Scripting-Komponenten 17.1 Reguläre Ausdrücke mit RegExp 17.1.1 RegExp-Objektmodell 17.1.2 Klasse „RegExp“ 17.1.3 Einfacher Mustervergleich mit Test() 17.1.4 RA-Symbole 17.1.5 Ausführlicher Mustervergleich mit Execute() 17.1.6 Submatches 17.1.7 Musterersetzung mit Replace() 17.2 WindowsScripting-Komponente 17.2.1 Klasse „IniFile“ 17.2.2 Klasse „WinNTUser“ 17.2.3 Klasse „Util“ 17.2.4 Klasse „ADSI“ 17.2.5 Klasse „CSV“ 17.3 API-Funktionsaufrufe mit DynaCall 18 Werkzeuge 18.1 Editoren und Entwicklungsumgebungen 18.1.1 Microsoft Visual InterDev 18.1.2 Scripteditor in Microsoft Office 18.1.3 PrimalScript 18.1.4 SystemScripter 18.1.5 OnScript Editor 18.1.6 Visual Basic 6.0 und VB-IDE 18.1.7 Notepad und Notepad Plus 18.1.8 Admin Script Editor (ASE) 18.1.9 VBsEdit/JsEdit 18.1.10 Vergleich der Editoren 18.2 Scriptdebugger 18.2.1 Microsoft Script Debugger 18.2.2 Visual InterDev-Debugger 18.2.3 Visual Basic-Debugger 18.2.4 Andere Debugger 18.3 COM-Werkzeuge 18.3.1 Microsoft Registrierungsdatenbank-Editoren 18.3.2 Registry Crawler 989 989 990 990 991 991 992 992 995 995 996 997 998 999 1001 1004 1005 1006 1007 1008 1009 1009 1010 1010 1013 1013 1013 1016 1016 1019 1022 1023 1023 1024 1025 1025 1027 1027 1028 1029 1029 1029 1029 1030 XIX Inhaltsverzeichnis 18.4 18.5 18.6 18.7 18.8 18.3.3 Regsvr32, SWBregsvr und CliReg 18.3.4 COM Viewer 18.3.5 COM-Explorer 18.3.6 Dependency Walker 18.3.7 Objektkatalog 18.3.8 comTLBrowser 18.3.9 DCOM-Konfigurationswerkzeug 18.3.10 MTS Explorer 18.3.11 Snap-in „Komponentendienste“ 18.3.12 ROT-Viewer 18.3.13 Scripting Spy 2.11 WMI-Werkzeuge 18.4.1 WMI Object Browser 18.4.2 WMI CIM Studio 18.4.3 WMI Event Registration Tool 18.4.4 WMI Event Viewer 18.4.5 WMI Command Line Utility (WMIC) 18.4.6 WMI Scriptomatic 18.4.7 WMI Code Creator 18.4.8 VBInstance 18.4.9 WMI-Testprogramm 18.4.10 MOF Compiler ADSI-Werkzeuge 18.5.1 MMC-Snap-in „Active Directory-Benutzer und -Computer“ 18.5.2 Active Directory Service Browser (ADB) 18.5.3 ADSI Explorer 18.5.4 ADSI Edit 18.5.5 ADSI Schema Browser 18.5.6 ADSI Scriptomatic MAPI-/CDO-Werkzeuge 18.6.1 Script Director 18.6.2 MAPI Explorer XML-Werkzeuge 18.7.1 XML Notepad 2006 18.7.2 XLST-Transformationen mit MSXSL.EXE 18.7.3 IE Tools for Validating XML and Viewing XSLT Output Sonstige Scripting-Assistenten 18.8.1 HTA Helpomatic 18.8.2 Do-It-Yourself Script Center Kit 1030 1032 1035 1036 1037 1039 1040 1043 1044 1046 1046 1049 1049 1051 1053 1055 1055 1056 1056 1058 1059 1059 1059 1059 1060 1061 1062 1064 1064 1065 1065 1066 1067 1067 1067 1069 1071 1071 1072 19 Fortgeschrittene Active Scripting-Techniken 1073 19.1 Fehlersuche in Scripts (Debugging) 19.1.1 Fehlerarten 19.1.2 Active Scripting-Debugger 19.1.3 Auswahl des Debugger 19.1.4 Aufruf des Debugger 19.1.5 Aktivierung des Debugging 1073 1073 1074 1075 1075 1075 XX Inhaltsverzeichnis 19.2 Scriptcodierung mit dem Script Encoder 19.2.1 Codierung per Kommandozeile 19.2.2 Codierung per Script mit der Klasse Scripting.Encoder 19.3 Digitale Signaturen für Scripts 19.3.1 Grundlagen digitaler Signaturen 19.3.2 Erstellen von Signaturen mit den CryptoAPI-Werkzeuge 19.3.3 Aktivierung der automatischen Prüfung 19.3.4 Digitale Signaturen und Softwareeinschränkungen 19.3.5 Digitale Signaturen und Scriptcodierung 19.4 Login- und Logoff-Scripts 19.5 Entwicklung von Automatisierungslösungen in Visual Basic 6 19.5.1 VB-EXE versus Scripting 19.5.2 Erstellung einer VB-EXE 19.5.3 Eingabehilfen 19.5.4 Einbindung von Typbibliotheken 19.5.5 Debugging 19.5.6 Eingebaute Objekte (Intrinsic Objects) 19.5.7 Grafische Benutzeroberflächen mit VB-Forms 19.5.8 WSH-kompatible Programmierung in VB 19.6 Die VBA-Hosts in Microsoft Office 19.6.1 Entwicklungsumgebung 19.6.2 Start einer VBA-Routine 19.6.3 Eingebautes Objekt 19.6.4 VBA-UserForms 19.6.5 Microsoft Office Developer Edition 19.7 Prototyping von Exchange Event Agents innerhalb der VB 6.0-IDE 19.8 Erzeugung eigener COM-Komponenten 19.8.1 Erzeugung von Komponenten mit VB 6.0 19.8.2 Windows Script Components (WSCs) 19.9 Ausführung entfernter Scripts 19.9.1 Remote Scripting mit dem WSH 19.9.2 Remote Scripting im Web 19.10 Nutzung entfernter COM-Komponenten 19.10.1 Remote Scripting via DCOM 19.10.2 Remote Scripting mit Windows Script Components (WSCs) 19.10.3 Remote Data Service (RDS) 19.11 Programmierung eigener Scripting Hosts 19.12 Komponentenerforschung 19.12.1 Suche nach Komponenten 19.12.2 Analyse von Komponenten 20 Fallbeispiele 20.1 ADS-Organisationsstrukturwerkzeug 20.1.1 Aufgabenstellung 20.1.2 Lösung 1077 1079 1081 1082 1082 1084 1091 1093 1094 1095 1097 1098 1101 1103 1105 1106 1107 1109 1110 1113 1115 1116 1117 1117 1118 1119 1125 1125 1131 1139 1140 1148 1148 1149 1152 1158 1158 1161 1161 1166 1173 1173 1173 1174 XXI Inhaltsverzeichnis 20.2 Massenbenutzerimport 20.2.1 Aufgabenstellung 20.2.2 Lösung 20.3 Login-Script 20.3.1 Aufgabenstellung 20.3.2 Lösung 20.4 Scriptfernausführung per E-Mail 20.4.1 Aufgabenstellung 20.4.2 Lösung 20.5 WebPrinterManager 20.5.1 Aufgabenstellung 20.5.2 Lösung 20.6 WBEM Multi Server Disk Viewer (WMSDV) 20.6.1 Aufgabenstellung 20.6.2 Lösung 20.7 Hardware-Inventarisierung 20.7.1 Aufgabenstellung 20.7.2 Lösung 20.8 Dienstestatus 20.8.1 Aufgabenstellung 20.8.2 Lösung 20.9 Dateisystemstrukturdokumentation 20.9.1 Aufgabenstellung 20.9.2 Lösung 20.10 DemoHost 20.10.1 Aufgabenstellung 20.10.2 Lösung 20.11 Weitere Beispiele 20.11.1 ADS-Gruppenwerkzeug 20.11.2 DTS-Anwendung 20.11.3 Character Map Viewer 20.11.4 WebUserManager Teil C PowerShell 21 .NET Framework 21.1 Was ist das .NET Framework? 21.2 Weitere Eigenschaften des .NET Framework 21.3 .NET-Klassen 21.3.1 Namensgebung von .NET-Klassen (Namensräume) 21.3.2 Namensräume und Softwarekomponenten 21.3.3 Bestandteile einer .NET-Klasse 21.3.4 Vererbung 21.3.5 Schnittstellen 21.3.6 Dokumentation XXII 1176 1176 1178 1180 1180 1180 1182 1182 1184 1187 1187 1188 1192 1192 1193 1197 1197 1198 1203 1203 1203 1206 1206 1206 1212 1212 1213 1214 1214 1215 1216 1217 1219 1221 1221 1223 1224 1224 1225 1226 1227 1227 1228 Inhaltsverzeichnis 22 Einführung in die Windows PowerShell (PS) 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 Geschichte Bezugsquelle und Installation Architektur Einzelbefehle der PowerShell 22.4.1 Commandlets 22.4.2 Aliase 22.4.3 Ausdrücke 22.4.4 Externe Befehle 22.4.5 Dateinamen Objektorientiertes Pipelining 22.5.1 Grundlagen 22.5.2 Objektorientierung 22.5.3 Analyse des Pipeline-Inhalts 22.5.4 Filtern 22.5.5 Zusammenfassung von Pipeline-Inhalten 22.5.6 Kastrierung von Objekten in der Pipeline 22.5.7 Sortieren 22.5.8 Gruppierung 22.5.9 Berechnungen 22.5.10 Zwischenschritte in der Pipeline 22.5.11 Beispiele Ausgabefunktionen 22.6.1 Standardausgabe 22.6.2 Seitenweise Ausgabe 22.6.3 Einschränkung der Ausgabe 22.6.4 Ausgabe einzelner Werte 22.6.5 Unterdrückung der Ausgabe 22.6.6 Weitere Ausgabefunktionen Navigationsmodell 22.7.1 Provider und Laufwerke 22.7.2 Navigationsbefehle 22.7.3 Pfadangaben 22.7.4 Eigene Laufwerke definieren PowerShell Language (PSL) 22.8.1 Befehlstrennung 22.8.2 Kommentare 22.8.3 Variablen 22.8.4 Zahlen 22.8.5 Zeichenketten 22.8.6 Datum und Uhrzeit 22.8.7 Arrays 22.8.8 Kontrollkonstrukte 22.8.9 PowerShell-Scripts 22.8.10 PowerShell-Scripts als Commandlets verwenden 22.8.11 Commandlets für Script-Ausführung 1229 1229 1230 1231 1231 1232 1234 1239 1239 1239 1239 1239 1240 1242 1249 1250 1251 1251 1252 1253 1253 1254 1255 1257 1257 1257 1259 1260 1260 1261 1262 1262 1263 1263 1264 1264 1264 1265 1266 1266 1269 1270 1270 1272 1273 1275 XXIII Inhaltsverzeichnis 22.9 Eingabe 22.10 Anbindung an Klassenbibliotheken 22.10.1 WMI-Objekte 22.10.2 .NET- und COM-Objekte 22.11 Sicherheitsfunktionen 22.12 Fehlersuche 22.13 Tipps und Tricks 22.14 Erweitern der PowerShell 22.15 Commandlets von anderen Anbietern 22.16 Ausblick auf PowerShell 2.0 und „Aspen“ 22.17 Weitere Informationen über die PowerShell 22.17.1 Websites zur PowerShell 22.17.2 Weblogs zur PowerShell 23 PowerShell-Werkzeuge 23.1 23.2 23.3 23.4 Powershell-Konsole PowerShell IDE PowerShell Analyzer Weitere Werkzeuge 24 Systemautomatisierung mit der PowerShell 24.1 Dateisystem 24.1.1 Laufwerke 24.1.2 Inhalt eines Verzeichnisses 24.1.3 Dateisystemoperationen 24.1.4 Dateieigenschaften lesen und verändern 24.1.5 Freigaben 24.2 Dokumente und Datenbanken 24.2.1 Textdateien 24.2.2 CSV-Dateien 24.2.3 XML-Dateien 24.2.4 HTML-Dokumente 24.2.5 Relationale Datenbanken 24.3 Registrierungsdatenbank (Registry) 24.4 Computerverwaltung 24.5 Hardwareverwaltung 24.6 Softwareverwaltung 24.7 Prozesse 24.8 Druckerverwaltung 24.9 Systemdienste 24.10 Netzwerk 24.10.1 Ping 24.10.2 Netzwerkonfiguration 24.10.3 Abruf von Daten von einem HTTP-Server XXIV 1276 1277 1277 1283 1285 1285 1286 1287 1288 1288 1289 1289 1289 1291 1291 1293 1294 1295 1297 1297 1297 1298 1298 1299 1299 1299 1299 1300 1301 1302 1303 1304 1306 1307 1307 1309 1310 1310 1312 1312 1312 1313 Inhaltsverzeichnis 24.11 24.12 24.13 24.14 Ereignisprotokolle Leistungsdaten Exchange Server 2007 Grafische Benutzeroberflächen 24.14.1 Eingabemaske 24.14.2 Universelle Objektdarstellung 25 Verzeichnisdienst-Scripting mit der PowerShell 25.1 Benutzer- und Gruppenverwaltung mit WMI 25.2 Einführung in System.DirectoryServices 25.2.1 Architektur 25.2.2 Objektmodell 25.2.3 Konzeptionelles Chaos bei Microsoft 25.2.4 Überblick über die Programmiermechanismen 25.3 Beispiele zum Active Directory-Scripting 25.4 Kapselung von Verzeichnisdienstfunktionen in eigenen Commandlets Teil D Anhang 1314 1315 1316 1318 1318 1319 1321 1321 1322 1322 1324 1326 1328 1332 1340 1347 26 Grundlagen objektorientierter Komponentenarchitekturen 1349 26.1 Objektorientierung 26.1.1 Objekte 26.1.2 Schnittstellen (Interfaces) 26.1.3 Klassen 26.1.4 Vererbung (Inheritance) 26.1.5 Beziehungen zwischen Objekten und Klassen 26.1.6 Objektmodelle 26.1.7 Polymorphismus 26.1.8 Dynamische Bindung 26.2 Komponentenarchitekturen 26.3 Marktübersicht 1349 1349 1351 1351 1354 1355 1359 1361 1361 1362 1366 27 Kurzeinführung in XML 27.1 27.2 27.3 27.4 27.5 27.6 27.7 27.8 27.9 Elemente und Attribute Processing Instructions (PIs) Wohlgeformtheit und Gültigkeit Zeichensätze XML-Namensräume Datentypen XML-Beispiele Darstellung von XML-Dokumenten XML und Scripting 1369 1369 1370 1371 1373 1374 1374 1376 1379 1385 XXV Inhaltsverzeichnis 28 Visual Basic-Funktionen 28.1 28.2 28.3 28.4 28.5 28.6 28.7 28.8 28.9 28.10 Numerische Funktionen Finanzmathematische Funktionen Formatierungsfunktionen String-Funktionen Datum/Uhrzeit Array-Funktionen Funktionen zur Arbeit mit COM Systemfunktionen und Ein-/Ausgabe Typprüfung und -umwandlung Sonstige Funktionen 29 Literaturverzeichnis 29.1 29.2 29.3 29.4 29.5 Gedruckte Literatur Quellen im Internet Requests for Comment (RFCs) Newsgroups Andere Quellenangaben 30 Abkürzungsverzeichnis Stichwortverzeichnis XXVI 1387 1387 1388 1389 1390 1391 1392 1392 1393 1395 1397 1399 1399 1402 1409 1410 1411 1413 1423