Automatisieren von TCP/IP-Netzwerken auf Clients

Teil 8: Verwenden von fortgeschrittenen Verfahren für die Verwaltung von Netzwerken

Veröffentlicht: 07. Dez 2004

Neben Klassen wie Win32_NetworkAdapterConfiguration und und ihren Funktionen enthält WMI noch weitere Klassen und Funktionen, die sich insbesondere bei der Verwaltung von Netzwerkclients als nützlich erweisen. Dieser Abschnitt befasst sich mit den fortgeschrittenen Skripterstellungstechniken und enthält die notwendigen Einzelschritte ebenso wie Beispielskripts für die folgenden Aufgaben:

Koordinieren der Systemzeit über das Netzwerk

Verschiedene Klassen ermöglichen die Koordination von Systemdatum und -uhrzeit mithilfe von Skripts.

Ändern von Netzwerkeinstellungen in der Registrierung

Auf die Windows-Registrierung einschließlich aller Einstellungen kann unter Verwendung des WMI-Anbieters für die Systemregistrierung per Skript zugegriffen werden.

Diese fortgeschrittenen Skripterstellungstechniken können außer für die TCP/IP-Vernetzung auch für die Erstellung von Skripts für andere Bereiche der Systemverwaltung eingesetzt werden.

Auf dieser Seite
Koordinieren der Systemzeit über das NetzwerkKoordinieren der Systemzeit über das Netzwerk
Ändern von Netzwerkeinstellungen in der RegistrierungÄndern von Netzwerkeinstellungen in der Registrierung
Tools für die Netzwerkverwaltung mit fortgeschrittenen SkriptingtechnikenTools für die Netzwerkverwaltung mit fortgeschrittenen Skriptingtechniken

Koordinieren der Systemzeit über das Netzwerk

Einige Funktionen des Betriebssystems und von Client-/Serveranwendungen sind von synchronisierten Datums- und Uhrzeitangaben auf den Computern im Netzwerk abhängig. Beispielsweise führt der Vergleich der Zeitstempel von Dateien oder Ereignissen auf unterschiedlichen Computern nur dann zu zuverlässigen Ergebnissen, wenn die Systemuhrzeiten auf den Computern übereinstimmen.

caution.gifVorsicht
Active Directory synchronisiert Datum und Uhrzeit auf Computern, die über Konten im Verzeichnisdienst verfügen, automatisch. Ändern Sie also nicht das Datum oder die Uhrzeit auf einem Computer, der Mitglied einer Active Directory-Domäne ist.

Anstatt Datums- und Uhrzeitfunktionen in einer oder zwei Klassen zu konzentrieren, verteilt WMI diese auf mehrere Klassen, von denen einige eher allgemeine Container darstellen:

So enthalten z. B. die Klassen Win32_ComputerSystem und Win32_OperatingSystem neben vielen anderen Eigenschaften und Methoden auch solche zum Verwalten von Datums- und Uhrzeiteinstellungen:

Win32_TimeZone, Win32_CurrentTime, Win32_LocalTime und Win32_UTCTime (die drei zuletzt genannten sind unter Windows XP neu hinzugekommen) enthalten ebenfalls schreibgeschützte Eigenschaften, mit denen sich jede Komponente der Einstellungen von Datum und Uhrzeit, Zeitzone und Sommerzeit anzeigen lässt.

Das SWbemDateTime-Objekt aus der WMI-Skriptingbibliothek, welches ebenfalls mit Windows XP neu eingeführt wurde, kann zudem in Verbindung mit den anderen Klassen verwendet werden, um Datums- und Uhrzeitobjekte zu manipulieren.

Win32_OperatingSystem

Tabelle 39 enthält eine Liste der schreibgeschützten Eigenschaften, die mit der Klasse Win32_OperatingSystem für die Verwaltung von Datums- und Uhrzeiteinstellungen bereitstehen.

Tabelle 39 Datums- und Uhrzeiteigenschaften von "Win32_OperatingSystem"

EigenschaftTypBeschreibung

CurrentTimeZone

(schreibgeschützt)

sint16

Gibt den Offset des Betriebssystems von GMT (Greenwich Mean Time) in Minuten an. Die Zahl ist positiv, negativ oder Null.

LocalDateTime

(schreibgeschützt)

datetime

Das vom Betriebssytem verwendete Format für Datum und Tageszeit.

Tabelle 40 erläutert die Methode der Klasse Win32_OperatingSystem zum Verwalten von Datums- und Uhrzeiteinstellungen.

Tabelle 40 Datums- und Uhrzeitmethode von "Win32_OperatingSystem"

MethodeParameterBeschreibung

SetDateTime

LocalDateTime – datetime

Ein Zeitwert.

Legt die aktuelle Systemzeit auf dem Computer fest. Der aufrufende Prozess muss über das Recht SE_SYSTEMTIME_NAME verfügen.

Diese Methode gibt eine positive Ganzzahl zurück.

0 bedeutet: erfolgreicher Abschluss.

Zahlen größer als 0 weisen auf einen Fehler hin.

Win32_ComputerSystem

Tabelle 41 listet die Eigenschaften von Win32_ComputerSystem auf, von denen zwei gelesen und geschrieben werden können, um Datums- und Uhrzeiteinstellungen zu verwalten.

Tabelle 41 Datums- und Uhrzeiteigenschaften von "Win32_ComputerSystem"

EigenschaftTypBeschreibung

CurrentTimeZone

(Lesen/Schreiben)

sint16

Einheit: Minuten

Gibt den Offset des Computersystems von UTC (Coordinated Universal Time) in Minuten an.

DaylightInEffect

(schreibgeschützt)

Boolean-Wert

Sommerzeitmodus ist aktiviert.

EnableDaylightSavingsTime

(Lesen/Schreiben)

Nur Windows XP und Windows Server 2003

Boolean-Wert

Aktiviert die Sommerzeit (Daylight Saving Time, DST) auf einem Computer. Der Wert "Wahr" gibt an, dass die Systemzeit zu Beginn oder Ende der Sommerzeit eine Stunde zurück- oder vorgestellt wird. Der Wert "Falsch" gibt an, dass die Systemzeit zu Beginn oder Ende der Sommerzeit keine Stunde zurück- oder vorgestellt wird. Der Wert NULL gibt an, dass der Status DST auf dem System unbekannt ist.

Win32_TimeZone

Win32_TimeZone umfasst die Zeitzoneninformationen eines Windows-Systems, wozu auch die Änderungen gehören, die für die Umschaltung auf Sommerzeit notwendig sind. Diese Klasse enthält mehrere Eigenschaften, die alle schreibgeschützt sind, jedoch keine Methoden. Zu den Eigenschaften gehören die Komponenten von Datum und Uhrzeit für Standard- und Sommerzeit sowie die jeweiligen Abweichungen.

Win32_CurrentTime

Anstelle dieser Klasse empfiehlt sich die Verwendung der Klassen Win32_LocalTime oder Win32_UTCTime.

Neu in Windows XP und Windows Server 2003

Als abstrakte Klasse ohne Instanzen dient Win32_CurrentTime als Vorlage für die anderen Zeitklassen. Sie beschreibt einen bestimmten Zeitpunkt über Elemente wie Sekunden, Minuten, Stunden, Tagen, Tagen der Woche, Woche im Monat, Monaten, Quartalen und Jahren. Beachten Sie, dass die Eigenschaft Milliseconds im SDK zwar für diese Klasse aufgeführt wird, jedoch noch nicht implementiert wurde.

Die Klassen Win32_LocalTime und Win32_UTCTime erben jeweils von der Klasse Win32_CurrentTime.

Win32_LocalTime

Neu in Windows XP und Windows Server 2003

Die Klasse Win32_LocalTime repräsentiert die Ortszeit auf dem Computer. Diese Klasse erbt von Win32_CurrentTime und weist die gleichen Eigenschaften auf. Die Eigenschaft Hour gibt die Ortszeit im 24-Stunden-Format zurück. Beachten Sie, dass die Eigenschaft Milliseconds im SDK zwar für diese Klasse aufgeführt wird, jedoch noch nicht implementiert wurde.

Win32_UTCTime

Neu in Windows XP und Windows Server 2003

Die Klasse Win32_UTCTime repräsentiert die Ortszeit auf dem Computer. Diese Klasse erbt von Win32_CurrentTime und weist die gleichen Eigenschaften auf. Die Eigenschaft Hour gibt die UTC-Zeit (Coordinated Universal Time) im 24-Stunden-Format zurück. Beachten Sie, dass die Eigenschaft Milliseconds im SDK zwar für diese Klasse aufgeführt wird, jedoch noch nicht implementiert wurde.

Objekt "SWbemDate Time" aus der WMI-Skriptingbibliothek

Neu in Windows XP und Windows Server 2003

Dieses Hilfsobjekt analysiert und konvertiert WMI-Datums-/Uhrzeitwerte (z. B. die Eigenschaft LocalDateTime Von der Klasse Win32_OperatingSystem) in und aus anderen Formaten. Weitere Informationen enthält der Abschnitt "SWbemDateTime" im WMI SDK unter http://go.microsoft.com/fwlink/?LinkId=29997 (englischsprachig).

VBScript-Funktion "Now"

Diese Funktion extrahiert das aktuelle Systemdatum und die Systemuhrzeit des Computers mithilfe eines Skripts.

Abrufen der aktuellen Uhrzeit mithilfe der VBScript-Funktion "Now"

Das nachstehende Skript ruft die aktuelle Systemzeit eines Computers mithilfe der VBScript-Funktion Now ab.

Listing 52 Time-get.vbs

1
WScript.Echo "Current Date and Time: " & Now

Wenn Sie Cscript.exe zur Ausführung dieses Skripts verwenden, wird im Befehlsfenster eine ähnliche Ausgabe wie die folgende angezeigt:

C:\scripts>time-get.vbs

Current Date and Time: 5/19/2004 2:46:29 PM

Abrufen der Ortszeit mithilfe von WMI

WMI bietet eine etwas komplexere, dafür aber auch flexiblere Methode als die VBScript-Funktion Now zum Auslesen des lokalen Datums und der Uhrzeit. Die Klasse Win32_LocalTime umfasst Eigenschaften zur Darstellung von Jahr, Quartal, Monat, Woche im Monat, Datum, Tag der Woche, Stunde (basierend auf der 24-Stunden-Uhr), Minute und Sekunde der lokalen Systemzeit.

Schritte zur Skripterstellung

Mit Listing 53 wird die Ortszeit eines Computers mit der WMI-Klasse Win32_LocalTime abgerufen. Diese Klasse wurde für Windows XP neu eingeführt, daher kann das Skript nur unter Windows XP und Windows Server 2003 ausgeführt werden.

1.

Erstellen Sie eine Variable, und weisen Sie ihr den Namen eines Computers zu. Geben Sie beim lokalen Computer einfach "." als Computernamen an. Wenn Sie dieses Skript remote ausführen möchten, geben Sie den Namen eines verfügbaren Remotecomputers im Netzwerk an, für den Sie Administratorrechte besitzen. Der Name kann entweder aus einem Hostnamen oder einer IP-Adresse bestehen.

2.

Verwenden Sie einen GetObject-Aufruf zum Herstellen einer Verbindung zum WMI-Namespace root\cimv2, und legen Sie den Parameter "impersonationLevel" auf "impersonate" fest.

3.

Verwenden Sie die ExecQuery-Methode zum Abfragen der Klasse Win32_LocalTime.

Hiermit wird eine aus einem Objekt bestehende Auflistung zurückgegeben, die die Ortszeit auf dem Computer repräsentiert.

4.

Verwenden Sie die Eigenschaften des LocalTime-Objekts zum Anzeigen von Monat, Tag, Jahr, Quartal, Woche im Monat, Tag der Woche und Uhrzeit.

Listing 53 Time-get-local.vbs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
On Error Resume Next

 strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colLocalTimes = objWMIService.ExecQuery("Select * from Win32_LocalTime")

 For Each objLocalTime in colLocalTimes
  Wscript.Echo "Date: " & objLocalTime.Month & "/" & objLocalTime.Day & _
   "/" & objLocalTime.Year
  Wscript.Echo "Quarter: " & objLocalTime.Quarter
  Wscript.Echo "Week In the Month: " & objLocalTime.WeekInMonth
  Wscript.Echo "Day Of the Week: " & objLocalTime.DayOfWeek
  Wscript.Echo "Time: " & objLocalTime.Hour & ":" & objLocalTime.Minute & _
   ":" & objLocalTime.Second
Next

Wenn Sie Cscript.exe zur Ausführung dieses Skripts verwenden, wird im Befehlsfenster eine ähnliche Ausgabe wie die folgende angezeigt:

C:\scripts>time-get-local.vbs

Date: 5/19/2004

Quarter: 2

Week In the Month: 4

Day Of the Week: 3

Time: 16:55:39

Abrufen der UTC-Zeit mithilfe von WMI

Die koordinierte Weltzeit (Coordinated Universal Time, UTC) ist die internationale Standardzeit und wird vom Observatorium in Greenwich/Großbritannien bereitgestellt. Die UTC weicht von der Ortszeit um die von der jeweiligen lokalen Zeitzone vorgegebenen Differenz ab, welche von anderen Klassen bereitgestellt wird, die an späterer Stelle in diesem Abschnitt beschrieben werden. Beim Vergleich der Systemzeiten von Computern in unterschiedlichen Zeitzonen kann sich UTC als nützlich erweisen, da es sich hierbei um die aktuelle Uhrzeit im Greenwich-Observatorium handelt und der Wert daher überall auf der Welt gleich ist.

Schritte zur Skripterstellung

Mit Listing 54 wird auf einem Computer unter Verwendung der WMI-Klasse Win32_UTCTime die aktuelle UTC abgerufen. Wie bei der Klasse Win32_LocalTime wird auch bei Win32_UTCTime die Zeit im 24-Stunden-Format dargestellt. Diese Klasse wurde für Windows XP neu eingeführt, daher kann das Skript nur unter Windows XP und Windows Server 2003 ausgeführt werden.

1.

Erstellen Sie eine Variable zur Angabe des Computernamens.

2.

Verwenden Sie einen GetObject-Aufruf zum Herstellen einer Verbindung zum WMI-Namespace root\cimv2, und legen Sie den Parameter "impersonationLevel" auf "impersonate" fest.

3.

Verwenden Sie die ExecQuery-Methode zum Abfragen der Klasse Win32_LocalTime.

Hiermit wird eine aus einem Objekt bestehende Auflistung zurückgegeben, die die UTC auf dem jeweiligen Computer repräsentiert.

4.

Verwenden Sie die Eigenschaften des UTC-Objekts zum Anzeigen von Monat, Tag, Jahr, Quartal, Woche im Monat, Tag der Woche und Uhrzeit.

Listing 54 Time-get-utc.vbs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
On Error Resume Next

 strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colUTCTimes = objWMIService.ExecQuery("Select * from Win32_UTCTime")

 For Each objUTCTime in colUTCTimes
  Wscript.Echo "Date: " & objUTCTime.Month & "/" & objUTCTime.Day & _
   "/" & objUTCTime.Year
  Wscript.Echo "Quarter: " & objUTCTime.Quarter
  Wscript.Echo "Week In the Month: " & objUTCTime.WeekInMonth
  Wscript.Echo "Day Of the Week: " & objUTCTime.DayOfWeek
  Wscript.Echo "Time: " & objUTCTime.Hour & ":" & objUTCTime.Minute & _
   ":" & objUTCTime.Second
Next

Wenn Sie Cscript.exe zur Ausführung dieses Skripts verwenden, wird im Befehlsfenster eine ähnliche Ausgabe wie die folgende angezeigt:

C:\scripts>time-get-utc.vbs

Date: 5/19/2004

Quarter: 2

Week In the Month: 4

Day Of the Week: 3

Time: 23:56:29

Abrufen der Uhrzeit von einem Remotecomputer

Wie bei anderen WMI-Klassen muss zum Abrufen der UTC oder der Ortszeit von einem Remotecomputer einfach nur der Name des Computers in der Variablen strComputer (siehe Zeile 3 des Skripts) in den eines Remotecomputers geändert werden, für den Sie über Verwaltungsrechte verfügen, und der Rest wird von WMI selbsttätig erledigt.

Vergleichen der Ortszeiten zweier Computer

Eine Möglichkeit zum Vergleichen von Systemdatum und -uhrzeit auf zwei Computern in der gleichen Zeitzone stellt die LocalDateTime-Eigenschaft der Klasse Win32_OperatingSystem bereit. Diese schreibgeschützte Eigenschaft gibt die lokale Datums- und Uhrzeiteinstellung des Betriebssystems einschließlich des Offsets von der GMT (Greenwich Mean Time) zurück, wodurch die Zeitzone angegeben wird. Diese Vorgehensweise funktioniert auf Netzwerken, in denen Computer mit Betriebssystemen vor Windows XP und Windows Server 2003 betrieben werden.

Zum Vergleichen von Datum und Uhrzeit auf Computern in unterschiedlichen Zeitzonen kann dieses Skript zwecks Kompensation der Zeitzonen angepasst werden, indem der Unterschied zwischen den letzten vier Ziffern des von LocalDateTime zurückgegebenen Datum-/Uhrzeitwertes berechnet und angewendet wird. Diese Ziffern beginnen mit einem positiven oder negativen Vorzeichen, worauf ein dreistelliger Offsetwert folgt, der die Anzahl der Minuten angibt, um die die örtliche Zeitzone von UTC abweicht.

Optional können die Angaben mit dem von der Klasse Win32_UTCTime zurückgegebenen Wert verglichen werden. Die so ermittelten Datums- und Uhrzeitangaben sind auf zwei synchronisierten Computern gleich, ungeachtet der Zeitzone. Diese Klasse wird mit Windows XP und Windows Server 2003 neu eingeführt.

Schritte zur Skripterstellung

Listing 55 ermöglicht den Vergleich von Datum und Uhrzeit auf zwei Computern, entweder auf einem lokalen und einem Remotecomputer oder auf zwei Remotecomputern.

1.

Erstellen Sie Variablen zur Angabe der Namen der beiden Computer.

2.

Verwenden Sie auf jedem der beiden Computer einen GetObject-Aufruf zum Herstellen einer Verbindung zum WMI-Namespace root\cimv2, und legen Sie den Parameter "impersonationLevel" auf "impersonate" fest.

3.

Verwenden Sie zudem auf beiden Computern die ExecQuery-Methode zum Abfragen der Klasse Win32_OperatingSystem.

Hiermit werden zwei Auflistungen von Betriebssystemobjekten mit je einem Objekt pro Auflistung zurückgegeben.

4.

Rufen Sie nach dem Eintreffen des Rückgabewertes jedes ExecQuery-Aufrufs die VBScript-Funktion Now auf, und weisen Sie die Sekunden jeder Zeitangabe einer Variablen zu.

Die Funktion Now gibt das Systemdatum und die Systemuhrzeit zum Zeitpunkt der Ausführung zurück.

5.

Wenn der Unterschied zwischen den beiden Zeitvariablen nicht 0 ist, weisen Sie diesen einer Variablen zu. Dies ist der Unterschied zwischen den Zeiten, zu denen die Ausführung der beiden Abfragen der Klasse Win32_OperatingSystem beendet war.

Die mit der LocalDateTime-Eigenschaft auf jedem Computer abgerufene Zeit ist von dem exakten Zeitpunkt abhängig, zu dem die Abfrage ausgeführt wird.

6.

Durchlaufen Sie jedes Betriebssystemobjekt in der Auflistung auf dem ersten Computer mit einer For Each-Schleife.

7.

Durchlaufen Sie innerhalb der ersten For Each-Schleife jedes Betriebssystemobjekt in der Auflistung auf dem zweiten Computer mit einer verschachtelten For Each-Schleife.

8.

Rufen Sie mithilfe der LocalDateTime-Eigenschaft die lokale Systemzeit von beiden Computern ab.

9.

Kürzen Sie die von LocalDateTime zurückgegebenen Datums-/Uhrzeitobjekte auf die Datums-, Stunden- und Minutenwerte, und wenn es eine Differenz zwischen den beiden von Now zurückgegebenen Werten gibt, passen Sie anhand dieser Abweichung die erste Zeit an, bevor Sie beide Zeiten vergleichen.

10.

Rufen Sie die Funktion WMIDateToString auf, um die beiden angepassten Systemdatums- und -uhrzeitangaben in einem besser lesbaren Format anzuzeigen.

Weitere Informationen über WMIDateToString finden Sie im Abschnitt "Anzeigen von DHCP-Clientinformationen" an früherer Stelle in diesem Dokument.

11.

Vergleichen Sie die beiden angepassten Datums- und Uhrzeitwerte, und geben Sie das Resultat des Vergleichs aus.

note.gifHinweis
Die von diesen beiden Auflistungen zurückgegebenen Datums- und Uhrzeitwerte sind nach der Ausführung von ExecQuery() statisch. Das heißt, es handelt sich um einen Momentaufnahmen des Datums und der Uhrzeit zum Zeitpunkt der Ausführung der Abfrage. Unter der Voraussetzung, dass die Netzwerkverbindung gut ist und die beiden Computer nicht ausgelastet sind, liegt ggf. weniger als eine Sekunde zwischen den beiden Abfragen, und es ist nicht notwendig, diese Verzögerung zu kompensieren. Wenn zwischen dem ersten und dem zweiten Aufruf der Funktion Now jedoch mehr als eine Sekunde liegt, kompensiert das Skript die Verzögerung, indem die Differenz der vom ersten Computer abgerufenen Zeit (Zeile 28) hinzuaddiert wird.

Listing 55 Time-compare.vbs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
On Error Resume Next

 strComputer1 = "."
strComputer2 = "server-d1"
Set objWMIService1 = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer1 & "\root\cimv2")
Set objWMIService2 = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer2 & "\root\cimv2")
 Set colOSes1 = objWMIService1.ExecQuery("Select * from " & _
 "Win32_OperatingSystem")
strTime1 = Now

Set colOSes2 = objWMIService2.ExecQuery("Select * from " & _
 "Win32_OperatingSystem")
strTime2 = Now
intSeconds1 = CInt(Left(Right(strTime1, 5), 2))
intSeconds2 = CInt(Left(Right(strTime2, 5), 2))
intDiff = 0
If intSeconds1 <> intSeconds2 Then
  intDiff = intSeconds2 - intSeconds1
End If

 For Each objOS1 in colOSes1
  For Each objOS2 in colOSes2
    intDateTime1 = Left(objOS1.LocalDateTime, 14)
    intDateTime2 = Left(objOS2.LocalDateTime, 14)
    If intDiff <> 0 Then
      intDateTime1 = intDateTime1 + intDiff
    End If
    WScript.Echo "Adjusted time on " & strComputer1 & ": " & _
     WMIDateToString(intDateTime1)
    WScript.Echo "Adjusted time on " & strComputer2 & ": " & _
     WMIDateToString(intDateTime2)
    If intDateTime1 = intDateTime2 Then
      Wscript.Echo "Dates and times are equal."
    Else
      Wscript.Echo "Dates and times are not equal."
    End If
  Next
Next

 '******************************************************************************

 Function WMIDateToString(dtmDate)

 WMIDateToString = CDate(Mid(dtmDate, 5, 2) & "/" & _
                  Mid(dtmDate, 7, 2) & "/" & _
                  Left(dtmDate, 4) & " " & _
                  Mid(dtmDate, 9, 2) & ":" & _
                  Mid(dtmDate, 11, 2) & ":" & _
                  Mid(dtmDate, 13, 2))

 End Function

Wenn Sie Cscript.exe zur Ausführung dieses Skripts verwenden, wird im Befehlsfenster eine ähnliche Ausgabe wie die folgende angezeigt:

C:\scripts>time-compare.vbs

Adjusted time on .: 5/19/2004 5:01:26 PM

Adjusted time on server1: 5/19/2004 5:05:52 PM

Dates and times are not equal.

Festlegen der Uhrzeit auf einem Computer mithilfe von Befehlszeilentools

Zum Einstellen des Systemdatums und der Uhrzeit auf einem lokalen Computer stehen zwei Befehlszeilentools, Date.exe und Time.exe, bereit.

Date.exe verwendet die folgende Syntax:

dateDatumTag / Monat / Jahr

Beispielsweise wird das Systemdatum mit der folgenden Befehlszeile auf den 8. März 2004 festgelegt:

date 03/08/2004

Wird dieser Befehl ohne Argumente ausgeführt, gibt er das aktuelle Systemdatum zurück.

Time.exe verwendet die folgende Syntax, wobei Stunden: Minuten im 24-Stunden-Format angegeben wird:

timeStunden: Minuten

Beispielsweise wird die Systemuhrzeit mit der folgenden Befehlszeile auf den 18:25 festgelegt:

time 18:25

Wird dieser Befehl ohne Argumente ausgeführt, gibt er die aktuell Systemuhrzeit zurück.

Die Befehlszeilentools Date.exe und Time.exe stehen unter allen Windows-Betriebssystemen zur Verfügung.

Der Befehl net time bietet Optionen zur Synchronisation der Zeit mit einem Zeitserver.

Festlegen der Uhrzeit auf einem Computer mithilfe von WMI

Mit WMI können Uhrzeiten auf lokalen und auf Remotecomputern ausgelesen und eingestellt werden. Die WMI-Klasse Win32_OperatingSystem umfasst eine schreibgeschützte Eigenschaft, LocalDateTime, die die lokale Datums- und Uhrzeiteinstellung des Betriebssystems einschließlich des Offsets von der GMT (Greenwich Mean Time) zurückgibt, wodurch die Zeitzone angegeben wird.

caution.gifVorsicht
Active Directory synchronisiert Datum und Uhrzeit auf Computern, die über Konten im Verzeichnisdienst verfügen, automatisch. Ändern Sie also nicht das Datum oder die Uhrzeit auf einem Computer, der Mitglied einer Active Directory-Domäne ist.

Die Klasse Win32_OperatingSystem enthält zudem eine Methode, SetDateTime(), die ein Datum und eine Uhrzeit in Form eines DATETIME-Objekts als Parameter akzeptiert und diese Angabe als aktuelles Datum und Uhrzeit des Computers festlegt. SetDateTime() gibt den Wert 0 zurück, wenn die Ausführung erfolgreich war, im Falle eines Fehlers eine beliebige andere Zahl. Zum Ausführen von SetDateTime() muss das Script von einem Benutzer ausgeführt werden, dessen Anmeldeinformationen das Recht SE_SYSTEMTIME_NAME umfassen.

Das folgende Skript verwendet die LocalDateTime-Eigenschaft und die SetDateTime()-Methode zum Festlegen eines neuen Datums und einer neuen Uhrzeit auf einem lokalen oder einem Remotecomputer.

Das neue Datum und die neue Uhrzeit müssen im Format DATETIME vorliegen, einem WMI-Datentyp, bei dem es sich um eine Zeichenfolge mit fester Länge handelt, die in WMI ein bestimmtes Datum und eine bestimmte Uhrzeit repräsentiert. Die Zeichenfolge hat folgendes Format:

yyyymmddHHMMSS.mmmmmmsUUU

In Tabelle 42 sind die gültigen Werte für die DATETIME-Felder aufgeführt. Sämtliche Feldinhalte müssen den in der Tabelle angegebenen Feldlängen entsprechen. Verwenden Sie im Bedarfsfall führende Nullen.

Tabelle 42 Beschreibungen zum DATETIME-Feld

FeldBeschreibung

jjjj

Vierstellige Variable für die Jahreszahl (0000-9999)

mm

Zweistellige Variable für den Monat (01-12)

tt

Zweistellige Variable für den Tag des Monats (01-31) Dieser Wert muss für den jeweiligen Monat geeignet sein. Beispielsweise ist ein 31. Februar ungültig. Allerdings muss Ihre Implementierung die Daten nicht auf Gültigkeit prüfen.

HH

Zweistellige Variable für die Stunde des Tages bei Verwendung der 24-Stunden-Uhr (00-23)

MM

Zweistellige Variable für die Minuten der Stunde (00-59)

SS

Zweistellige Variable für die Sekunden der Minute (00-59)

mmmmmm

Sechsstellige Variable für die Mikrosekunden der Sekunde (000000–999999)

s

Pluszeichen (+) oder Minuszeichen (-), um einen positiven oder negativen Offset von UTC anzugeben.

UUU

Dreistelliger Offset, der die Anzahl der Minuten angibt, um die die Zeitzone von UTC abweicht. Bei WMI ist es ratsam, jedoch nicht zwingend, Zeitangaben in GMT (mit einem UTC-Offset von Null) umzuwandeln.

Zum Füllen nicht verwendeter Felder oder als Platzhalter kann das Sternchen (*) verwendet werden. Beispielsweise kann ein Datum und eine Uhrzeit mit unbestimmten Jahr in jedem beliebigen Jahr auftreten, wie im folgenden Beispiel:

****0416******.******+***

Soll ein Feld unbestimmt bleiben, muss das gesamte Feld mit Sternchen gefüllt werden. Das folgende Beispiel zeigt gültige und ungültige Varianten der Verwendung von Sternchen:

19980416******.000000+***      ' Gültig 
1998-04-16 ******:***        ' Ungültig 
199*0416******.000000+***      ' Ungültig 
199*-04-16 ******:***        ' Ungültig

Weitere Informationen über den Datentyp DATETIME finden Sie im WMI SDK im Abschnitt "Date and Time Format", aus dem auch diese Erläuterung übernommen wurde. Weitere Informationen über das Arbeiten mit Datums- und Uhrzeitangaben in Skripten enthalten die Abschnitte "Working with Dates and Times" in Kapitel 6 des Windows 2000 Scripting-Handbuchs unter /germany/technet/datenbank/articles/600362.mspx.

Schritte zur Skripterstellung

Mit Listing 56 wird die Systemzeit auf einem lokalen oder Remotecomputer eingestellt. Dieses Skript zeigt, wie die SetDateTime-Methode der Klasse Win32_OperatingSystem eingesetzt wird. Allerdings ist die Genauigkeit bei dieser Vorgehensweise in der Regel auf die Minute und nicht auf die Sekunde beschränkt, da hierbei die korrekte Zeit im letzten Moment eingegeben werden muss.

1.

Erstellen Sie eine Variable, und weisen Sie ihr den Namen eines Computers zu.

2.

Erstellen Sie eine Variable, und weisen Sie ihr eine Zeichenfolge (im WMI-Format DATETIME) zu, die das Datum und die Uhrzeit repräsentiert, die festgelegt werden sollen. Ersetzen Sie kurz vor Ausführung des Skripts das WMI DATETIME-Format durch die tatsächliche Uhrzeit, die festgelegt werden soll. Als Beispieldatum/-uhrzeit wird im Skript der 7. Mai 2004, 17:01 mit einem negativen Offset von 8 Stunden (480 Minuten) von GMT verwendet.

3.

Verwenden Sie einen GetObject()-Aufruf zum Herstellen einer Verbindung zum WMI-Namespace root\cimv2, und legen Sie den Parameter "impersonationLevel" auf "impersonate" fest.

4.

Rufen Sei die ExecQuery-Methode zum Abfragen der Win32-OperatingSystem-Klasse auf.

Hiermit wird eine Auflistung bestehend aus einem Objekt zurückgegeben, das das Betriebssystem repräsentiert.

5.

Führen Sie für jedes Betriebssystemobjekt in der Auflistung die folgenden Aufgaben aus.

6.

Rufen Sie die SetDateTime-Methode der Win32_OperatingSystem-Klasse auf, und übergeben Sie den Datums-/Uhrzeitwert.

7.

Überprüfen Sie den von der Methode zurückgegebenen Wert, und zeigen Sie eine Erfolgs- oder Fehlermeldung an.

8.

Fragen Sie die Klasse Win32_OperatingSystem erneut ab, und rufen Sie die aktualisierte LocalDateTime-Eigenschaft ab, die die Änderung wiedergibt.

9.

Rufen Sie die Funktion WMIDateToString auf, um den Datums-/Uhrzeitwert in einem besser lesbaren Format anzuzeigen. Weitere Informationen über diese Funktion finden Sie im Abschnitt "Anzeigen von DHCP-Clientinformationen" an früherer Stelle in diesem Dokument.

Listing 56 Time-set.vbs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
On Error Resume Next

 strComputer = "."
dtmNewDateTime = "20040520151300.000000-480"
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate, " _
 & "(Systemtime)}!\\" & strComputer & "\root\cimv2")
Set colOSes = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem")

 For Each objOS In colOSes
  intSet = objOS.SetDateTime(dtmNewDateTime)
  If intSet = 0 Then
    Wscript.Echo "Successfully set new date and time."
  Else
    Wscript.Echo "Unable to set mew date and time."
  End If
Next

 Set colOSes = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem")
For Each objOS In colOSes
  Wscript.Echo "New date and time: " & WMIDateToString(objOS.LocalDateTime)
Next

 '******************************************************************************

 Function WMIDateToString(dtmDate)
WMIDateToString = CDate(Mid(dtmDate, 5, 2) & "/" & _
                  Mid(dtmDate, 7, 2) & "/" & _
                  Left(dtmDate, 4) & " " & _
                  Mid(dtmDate, 9, 2) & ":" & _
                  Mid(dtmDate, 11, 2) & ":" & _
                  Mid(dtmDate, 13, 2))
End Function

Wenn Sie Cscript.exe zur Ausführung dieses Skripts verwenden, wird im Befehlsfenster eine ähnliche Ausgabe wie die folgende angezeigt:

C:\scripts>time-set.vbs

Successfully set new date and time.

New date and time: 5/20/2004 3:08:49 PM

Synchronisieren der Uhrzeiten auf zwei Computern

Der Betrieb eines Netzwerkes setzt häufig voraus, dass die Systemzeiten netzwerkübergreifend synchronisiert werden. Einige Anwendungen wie solche, die Dateien basierend auf Zeitstempeln vergleichen, erfordern, dass die Zeiten auf unterschiedlichen Hosts weitestgehend übereinstimmen.

Bei den fortschrittlicheren Methoden zur Sicherstellung einer akkuraten und synchronisierten Uhrzeit im gesamten Netzwerk kommen Tools zum Einsatz, die eine Synchronisation mit öffentlichen Zeitservern durchführen. In diesem Abschnitt soll jedoch gezeigt werden, wie mithilfe eines einfache Skripts die Zeiten auf zwei Computern verglichen werden können und, sofern keine Übereinstimmung vorliegt, die Zeit auf dem Zielcomputer auf die Zeit des Referenzcomputers festgelegt werden kann. Bei dieser Vorgehensweise wird davon ausgegangen, dass bereits auf eine externe Quelle zugegriffen und auf dem Referenzcomputer die korrekte Zeit eingestellt wurde.

Mit einem komplexeren Skript könnte automatisch eine Referenzzeit von einer externen Quelle abgerufen und dann auf den Zielcomputern entsprechend eingestellt werden. Zwar wird diese Funktion von WMI nicht geboten, kann jedoch über ein Befehlszeilentool oder eine Webanwendung ausgeführt werden, das oder die über die WSH Exec-Methode ausgeführt wird.

caution.gifVorsicht
Active Directory synchronisiert Datum und Uhrzeit auf Computern, die über Konten im Verzeichnisdienst verfügen, automatisch. Ändern Sie also nicht das Datum oder die Uhrzeit auf einem Computer, der Mitglied einer Active Directory-Domäne ist.

Der Befehl net time bietet Optionen zur Synchronisation der Zeit mit einem Zeitserver.

Schritte zur Skripterstellung

In Listing 57 wird mithilfe der LocalDateTime-Eigenschaft der Klasse Win32_OperatingSystem die Systemzeit (zeitzonenbereinigt) auf zwei Computern verglichen Auf jedem Computer zieht das Skript die vierzehn ganz links befindlichen Zeichen von LocalDateTime heran (die, mit denen Datum und Uhrzeit sekundengenau angegeben werden) und vergleicht die gekürzten Zeichenfolgen

Wenn die Zeit auf dem ersten Computer nicht mit der auf dem zweiten übereinstimmt, verwendet das Skript die SetDateTime-Methode der Win32-OperatingSystem-Klasse, um den zweiten Computer auf die Zeit des ersten einzustellen. Hierbei werden sommerzeitbedingte Unterschiede berücksichtigt, denn wenn sich beide Computer in der gleichen Zeitzone befinden und die Zeit die gleiche ist, muss auch die Sommerzeiteinstellung der Computer die gleiche sein.

Bei Verwendung dieses Skripts ist die Genauigkeit der Zeitsynchronisation in der Regel auf die Minute und nicht auf die Sekunde beschränkt, da Netzwerklatenz und die Zeit zum Ausführen des Codes berücksichtigt werden müssen.

Führen Sie dazu im Skript die folgenden Schritte aus:

1.

Erstellen Sie Variablen zur Angabe der Namen der beiden Computer.

2.

Verwenden Sie auf jedem der beiden Computer einen GetObject-Aufruf zum Herstellen einer Verbindung zum WMI-Namespace root\cimv2, und legen Sie den Parameter "impersonationLevel" auf "impersonate" fest.

Beachten Sie, dass dieses Skript nicht die Netzwerkkonnektivität zum jeweiligen Computer prüft.

3.

Verwenden Sie auf beiden Computern die ExecQuery-Methode zum Abfragen der Win32_OperatingSystem-Klasse.

Hiermit werden zwei Auflistungen von Betriebssystemobjekten mit je einem Objekt pro Auflistung zurückgegeben.

4.

Rufen Sie nach dem Eintreffen des Rückgabewertes jedes ExecQuery-Aufrufs die VBScript-Funktion Now auf, und weisen Sie die Sekunden jeder Zeitangabe einer Variablen zu.

Die Funktion Now gibt das Systemdatum und die Systemuhrzeit zum Zeitpunkt der Ausführung zurück.

5.

Weisen Sie die Differenz zwischen den beiden Zeitvariablen einer weiteren Variablen zu, die die Differenz zwischen den Zeiten repräsentiert, zu denen die Abfragen von Win32_OperatingSystem ausgeführt wurden. Der Zeitpunkt, zu dem die jeweilige Abfrage ausgeführt wurde, bestimmt die Zeit, die die LocalDateTime-Eigenschaft von diesem Computer abruft.

6.

Wenn die Differenz zwischen den beiden Zeitvariablen nicht 0 beträgt, weisen Sie diese einer Variablen zu, die die Differenz zwischen den Zeiten repräsentiert, zu denen die Ausführung der beiden Abfragen von Win32_OperatingSystem abgeschlossen war.

Die mit der LocalDateTime-Eigenschaft auf jedem Computer abgerufene Zeit ist von dem exakten Zeitpunkt abhängig, zu dem die Abfrage ausgeführt wird.

7.

Durchlaufen Sie jedes Betriebssystemobjekt in der Auflistung auf dem ersten Computer mit einer For Each-Schleife.

8.

Durchlaufen Sie innerhalb der ersten For Each-Schleife jedes Betriebssystemobjekt in der Auflistung auf dem zweiten Computer mit einer verschachtelten For Each-Schleife.

9.

Rufen Sie mithilfe der LocalDateTime-Eigenschaft die lokale Systemzeit von beiden Computern ab.

10.

Weisen Sie die LocalDateTime-Eigenschaft des ersten (Referenz-)Computers einer Variablen zu, die verwendet wird, um die Zeit auf dem zweiten (Ziel-)Computer im Bedarfsfall einzustellen.

11.

Kürzen Sie die von LocalDateTime zurückgegebenen Datums-/Uhrzeitobjekte auf den Datums-, Stunden- und Minutenwert.

12.

Falls es eine Abweichung zwischen den beiden Now-Werten gibt, verwenden Sie diese zum Anpassen der Referenzzeit, bevor Sie die beiden Zeiten vergleichen.

13.

Vergleichen Sie die beiden angepassten Datums- und Uhrzeitwerte.

14.

Wenn Datums- und Uhrzeitangaben gleich sind, geben Sie eine Meldung aus.

15.

Wenn Datums- und Uhrzeitangaben nicht gleich sind, rufen Sie auf dem Zielcomputer die SetDateTime-Methode von Win32-OperatingSystem auf.

16.

Überprüfen Sie den von der Methode zurückgegebenen Wert, und zeigen Sie eine Erfolgs- oder Fehlermeldung an.

Listing 57 Time-sync.vbs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
On Error Resume Next

 strComputer1 = "."
strComputer2 = "client1"

 Set objWMIService1 = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer1 & "\root\cimv2")
Set objWMIService2 = GetObject("winmgmts:{impersonationLevel=impersonate, " _
 & "(Systemtime)}!\\" & strComputer2 & "\root\cimv2")

 Set colOSes1 = objWMIService1.ExecQuery("SELECT * FROM Win32_OperatingSystem")
strTime1 = Now
Set colOSes2 = objWMIService2.ExecQuery("SELECT * FROM Win32_OperatingSystem")
strTime2 = Now
intSeconds1 = CInt(Left(Right(strTime1, 5), 2))
intSeconds2 = CInt(Left(Right(strTime2, 5), 2))
intDiff = 0
If intSeconds1 <> intSeconds2 Then
  intDiff = intSeconds2 - intSeconds1
End If

 For Each objOS1 in colOSes1
  For Each objOS2 in colOSes2
    dtmRefDateTime = objOS1.LocalDateTime
    intDateTime1 = Left(dtmRefDateTime, 14)
    intDateTime2 = Left(objOS2.LocalDateTime, 14)
    If intDiff <> 0 Then
      intDateTime1 = intDateTime1 + intDiff
    End If
    If intDateTime1 = intDateTime2 Then
      Wscript.Echo "Dates and times on " & strComputer1 & " and " & _
       strComputer2 & "are equal."
    Else
      intSet = objOS2.SetDateTime(dtmRefDateTime)
      If intSet = 0 Then
        Wscript.Echo "Successfully synchronized date and time on " & _
         strComputer2 & " with reference (" & strComputer1 & ")."
      Else
        Wscript.Echo "Unable to set new date and time on " & strComputer2 & "."
      End If
    End If
  Next
Next

Wenn Sie Cscript.exe zur Ausführung dieses Skripts verwenden, wird im Befehlsfenster eine ähnliche Ausgabe wie die folgende angezeigt:

C:\scripts>time-sync.vbs

Successfully synchronized date and time on client1 with reference (.).

Synchronisieren der Uhrzeiten auf mehreren Computern

Die Erweiterung des Zeitvergleichs von zwei auf eine beliebige Anzahl Computer gestaltet sich relativ einfach. Im folgenden Skript wird grundlegend der gleiche Code wie in Time-sync.vbs verwendet. Allerdings wird eine Liste mit Computern aus einem Array abgerufen und dann eine Iteration durchgeführt, bei der die Systemzeiten mit der eines Referenzcomputers verglichen und im Bedarfsfall synchronisiert werden.

Das Skript verwendet einen groben Algorithmus für Zeitvergleich und Synchronisation und zeigt so eine Möglichkeit zum Synchronisieren von Computerzeiten mithilfe von Skripten auf. Wenn die Netzwerklatenz jedoch zu hoch ist, könnten die Systemzeiten auf Computern, die mit dieser Methode synchronisiert wurden, allerdings in inakzeptabler Weise von der Referenzzeit abweichen.

caution.gifVorsicht
Active Directory synchronisiert Datum und Uhrzeit auf Computern, die über Konten im Verzeichnisdienst verfügen, automatisch. Ändern Sie also nicht das Datum oder die Uhrzeit auf einem Computer, der Mitglied einer Active Directory-Domäne ist.

Schritte zur Skripterstellung

In Listing 58 wird die Systemzeit (zeitzonenbereinigt) auf mehreren Computern verglichen, deren Namen oder IP-Adresse aus einem Array abgerufen werden. Wenn die Zeit auf einem der Computer nicht mit der Standardzeit übereinstimmt, wird sie vom Skript zurückgesetzt.

1.

Erstellen Sie eine Variable zur Angabe des Namens des Referenzcomputers.

2.

Erstellen Sie ein Array, das die Namen oder IP-Adressen der Zielcomputer aufnehmen soll.

3.

Verwenden Sie auf dem Referenzcomputer einen GetObject-Aufruf zum Herstellen einer Verbindung zum WMI-Namespace root\cimv2, und legen Sie den Parameter "impersonationLevel" auf "impersonate" fest.

4.

Durchlaufen Sie das Array mit den Zielcomputern mit einer Schleife und führen Sie für jeden Computer die folgenden Aufgaben durch.

5.

Verwenden Sie die Exec-Methode des WshShell-Objekts, um per "Ping" zu prüfen, ob eine Verbindung zum Zielcomputer hergestellt werden kann.

6.

Verwenden Sie auf jedem Computer die ExecQuery-Methode zum Abfragen der Win32_OperatingSystem-Klasse.

Hiermit werden zwei Auflistungen von Betriebssystemobjekten mit je einem Objekt pro Auflistung zurückgegeben.

7.

Rufen Sie nach dem Eintreffen des Rückgabewertes jedes ExecQuery-Aufrufs die VBScript-Funktion Now auf, und weisen Sie die Sekunden jeder Zeitangabe einer Variablen zu.

Die Funktion Now gibt das Systemdatum und die Systemuhrzeit zum Zeitpunkt der Ausführung zurück.

8.

Weisen Sie die Differenz zwischen den beiden Zeitvariablen einer weiteren Variablen zu, die die Differenz zwischen den Zeiten repräsentiert, zu denen die Abfragen von Win32_OperatingSystem ausgeführt wurden. Der Zeitpunkt, zu dem die jeweilige Abfrage ausgeführt wird, bestimmt die Zeit, die von der LocalDateTime-Eigenschaft auf diesem Computer zurückgegeben wird.

9.

Wenn der Unterschied zwischen den beiden Zeitvariablen nicht 0 ist, weisen Sie diesen einer Variablen zu. Diese Variable repräsentiert den Unterschied zwischen den Zeiten, zu denen die Ausführung der beiden Win32_OperatingSystem-Abfragen beendet war.

Die mit der LocalDateTime-Eigenschaft auf jedem Computer abgerufene Zeit ist von dem exakten Zeitpunkt abhängig, zu dem die Abfrage ausgeführt wird.

10.

Durchlaufen Sie jedes Betriebssystemobjekt in der Auflistung auf dem ersten Computer mit einer For Each-Schleife.

11.

Durchlaufen Sie innerhalb der ersten For Each-Schleife jedes Betriebssystemobjekt in der Auflistung auf dem zweiten Computer mit einer verschachtelten For Each-Schleife.

12.

Rufen Sie mithilfe der LocalDateTime-Eigenschaft die lokale Systemzeit von beiden Computern ab.

13.

Weisen Sie die LocalDateTime-Eigenschaft des ersten (Referenz-)Computers einer Variablen zu, die verwendet wird, um die Zeit auf dem zweiten (Ziel-)Computer im Bedarfsfall einzustellen.

14.

Kürzen Sie die von LocalDateTime zurückgegebenen Datums-/Uhrzeitobjekte auf den Datums-, Stunden- und Minutenwert.

15.

Falls es eine Abweichung zwischen den beiden Now-Werten gibt, verwenden Sie diese zum Anpassen der Referenzzeit, bevor Sie die beiden Zeiten vergleichen.

16.

Vergleichen Sie die beiden angepassten Datums- und Uhrzeitwerte.

17.

Wenn Datums- und Uhrzeitangaben gleich sind, geben Sie eine Meldung aus.

18.

Wenn Datums- und Uhrzeitangaben nicht gleich sind, rufen Sie auf dem Zielcomputer die SetDateTime-Methode von Win32-OperatingSystem auf.

19.

Überprüfen Sie den von der Methode zurückgegebenen Wert, und zeigen Sie eine Erfolgs- oder Fehlermeldung an.

Listing 58 Time-sync-multi.vbs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
On Error Resume Next

 strReference = "."
arrTargets = Array("client1", "client2", "192.168.0.1", "192.168.0.2")

 Set objWMIService1 = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strReference & "\root\cimv2")

 For Each strTarget In arrTargets

   WScript.Echo VbCrLf & String(80, "-") & VbCrLf & "Target: " & strTarget _
   & VbCrLf
  Set objShell = CreateObject("WScript.Shell")
  Set objExec = objShell.Exec("ping -n 2 -w 1000 " & strTarget)
  strPingResults = LCase(objExec.StdOut.ReadAll)
  If InStr(strPingResults, "reply from") Then

     Set objWMIService2 = GetObject("winmgmts:{impersonationLevel=" _
     & "impersonate, (Systemtime)}!\\" & strTarget & "\root\cimv2")
    Set colOSes1 = objWMIService1.ExecQuery("SELECT * FROM " & _
     "Win32_OperatingSystem")
    strTime1 = Now
    Set colOSes2 = objWMIService2.ExecQuery("SELECT * FROM " & _
     "Win32_OperatingSystem")
    strTime2 = Now
    intSeconds1 = CInt(Left(Right(strTime1, 5), 2))
    intSeconds2 = CInt(Left(Right(strTime2, 5), 2))
    intDiff = 0
    If intSeconds1 <> intSeconds2 Then
      intDiff = intSeconds2 - intSeconds1
    End If

     For Each objOS1 in colOSes1
      For Each objOS2 in colOSes2
        dtmRefDateTime = objOS1.LocalDateTime
        intDateTime1 = Left(dtmRefDateTime, 14)
        intDateTime2 = Left(objOS2.LocalDateTime, 14)
        If intDiff <> 0 Then
          intDateTime1 = intDateTime1 + intDiff
        End If
        If intDateTime1 = intDateTime2 Then
          Wscript.Echo "Dates and times are equal."
        Else
          intSet = objOS2.SetDateTime(dtmNewDateTime)
          If intSet = 0 Then
            Wscript.Echo "Successfully synchronized date and time on " & _
            strTarget & " with reference (" & strReference & ")."
          Else
            Wscript.Echo "Unable to set new date and time on " & strTarget & _
             "."
          End If
        End If
      Next
    Next

   Else

     WScript.Echo strTarget & " did not respond to ping."

   End If

 Next

Wenn Sie Cscript.exe zur Ausführung dieses Skripts verwenden, wird im Befehlsfenster eine ähnliche Ausgabe wie die folgende angezeigt:

C:\scripts>time-sync-multi.vbs

--------------------------------------------------------------------------------

Target: client1

Successfully synchronized date and time on client1 with reference (.).

--------------------------------------------------------------------------------

Target: client2

Successfully synchronized date and time on client2 with reference (.).

--------------------------------------------------------------------------------

Target: 192.168.0.1

192.168.0.1 did not respond to ping.

--------------------------------------------------------------------------------

Target: 192.168.0.2

192.168.0.2 did not respond to ping.

Ändern von Netzwerkeinstellungen in der Registrierung

TCP/IP-Netzwerkeinstellungen können unter Verwendung der Registrierung abgerufen und geändert werden. Die Registrierung enthält einige Netzwerkeinstellungen, auf die nicht mithilfe von WMI-Klassen, Befehlszeilentools oder über die Windows-Oberfläche zugegriffen werden kann.

Verwenden Sie zum Bearbeiten der Registrierung die Klasse StdRegProv des WMI-Anbieters für die Systemregistrierung. Diese Klasse befindet sich im Namespace \root\default, wohingegen sich alle Win32_-Klassen, die bis dato in diesem Dokument besprochen wurden, im Namespace \root\cimv2 befinden.

caution.gifVorsicht
Durch eine fehlerhafte Bearbeitung der Registrierung kann ernsthafter Schaden am System verursacht werden. Bevor Sie Änderungen an der Registrierung vornehmen, sollten Sie eine Sicherungskopie aller wichtigen Daten auf dem Computer erstellen.

Ändern Sie zur Verwendung dieser Klasse die Zeilen in Skripts, mit denen die Verbindung zu WMI hergestellt wird, wie folgt:

Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
 strComputer & "\root\default:StdRegProv")

Geben Sie im GetObject-Aufruf, mit dem die Bindung zum WMI-Dienst hergestellt (ein Verweis erzeugt) wird, den Namespace \root\default (anstelle des Namespaces \root\cimv2) als Teil des Objektpfades an. Erstellen Sie anschließend direkt eine Instanz der Klasse, indem Sie einen Doppelpunkt und den Namen der StdRegProv-Klasse an das Ende des Objektpfades anhängen.

Die Klasse StdRegProv gibt einen Verweis auf eine einzelne Instanz in Form eines SWbemObject-Objekts zurück, das die gesamte Registrierung repräsentiert (von der es immer nur eine pro Betriebssystem gibt). Hier liegt der Unterschied zur Auflistung von (oftmals) mehreren Instanzen in Form eines SWbemObjectSet-Objekts, wie es von Win32_NetworkAdapterConfiguration und den meisten anderen bis dato verwendeten Klassen zurückgegeben wird. Da es sich hier um ein SWbemObject- und nicht um ein SWbemObjectSet-Objekt handelt, muss nicht ExecQuery aufgerufen und mit einer Auflistung von Instanzen gearbeitet werden. Stattdessen kann wie im nachstehenden Beispiel gezeigt die punktierte Schreibweise zum direkten Aufrufen von Methoden der StdRegProv-Klasse für den Verweis verwendet werden:

objReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strEntryName,strValue

Wenn Sie mit den Objekten SWBemObject und SWBemObjectSet als Teil des Objektmodells der WMI-Skriptingbibliothek noch nicht vertraut sind, schlagen Sie in den folgenden Referenzdokumenten nach:

Unter dem Thema "Die WMI Scripting-Bibliothek " im Kapitel 6 des Windows 2000 Scripting-Handbuches unter /germany/technet/datenbank/articles/600362.mspx#E01M0AA.

Unter dem Thema "Scripting API for WMI" in der WMI-Referenz im WMI SDK unter http://go.microsoft.com/fwlink/?LinkId=29998 (englischsprachig).

Die Klasse StdRegProv weist keine Eigenschaften auf. Tabelle 43 enthält Beschreibungen der Methoden der Klasse StdRegProv.

Tabelle 43 Methoden von "StdRegProv"

MethodeBeschreibung

CheckAccess

Überprüft, ob der Benutzer über die angegebenen Zugriffsrechte verfügt.

CreateKey

Erstellt einen Unterschlüssel.

DeleteKey

Löscht einen Unterschlüssel.

DeleteValue

Löscht einen benannten Wert.

EnumKey

Erstellt eine Auflistung der Unterschlüssel.

EnumValues

Erstellt eine Auflistung der benannten Werte eines Schlüssels.

GetBinaryValue

Ruft den Binärdatenwert eines benannten Wertes ab.

GetDWORDValue

Ruft den DWORD-Datenwert eines benannten Wertes ab.

GetExpandedStringValue

Ruft den Datenwert der erweiterten Zeichenfolge eines benannten Wertes ab.

GetMultiStringValue

Ruft die Datenwerte mehrerer Zeichenfolgen eines benannten Wertes ab.

GetStringValue

Ruft den Datenwert der Zeichenfolge eines benannten Wertes ab.

SetBinaryValue

Legt den Binärdatenwert eines benannten Wertes fest.

SetDWORDValue

Legt den DWORD-Datenwert eines benannten Wertes fest.

SetExpandedStringValue

Legt den Datenwert der erweiterten Zeichenfolge eines benannten Wertes fest.

SetMultiStringValue

Legt die Werte mehrerer Zeichenfolgen eines benannten Wertes fest.

SetStringValue

Legt den Zeichenfolgewert eines benannten Wertes fest.

Alle Methoden in der vorstehenden Tabelle geben eine positive ganze Zahl zurück:

0 bedeutet: erfolgreicher Abschluss.

Zahlen größer als 0 weisen auf einen Fehler hin.

Weitere Informationen über die Klasse StdRegProv und deren Methoden finden Sie unter "StdRegProv" im WMI SDK unter http://go.microsoft.com/fwlink/?LinkId=29999 (englischsprachig).

Die Methoden GetStringValue und GetDWORDValue geben über einen Ausgabeparameter Informationen an das Skript zurück, ein Mechanismus, der in diesem Dokument bis dato noch nicht erwähnt wurde. Zu diesem Zweck übergibt das Skript die ersten drei Parameter an die GetStringValue-Methode, um der Methode mitzuteilen, welcher Eingabe der Wert entnommen werden soll. Diese Informationen werden im letzten Parameter zurückgegeben, in diesem Fall in Form der Zeichenfolgenvariablen strValue. Nachdem die Zeile ausgeführt wurde, enthält die Variable den Wert des Registrierungseintrags "Hostname" an der Position HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters. Die letzte Zeile des Skripts zeigt diesen Wert an.

Die Skripts in diesem Abschnitt rufen Zeichenfolgen- (REG_SZ) und DWORD-Werte (REG_DWORD, eine 32-Bit-Ganzzahl) aus der Registrierung ab und legen diese ebenso fest. Zum Abrufen und Festlegen von Zeichenfolgen- und DWORD-Typen werden verschiedene Methoden verwendet. Die Klasse StdRegProv umfasst darüber hinaus noch weitere Methoden für Mehrfachzeichenfolgen-, erweiterte Zeichenfolgen- und Binärwerte.

Der Eintrag mit der Zeichenfolge (Hostname) lautet:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Hostname

Der Eintrag mit dem DWORD-Wert (DeadGWDetectDefault) lautet:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DeadGWDetectDefault

Tabelle 44 beschreibt die Registrierungsunterschlüssel in Verbindung mit der TCP/IP-Clientvernetzung.

Tabelle 44 Registrierungsunterschlüssel in Verbindung mit der TCP/IP-Clientvernetzung

RegistrierungsunterschlüsselBeschreibung

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
\Services\Tcpip\Parameters

Enthält globale TCP/IP-Konfigurationseinstellungen, die sich auf alle Netzwerkadapter im Computer beziehen.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
\Services\Tcpip\Parameters\Interfaces

Enthält TCP/IP-Konfigurationseinstellungen für jeden spezifischen Adapter (Schnittstelle) in seinen Unterschlüsseln, die mit GUIDs bezeichnet sind.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
\Services\Dhcp\Parameters\Options

Enthält Konfigurationseinstellungen für DHCP-Optionen in seinen Unterschlüsseln.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
\Services\Dnscache\Parameters

Enthält Konfigurationseinstellungen für den lokalen DNS-Cacheauflösungsdienst des DNS-Clients.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
\Services\NetBT\Parameters

Enthält globale Konfigurationseinstellungen für NetBIOS über TCP/IP und WINS, die sich auf alle Netzwerkadapter im Computer beziehen.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
\Services\NetBT\Parameters\Interfaces

Enthält Konfigurationseinstellungen für NetBIOS über TCP/IP und WINS für jeden spezifischen Adapter (Schnittstelle) in seinen Unterschlüsseln, die mit GUIDs bezeichnet sind.

Weitere Informationen über die Verwendung von Skripts zum Konfigurieren der Registrierung sowie detaillierte Informationen über zahlreiche Registrierungseinträge finden Sie in den nachstehenden Referenzdokumenten:

Im Abschnitt "Registry" des Windows 2000 Scripting Guide unter
http://go.microsoft.com/fwlink/?LinkId=30001 (englischsprachig).

Im Artikel "Resource Kit Registry Reference for Windows Server 2003" unter http://go.microsoft.com/fwlink/?LinkId=30003 und in "Windows 2000 Server: Technical Reference to the Registry" unter http://go.microsoft.com/fwlink/?LinkId=31141 (englischsprachig).

Abrufen eines Zeichenfolgenwertes aus der Registrierung mithilfe von WMI

Dieses Skript zeigt, wie eine TCP/IP-Netzwerkeinstellung (Hostname) aus einem Registrierungseintrag abgerufen wird, dessen Wert eine Zeichenfolge (REG_SZ) ist. Zu diesem Zweck verwendet das Skript die GetStringValue-Methode der Klasse StdRegProv des WMI-Anbieters für die Systemregistrierung.

Schritte zur Skripterstellung

1.

Erstellen Sie eine Konstante zur Aufnahme des Hexadezimalwertes für HKEY_LOCAL_MACHINE.

2.

Erstellen Sie eine Variable, und weisen Sie ihr den Namen des Computers zu. Der Name kann entweder aus einem Hostnamen oder einer IP-Adresse bestehen.

3.

Erstellen Sie Variablen für den Pfad des Registrierungsschlüssels und den Namen des Eintrags.

4.

Verwenden Sie einen GetObject-Aufruf, um auf dem angegebenen Computer eine Verbindung zum WMI-Namespace root\default herzustellen, legen Sie den Parameter "impersonationLevel" auf "impersonate" fest, erstellen Sie eine Instanz der Klasse StdRegProv, und weisen Sie diese der Variablen objReg zu.

5.

Rufen Sie die GetStringValue-Methode der Klasse StdRegProv auf, übergeben Sie Parameter für Unterstruktur, Schlüsselpfad und Eintragsname, und weisen Sie den Ausgabeparameter für den Zeichenfolgenwert der Variablen strValue zu.

6.

Zeigen Sie den Eintragsnamen und dessen Zeichenfolgenwert an.

Listing 59 Reg-get-string.vbs

1
2
3
4
5
6
7
8
9
10
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
strKeyPath = "SYSTEM\CurrentControlSet\Services\Tcpip\Parameters"
strEntryName = "Hostname"

 Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
 strComputer & "\root\default:StdRegProv")

 objReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strEntryName,strValue
Wscript.Echo strEntryName & ": " & strValue

Wenn Sie Cscript.exe zur Ausführung dieses Skripts verwenden, wird im Befehlsfenster eine ähnliche Ausgabe wie die folgende angezeigt:

C:\scripts>reg-get-string.vbs

Hostname: client1

Abrufen eines numerischen Wertes aus der Registrierung mithilfe von WMI

Dieses Skript zeigt, wie eine TCP/IP-Netzwerkeinstellung (DeadGWDetectDefault) aus einem Registrierungseintrag abgerufen wird, dessen Wert ein DWORD (REG_DWORD, eine 32-Bit-Ganzzahl) ist. Zu diesem Zweck verwendet das Skript die GetDWORDValue-Methode der Klasse StdRegProv des WMI-Anbieters für die Systemregistrierung.

Schritte zur Skripterstellung

1.

Erstellen Sie eine Konstante zur Aufnahme des Hexadezimalwertes für HKEY_LOCAL_MACHINE.

2.

Erstellen Sie eine Variable, und weisen Sie ihr den Namen des Computers zu. Der Name kann entweder aus einem Hostnamen oder einer IP-Adresse bestehen.

3.

Erstellen Sie Variablen für den Pfad des Registrierungsschlüssels und den Namen des Eintrags.

4.

Verwenden Sie einen GetObject-Aufruf, um auf dem angegebenen Computer eine Verbindung zum WMI-Namespace root\default herzustellen, legen Sie den Parameter "impersonationLevel" auf "impersonate" fest, erstellen Sie eine Instanz der Klasse StdRegProv, und weisen Sie diese der Variablen objReg zu.

5.

Rufen Sie die GetDWORDValue-Methode der Klasse StdRegProv auf, übergeben Sie Parameter für Unterstruktur, Schlüsselpfad und Eintragsname, und weisen Sie den Ausgabeparameter für den DWORD-Wert der Variablen strValue zu.

6.

Zeigen Sie den Eintragsnamen und dessen DWORD-Wert an.

Listing 60 Reg-get-dword.vbs

1
2
3
4
5
6
7
8
9
10
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
strKeyPath = "SYSTEM\CurrentControlSet\Services\Tcpip\Parameters"
strEntryName = "DeadGWDetectDefault"

 Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
 strComputer & "\root\default:StdRegProv")

 objReg.GetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strEntryName,dwValue
Wscript.Echo strEntryName & ": " & dwValue

Wenn Sie Cscript.exe zur Ausführung dieses Skripts verwenden, wird im Befehlsfenster eine ähnliche Ausgabe wie die folgende angezeigt:

C:\scripts>reg-get-dword.vbs

DeadGWDetectDefault: 1

Festlegen eines Zeichenfolgenwertes in der Registrierung mithilfe von WMI

Dieses Skript zeigt, wie eine TCP/IP-Netzwerkeinstellung (Hostname) in einem Registrierungseintrag festgelegt wird, dessen Wert eine Zeichenfolge (REG_SZ) ist. Zu diesem Zweck verwendet das Skript die SetStringValue-Methode der Klasse StdRegProv des WMI-Anbieters für die Systemregistrierung.

Schritte zur Skripterstellung

1.

Erstellen Sie eine Konstante zur Aufnahme des Hexadezimalwertes für HKEY_LOCAL_MACHINE.

2.

Erstellen Sie eine Variable, und weisen Sie ihr den Namen des Computers zu. Der Name kann entweder aus einem Hostnamen oder einer IP-Adresse bestehen.

3.

Erstellen Sie Variablen für den Pfad des Registrierungsschlüssels und den Namen des Eintrags.

4.

Verwenden Sie einen GetObject-Aufruf, um auf dem angegebenen Computer eine Verbindung zum WMI-Namespace root\default herzustellen, legen Sie den Parameter "impersonationLevel" auf "impersonate" fest, erstellen Sie eine Instanz der Klasse StdRegProv, und weisen Sie diese der Variablen objReg zu.

5.

Rufen Sie die SetStringValue-Methode der Klasse StdRegProv auf, und übergeben Sie Parameter für Unterstruktur, Schlüsselpfad, Eintragsname und Zeichenfolgenwert.

6.

Rufen Sie die GetStringValue-Methode der Klasse StdRegProv auf, übergeben Sie Parameter für Unterstruktur, Schlüsselpfad und Eintragsname, und weisen Sie den Ausgabeparameter für den Zeichenfolgenwert der Variablen strValue zu.

7.

Zeigen Sie den Eintragsnamen und dessen Zeichenfolgenwert an.

Listing 61 Reg-set-string.vbs

1
2
3
4
5
6
7
8
9
10
11
12
13
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
strKeyPath = "SYSTEM\CurrentControlSet\Services\Tcpip\Parameters"
strEntryName = "Domain"
strValue = "fabrikam.com"

 Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
 strComputer & "\root\default:StdRegProv")

 objReg.SetStringValue HKEY_LOCAL_MACHINE, strKeyPath, strEntryName, strValue

 objReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strEntryName,strValue
Wscript.Echo strEntryName & ": " & strValue

Wenn Sie Cscript.exe zur Ausführung dieses Skripts verwenden, wird im Befehlsfenster eine ähnliche Ausgabe wie die folgende angezeigt:

C:\scripts>reg-set-string.vbs

Domain: fabrikam.com

Festlegen eines numerischen Wertes in der Registrierung mithilfe von WMI

Dieses Skript zeigt, wie eine TCP/IP-Netzwerkeinstellung (DeadGWDetectDefault) in einem Registrierungseintrag festgelegt wird, dessen Wert ein DWORD (REG_DWORD, eine 32-Bit-Ganzzahl) ist. Zu diesem Zweck verwendet das Skript die SetDWORDValue-Methode der Klasse StdRegProv des WMI-Anbieters für die Systemregistrierung.

Schritte zur Skripterstellung

1.

Erstellen Sie eine Konstante zur Aufnahme des Hexadezimalwertes für HKEY_LOCAL_MACHINE.

2.

Erstellen Sie eine Variable, und weisen Sie ihr den Namen des Computers zu. Der Name kann entweder aus einem Hostnamen oder einer IP-Adresse bestehen.

3.

Erstellen Sie Variablen für den Pfad des Registrierungsschlüssels und den Namen des Eintrags.

4.

Verwenden Sie einen GetObject-Aufruf, um auf dem angegebenen Computer eine Verbindung zum WMI-Namespace root\default herzustellen, legen Sie den Parameter "impersonationLevel" auf "impersonate" fest, erstellen Sie eine Instanz der Klasse StdRegProv, und weisen Sie diese der Variablen objReg zu.

5.

Rufen Sie die SetDWORDValue-Methode der Klasse StdRegProv auf, und übergeben Sie Parameter für Unterstruktur, Schlüsselpfad, Eintragsname und DWORD-Wert.

6.

Rufen Sie die GetDWORDValue-Methode der Klasse StdRegProv auf, übergeben Sie Parameter für Unterstruktur, Schlüsselpfad und Eintragsname, und weisen Sie den Ausgabeparameter für den DWORD-Wert der Variablen dwValue zu.

7.

Zeigen Sie den Eintragsnamen und dessen DWORD-Wert an.

Listing 62 Reg-set-dword.vbs

1
2
3
4
5
6
7
8
9
10
11
12
13
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
strKeyPath = "SYSTEM\CurrentControlSet\Services\Tcpip\Parameters"
strEntryName = "DeadGWDetectDefault"
dwValue = 1

 Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
 strComputer & "\root\default:StdRegProv")

 objReg.SetDWORDValue HKEY_LOCAL_MACHINE, strKeyPath, strEntryName, dwValue

 objReg.GetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strEntryName,dwValue
Wscript.Echo strEntryName & ": " & dwValue

Wenn Sie Cscript.exe zur Ausführung dieses Skripts verwenden, wird im Befehlsfenster eine ähnliche Ausgabe wie die folgende angezeigt:

C:\scripts>reg-set-dword.vbs

DeadGWDetectDefault: 1

Tools für die Netzwerkverwaltung mit fortgeschrittenen Skriptingtechniken

Das Windows-Betriebssystem stellt Tools und Registrierungsschlüssel für die Durchführung fortgeschrittener Skriptingverfahren bereit. Tabelle 45 enthält eine Liste der Befehlszeilentools, die in Verbindung mit den fortgeschrittenen Verfahren der Skripterstellung zur Verwaltung des Netzwerkes eingesetzt werden können.

Tabelle 45 Tools und Verfahren für die fortgeschrittene Netzwerkverwaltung

TechnologieToolRessource

Befehlszeilentools

Ping.exe

Windows-Betriebssysteme1

Befehlszeilentools

Remote.exe

Windows Server 2003-Supporttools

Befehlszeilentools

Remote Command Service
(Rcmd.exe und Rcmdsvc.exe)

Windows 2000 Resource Kit

Befehlszeilentools

Remote Console

Windows 2000 Resource Kit

Befehlszeilentools

Rsh.exe und Rshsvc.exe:
TCP/IP Remote Shell Service

Windows 2000 Resource Kit

Befehlszeilentools

Telnet.exe

Windows-Betriebssysteme

Befehlszeilentools

Timezone.exe:
Tool zur Aktualisierung der Sommerzeit

Windows 2000 Resource Kit

Befehlszeilentools

Tzedit.exe: Zeitzoneneditor

Windows 2000 Resource Kit (GUI-Tool)

Befehlszeilentools

Wsremote.exe

Windows XP-Supporttools

WSH

WshController

 

WMI

StdRegProv

 

WMI

SWbemDateTime

Nur Windows XP und Windows Server 2003

WMI

Win32_ComputerSystem

 

WMI

Win32_CurrentTime

Nur Windows XP und Windows Server 2003

WMI

Win32_LocalTime

Nur Windows XP und Windows Server 2003

WMI

Win32_NetworkAdapterConfiguration

 

WMI

Win32_NetworkAdapter

 

WMI

Win32_OperatingSystem

 

WMI

Win32_PingStatus

Nur Windows XP und Windows Server 2003

WMI

Win32_TimeZone

 

WMI

Win32_UTCTime

Nur Windows XP und Windows Server 2003

ADSI

Keines

 

1Windows 2000, Windows XP und Windows Server 2003. Kann auch in anderen Windows-Versionen vorhanden sein.

Tabelle 46 enthält eine Liste der Registrierungsschlüssel zum Verwalten des Netzwerkes bei Verwendung von fortgeschrittenen Verfahren zur Skripterstellung.

caution.gifVorsicht
Durch eine fehlerhafte Bearbeitung der Registrierung kann ernsthafter Schaden am System verursacht werden. Bevor Sie Änderungen an der Registrierung vornehmen, sollten Sie eine Sicherungskopie aller wichtigen Daten auf dem Computer erstellen.

Tabelle 46 Registrierungsunterschlüssel für das Verwalten von Netzwerken mit fortgeschritten Skriptingtechniken

Registrierungsunterschlüssel

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dhcp\Parameters\Options

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\Interfaces


**
**