Automatisieren von TCP/IP-Netzwerken auf Clients

Teil 3: Skripterstellung für die Verwaltung von Remotenetzwerken

Veröffentlicht: 19. Jul 2004

In diesem Abschnitt wird veranschaulicht, wie Skripts zum Durchführen von Aufgaben auf Remotecomputern geschrieben werden. Außerdem werden geeignete Vorgehensweisen bei der Skripterstellung hervorgehoben, die bei der Remoteausführung von Skripts zu befolgen sind.

Der Nutzen der Skripterstellung mit VBScript, WSH und WMI wird erst richtig deutlich, wenn Sie versuchen, Skripts über das Netzwerk auf mehreren Computern auszuführen. Die einbezogenen Verfahren sind nicht besonders schwierig, da der Remotebetrieb ein spezifischer Bestandteil von WMI ist. Sie können alle im vorherigen Abschnitt, "Skripterstellung für grundlegende TCP/IP-Netzwerke auf Clients", beschriebenen Verfahren auf einem oder mehreren Computern anwenden, indem Sie ein paar relativ einfache Änderungen vornehmen.

Weitere Informationen zu diesen und verwandten Verfahren finden Sie in "Tales from the Script - November 2002: Running WMI Scripts Against Multiple Computers" unter http://go.microsoft.com/fwlink/?LinkId=24786 (nur auf Englisch verfügbar).

note.gif Hinweis
Das Objekt WshController des WSH bietet eine weitere Möglichkeit, um Skripts für Remotecomputer auszuführen. Das WshController-Objekt ist hier jedoch nicht einbezogen, da WMI einfachere und leistungsstärkere Möglichkeiten bietet, um die in diesem Dokument beschriebenen Skripterstellungsaufgaben zu erreichen.

In diesem Abschnitt werden Informationen zum Verwalten von Remotecomputern bereitgestellt, einschließlich der Schritte zur Skripterstellung und Beispielskripts für diese Themen:

Herstellen einer Verbindung zu einem Remotecomputer und Abrufen grundlegender Einstellungen.

Herstellen einer Verbindung zu einer Gruppe von Computern in einem Netzwerk.

Aufzeichnen der von den Netzwerkcomputern erfassten Daten.

Auf dieser Seite
Abrufen grundlegender Einstellungen eines RemotecomputersAbrufen grundlegender Einstellungen eines Remotecomputers
Herstellen einer Verbindung zu Gruppen von Computern in einem NetzwerkHerstellen einer Verbindung zu Gruppen von Computern in einem Netzwerk
Aufzeichnen von Daten von mehreren ComputernAufzeichnen von Daten von mehreren Computern
Tools zur Skripterstellung für die Verwaltung von RemotenetzwerkenTools zur Skripterstellung für die Verwaltung von Remotenetzwerken

Abrufen grundlegender Einstellungen eines Remotecomputers

Die meisten Systemadministratoren müssen in ihren Netzwerken Remotecomputer verwalten und können dazu sehr hilfreich Skripts einsetzen. Im vorherigen Abschnitt wurden Skripterstellungsverfahren zum Abrufen und Anzeigen von Einstellungen auf einem lokalen Computer beschrieben. In diesem Abschnitt wird gezeigt, wie diese Skripts für die Verwendung mit Remotecomputern geändert werden. Indem Sie die Verfahren einsetzen, die unter den nächsten beiden Themen erläutert werden, können Sie mit WMI eine Verbindung zu einem Remotecomputer herstellen, um die Einstellungen für diesen Computer abzurufen und anzuzeigen.

Verwenden von WMI zum Herstellen einer Verbindung zu einem Remotecomputer

Weisen Sie den Namen des Remotecomputers einfach zu der im WMI-Objektpfad verwendeten Hostvariable zu, um WMI zum Herstellen einer Verbindung zu einem Remotecomputer zu verwenden. WMI behandelt die Details beim Herstellen der Verbindung zu Remotecomputern.

strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer)

Im vorhergehenden Beispiel hat WMI die Verbindung zu einem lokalen Computer hergestellt. Der Punkt (.) repräsentiert den lokalen Computer in WMI-Objektpfaden. Die Verbindung wird zum Standard-WMI-Namespace – normalerweise root\cimv2 – mithilfe des Parameters "impersonationLevel" und dem Wert "impersonate" aufgebaut.

Ersetzen Sie "." durch den Namen eines Remotecomputers, damit WMI die Verbindung zu diesem Remotecomputer herstellt.

strComputer = "client1" Set objWMIService = GetObject("winmgmts:\\" & strComputer)

Wie bei lokalen Computern müssen Sie auch auf dem Remotecomputer über entsprechende Administratorrechte verfügen, um die in diesem Skript enthaltenen Schritte durchführen zu können.

Weitere Informationen zum Herstellen der Verbindung zu WMI finden Sie unter "Connecting to WMI Using the WMI Moniker" im Kapitel "WMI Scripting Primer" des Windows 2000 Scripting Guide unter http://go.microsoft.com/fwlink/?LinkId=29993 (nur auf Englisch verfügbar).

Abrufen der IP-Adressen und Subnetzmasken eines Remotecomputers

In dem folgenden Skript wird gezeigt, wie eine Reihe von TCP/IP-Clienteinstellungen von einem Remotecomputer abgerufen werden. Der Code ist beinahe mit dem Code identisch, der zum Herstellen der Verbindung zu WMI auf einem lokalen Computer verwendet wird. Der einzige Unterschied ist, dass der Variablen strComputer der Name eines verfügbaren Remotecomputers zugewiesen wird.

Schritte zur Skripterstellung

In Listing 13 werden die Eigenschaften IPAddress und IPSubnet (beides Arrays) für jede Netzwerkadapterkonfiguration auf einem Remotecomputer abgerufen.

1.

Aufrufen von "On Error Resume Next", dem Mechanismus von VBScript zur Fehlerbehandlung.

2.

Erstellen einer Variablen zur Angabe des Remotecomputernamens. Dieser Code ist vergleichbar mit dem, der in den meisten lokal ausgeführten Skripts in diesem Dokument verwendet wird. Das Skript weist jedoch der Variable strComputer die Zeichenfolge "client1" (der Name eines Remotecomputers) statt "." (der lokalen Computer) zu .

Wenn Sie dieses Skript ausführen möchten, ersetzen Sie "client1" in Zeile 3 durch den Namen eines verfügbaren Remotecomputers, auf dem Sie über Administratorrechte verfügen.

3.

Verwenden Sie einen GetObject-Aufruf zum Herstellen einer Verbindung zum WMI-Namespace root\cimv2, und legen Sie den Parameter "impersonationLevel" auf "impersonate" fest. Danach strComputer in den Objektpfad eingefügt, damit das Skript die Verbindung zum Namespace \root\cimv2 auf dem Remotecomputer herstellt. Der Parameter "impersonationlevel" und der Namespace werden explizit angegeben.

4.

Verwenden der Methode ExecQuery zum Abfragen der Klasse Win32_NetworkAdapterConfiguration, wobei die WQL-Abfrage nach "WHERE IPEnabled = True" gefiltert wird.

Die zurückgegebene Auflistung besteht aus allen Netzwerkadapterkonfigurationen auf dem Computer, für den IP aktiviert ist.

5.

Abrufen von Indexnummer, Beschreibung, IP-Adressen und Subnetzmasken für jede Netzwerkadapterkonfiguration in der Auflistung.

Listing 13 Getip.vbs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
On Error Resume Next

 strComputer = "client1"
Set objWMIService = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colNicConfigs = objWMIService.ExecQuery _
 ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")

 WScript.Echo VbCrLf & "Computer Name: " & strComputer
WScript.Echo " IP Addresses & Subnet Masks"

 For Each objNicConfig In colNicConfigs
  WScript.Echo VbCrLf & "  Network Adapter " & objNicConfig.Index
  WScript.Echo "    " & objNicConfig.Description & VbCrLf 
  WScript.Echo "    IP Address(es):"
  For Each strIPAddress In objNicConfig.IPAddress
    WScript.Echo "        " & strIPAddress
  Next
  WScript.Echo "    Subnet Mask(s):"
  For Each strIPSubnet In objNicConfig.IPSubnet
    WScript.Echo "        " & strIPSubnet
  Next
Next

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

C:\scripts>getip.vbs

Computer Name: client1

IP Addresses & Subnet Masks

Network Adapter 1

3Com 3C920 Integrated Fast Ethernet Controller (3C905C-TX Compatible) - Packet Scheduler Miniport

IP Address(es):

192.168.0.11

Subnet Mask(s):

255.255.255.0

Herstellen einer Verbindung zu Gruppen von Computern in einem Netzwerk

Wenn Sie WMI-basierte Skripts ausführen, um Netzwerkaufgaben für Computergruppen durchzuführen, können Sie dies normalerweise effizienter und flexibler erreichen, als mit den meisten Windows-Schnittstellen oder Befehlszeilentools.

Beim Herstellen einer Verbindung zu Remotecomputern gilt es immer bestimmte Vorsichtsmaßnahmen in Ihren Skripts zu treffen. Diese Vorsichtsmaßnahmen können Ihnen dabei helfen, dass Sie keine Zeit damit verschwenden, ein Skript auf Computern auszuführen, die nicht erreichbar oder auf denen WMI nicht verfügbar ist. WMI ist auf Betriebssystemen vor Windows 2000 und Windows Millenium Edition nicht standardmäßig installiert.

Wenn Sie die Verbindung zu Remotecomputern herstellen, ist es empfehlenswert zu prüfen, ob alle Computer über das Netzwerk erreichbar sind. Das Befehlszeilentool Ping.exe stellt dazu eine traditionelle Möglichkeit bereit. Unter Windows XP und nachfolgenden Versionen von Windows bietet WMI die neue Klasse Win32_PingStatus, die das Verhalten von Ping.exe weitestgehend kopiert.

Da die Wahrscheinlichkeit größer ist, dass beim Ausführen eines Skripts auf Remotecomputern Probleme auftreten, ist es empfehlenswert, den VBScript-Mechanismus zur Fehlerbehandlung zu verwenden, der "On Error Resume Next" genannt wird. Auf diese Weise bringen die Netzwerk- oder Remoteprobleme das Skript nicht zum Absturz. Wenn das Skript auf einem Computer einen Fehler entdeckt, kann es auf diese Weise die Ausführung auf anderen Computern fortsetzen.

Sie können den Fehler auch erfassen und anschließend anzeigen oder protokollieren. Weitere Informationen zur Fehlerbehandlung finden Sie im Abschnitt "Fehlerbehandlung" in Kapitel 2 des Windows 2000 Scripting-Handbuchs unter /germany/technet/datenbank/articles/600358.mspx#E0BW0AA.

In diesem Abschnitt werden die Schritte zur Skripterstellung und Beispielskripts für diese Themen bereitgestellt:

Senden von Ping-Anforderungen an Netzwerkhosts vor dem Versuch, darauf Skripts auszuführen.

Behandeln von Fehlern mit VBScript.

Verwenden eines Arrays zum Eingeben einer Liste von Netzwerkhosts.

Abrufen der IP-Adressen und Subnetzmasken einer Gruppe von Remotecomputern.

Verwenden einer Textdatei mit einer Hostliste als Eingabe.

Herstellen der Verbindung zu einem Subnetz oder einem Bereich von IP-Adressen.

Andere Möglichkeiten zum Bereitstellen von Eingaben für Skripts.

Senden von Ping-Anforderungen an Netzwerkhosts vor dem Versuch, darauf Skripts auszuführen

Es wird empfohlen, zu jedem Remotehost eine Verbindung herzustellen, um sicherzustellen, dass dieser erreichbar ist, bevor versucht wird, darauf Aufgaben auszuführen. Wenn alle zu pingenden Computer Windows XP oder Windows Server 2003 ausführen, können Sie die neue WMI-Klasse Win32_PingStatus verwenden. Win32_PingStatus gibt ein Objekt mit 24 Eigenschaften zurück, die ausführliche Details zu den Ping-Paketen bereitstellen, die von der Klasse gesendet werden.

Wenn auch ältere Betriebssysteme einbezogen sind, stellt das TCP/IP-Befehlszeilentool Ping.exe die Standardlösung zum Prüfen der Verbindung dar. Sie können Ping und Befehlszeilenparameter mit der Methode Exec() des Objekts WshShell ausführen. Ping sendet eine konfigurierbare Anzahl von ICMP-Paketen an den Hostnamen oder die IP-Adresse und wartet dann auf Antworten. Das Skript kann die über die Standardeingabe empfangenen Antworten hinsichtlich der Zeichenfolge "Antwort von" analysieren, die nur vorkommt, wenn der Computer auf den Ping-Befehl geantwortet hat.

note.gif Hinweis
Der Ping-Befehl wird nur erfolgreich durchgeführt, wenn die Routinginfrastruktur die Ping-Nachrichten weiterleitet und das Ziel keine Firewall verwendet, die den Empfang von Ping-Nachrichten verhindert.

Senden von Ping-Signalen an einzelne Netzwerkhosts durch Ausführen von "Ping.exe" über ein Skript

Wenn Sie ermitteln möchten, ob ein Computer im Netzwerk erreichbar ist, bevor Sie versuchen, die Verbindung zu WMI herzustellen und eine Aufgabe darauf durchzuführen, kann Ping.exe über ein Skript mithilfe von WSH aufgerufen werden. VBScript bietet Funktionen zur Zeichenfolgenbehandlung, mit deren Hilfe das Skript den über die Standardeingabe eingehenden StdOut-Zeichenstream analysieren kann, um zu sehen, ob der Remotecomputer entsprechend geantwortet und reagiert hat.

Schritte zur Skripterstellung

Listing 14 veranschaulicht, wie Ping.exe mit der WshShell-Methode Exec() ausgeführt wird.

1.

Aufrufen von "On Error Resume Next", dem Mechanismus von VBScript zur Fehlerbehandlung.

2.

Erstellen einer Variablen zur Angabe des Remotecomputernamens.

Dieses Skript verwendet fast denselben Code, der in den meisten Skripts in diesem Dokument verwendet wird. Hier wird allerdings "client1" (der Name des Remotecomputers) anstelle von "." (der WMI-Name für den lokalen Computer) zu strComputer zugewiesen. WMI akzeptiert auch IP-Adressen als Kennung für den Remotecomputer. Wenn Sie dieses Skript ausführen möchten, ersetzen Sie "client1" durch den Namen oder die IP-Adresse eines verfügbaren Remotecomputers, für den Sie über Administratorrechte verfügen.

3.

Erstellen eines WshShell-Objekts und zuordnen zu objShell.

4.

Ausführen der Methode Exec von objShell und dieser Parameter übergeben, die zum Senden zweier Echo-Anforderungen mit einer Wartezeit von 1000 Millisekunden (eine Sekunde) für jede Antwort an den Zielcomputer aufrufen. Zuordnen des sich ergebenden Objekts an objExec.

5.

Lesen des gesamten vom Objekt objExec erzeugten StdOut-Streams und diesen in Kleinbuchstaben konvertieren, um Probleme mit der Groß-/Kleinschreibung zu vermeiden sowie anschließendes Zuordnen des Streams zur Variablen strPingResults.

6.

Aufrufen der VBScript-Funktion InStr, die nach dem ersten Parameter sucht, der Zeichenfolge aus Ergebnissen des Ping-Befehls für sämtliche Vorkommen des zweiten Parameters, der Zeichenfolge "Antwort von". Wenn die Zeichenfolge gefunden wurde, ist der Ping-Befehl erfolgreich gewesen und der Zielcomputer hat geantwortet.

InStr gibt die Zeichenposition in der ersten Zeichenfolge zurück, in der die zweite Zeichenfolge gefunden wurde. Wenn diese nicht gefunden wird, gibt InStr den Wert "0" zurück.

Die If...Then-Anweisung interpretiert alle Zahlen mit Ausnahme von Null für ihre Bedingung als "True" (wahr), woraufhin das Skript die Codezeilen ausführt, die bis zu Else folgen (7–14). Da der Zielcomputer geantwortet hat, kann das Skript auf dem Zielcomputer die Verbindung zu WMI herstellen und dessen Namen anzeigen. Dies ist nur ein einfaches Beispiel: Nachdem das Skript die Verbindung zum Zielcomputer hergestellt hat, kann es beliebige Folgen von WMI- und ADSI-Aufgaben durchführen.

7.

Wenn InStr die Zeichenfolge "Antwort von" nicht findet und "0" zurückgibt, dann hat der Remotecomputer nicht auf den Ping-Befehl geantwortet. In diesem Fall überträgt die If...Then-Anweisung die Skriptausführung an die Else-Anweisung in Zeile 16 und das Skript zeigt eine Meldung an, dass der Zielcomputer nicht auf den Ping-Befehl geantwortet hat. Das Skript versucht dann nicht, die Verbindung zu WMI herzustellen oder die Aufgabe auf dem Remotecomputer auszuführen, da dies zu einem Fehler führen würde.

Listing 15 Ping.vbs

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

 strTarget = "192.168.0.1" 'IP address or hostname
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
  WScript.Echo strTarget & " responded to ping."
  Set objWMIService = GetObject("winmgmts:" _
   & "{impersonationLevel=impersonate}!\\" & strTarget & "\root\cimv2")
  Set colCompSystems = objWMIService.ExecQuery("SELECT * FROM " & _
   "Win32_ComputerSystem")
  For Each objCompSystem In colCompSystems
    WScript.Echo "Host Name: " & LCase(objCompSystem.Name)
  Next
Else
  WScript.Echo strTarget & " did not respond to ping."
End If

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

C:\scripts>ping.vbs

192.168.0.1 responded to ping.

Host Name: server1

Senden von Ping-Anforderungen an mehrere Netzwerkhosts durch Ausführen von "Ping.exe" über ein Skript

Mit einigen zusätzlichen Codezeilen kann ein Skript nacheinander Ping-Anforderungen an mehrere Computer senden, bevor versucht wird, auf diesen eine Aufgabe durchzuführen. Die Computernamen werden in Form eines Arrays an das Skript übergeben, was eine einfache Methode zum Erreichen dieses Ziels darstellt. Die Computernamen können jedoch auch aus einer Textdatei, aus einem Tabellenblatt oder aus einer Datenbank abgerufen bzw. aus einer Active Directory-Organisationseinheit heraus aufgelistet werden, indem nur etwas zusätzlicher Code hinzugefügt wird.

Schritte zur Skripterstellung

Listing 15 veranschaulicht, wie Ping.exe mit der WshShell-Methode Exec() für mehrere Computer ausgeführt wird.

1.

Aufrufen von "On Error Resume Next", dem Mechanismus von VBScript zur Fehlerbehandlung.

2.

Erstellen eines Arrays mit der VBScript-Funktion Array und Hinzufügen der Namen oder IP-Adressen von verfügbaren Computern im Netzwerk als Elemente. Der WMI-Dienst akzeptiert sowohl Hostnamen als auch IP-Adressen im Objektpfad von Zeile 12. Ordnen Sie das Array der Variable arrTargets zu.

3.

Verwenden einer For Each-Schleife für die Iteration durch die einzelnen Elemente im Array. Ausführen derselben Schritte für die einzelnen Computer, die im vorherigen Beispiel, Ping.vbs, auf dem Remotecomputer durchgeführt wurden.

Listing 15 Ping-multi.vbs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
On Error Resume Next

 arrTargets = Array("192.168.0.1", "192.168.0.11", "192.168.0.12", _
 "192.168.0.13")

 For Each strTarget In arrTargets
  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
    WScript.Echo VbCrLf & strTarget & " responded to ping."
    Set objWMIService = GetObject("winmgmts:" _
     & "{impersonationLevel=impersonate}!\\" & strTarget & "\root\cimv2")
    Set colCompSystems = objWMIService.ExecQuery("SELECT * FROM " & _
     "Win32_ComputerSystem")
    For Each objCompSystem In colCompSystems
      WScript.Echo "Host Name: " & LCase(objCompSystem.Name)
    Next
  Else
    WScript.Echo VbCrLf & 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>ping-multi.vbs

192.168.0.1 responded to ping.

Host Name: server1

192.168.0.11 responded to ping.

Host Name: client1

192.168.0.12 responded to ping.

Host Name: client2

192.168.0.13 did not respond to ping.

Senden von Ping-Anforderungen an einzelne Netzwerkhosts mithilfe der Klasse "Win32_PingStatus"

Unter Windows XP und Windows Server 2003 kann die neue WMI-Klasse Win32_PingStatus mehr Details des Ping-Vorgangs zurückgeben, als durch Ausführen von Ping.exe. Sie können diese WMI-Klasse jedoch nur in einem Netzwerk verwenden, das nur diese beiden Betriebssysteme ausführt.

In einer solchen Situation kann dieses Skript als Vorlage zum Testen der Verbindung eines einzelnen Remotecomputers mithilfe eines Ping-Befehls dienen, bevor versucht wird, die Verbindung zu WMI herzustellen, um auf dem Computer Aufgaben auszuführen.

Die Eigenschaft StatusCode von Win32_PingStatus gibt die in Tabelle 6 gezeigten Statuscodes zurück. Ihr Datentyp ist uint32 und sie sind schreibgeschützt. Damit sich dieses Skript als benutzerfreundlicher erweist, können Sie die Statuscodes in eine beschreibende Zeichenfolge umwandeln, die in Tabelle 6 angezeigt wird.

Tabelle 6 Statuscodes von "Win32_Pingstatus"

WertBeschreibung

0

Erfolg

11001

Puffer zu klein

11002

Zielnetzwerk nicht erreichbar

11003

Zielhost nicht erreichbar

11004

Zielprotokoll nicht erreichbar

11005

Zielport nicht erreichbar

11006

Keine Ressourcen

11007

Unzulässige Option

11008

Hardwarefehler

11009

Zu großes Paket

11010

Anforderungszeitüberschreitung

11011

Unzulässige Anforderung

11012

Unzulässige Route

11013

TTL-Übertragungsüberschreitung

11014

Reassemblierung der abgelaufenen Gültigkeitsdauer

11015

Unzulässiger Parameter

11016

Quelldrosselung

11017

Zu große Option

11018

Unzulässiges Ziel

11032

IPSEC-Aushandlung

11050

Allgemeiner Fehler

Schritte zur Skripterstellung

Listing 16 veranschaulicht, wie die Verbindung eines Remotecomputers mithilfe der Klasse Win32_PingStatus getestet wird und die Informationen zu den Pingergebnissen angezeigt werden, die die Eigenschaften dieser Klasse zurückgeben können.

1.

Aufrufen von "On Error Resume Next", dem Mechanismus von VBScript zur Fehlerbehandlung.

2.

Erstellen einer Variablen mit dem Namen Computers, der das Skript ausführt.

3.

Erstellen einer Variablen zum Angeben des Namens des Zielcomputers, an den das Pingsignal gesendet wird.

4.

Herstellen der Verbindung zum WMI-Dienst auf dem Computer, auf dem das Skript ausgeführt wird.

Dieses Beispiel führt das Skript auf dem lokalen Computer (".") aus und richtet sich an die lokale Loopbackadresse ("127.0.0.1"), aber Sie können das Skript auch auf einem Remotecomputer ausführen und das Pingsignal an einen anderen Remotecomputer senden.

5.

Aufrufen der Methode ExecQuery des WMI-Objekts, wobei dieser eine WQL-Abfrage übergeben wird, die alle Eigenschaften (*) der Instanz von Win32_PingStatus anfordert, deren Adresse der des Zielcomputers entspricht. Zuweisen der zurückgegebenen Auflistung von Instanzen (in diesem Beispiel nur eine Instanz als Ergebnis) an die Variable colPings.

Die Arbeitsweise von Win32_PingStatus ist für WMI eher unüblich, da keine Methode aufgerufen wird, um damit Aktionen durchzuführen. Stattdessen wird die Klasse einfach abgefragt, wobei die Instanz mithilfe von WHERE gefiltert wird, bei der der Wert der Adresse, der eine der Schlüsseleigenschaften darstellt, den Namen oder IP-Adresse des Zielcomputers enthält. Sie können auch verschiedene andere Schlüsseleigenschaften filtern, um die Pingoperation zu konfigurieren. Durch Ausführen einer solchen Abfrage leitet das Skript den Pingvorgang ein.

6.

Wenn beim Abfragen der Klasse Win32_PingStatus kein Fehler auftritt, wird eine Iteration durch die Auflistung der Pingobjekte durchgeführt (es ist gemäß der Art der Abfrage nur eine vorhanden).

7.

Wenn bei der Iteration durch die Auflistung der Pingobjekte kein Fehler auftritt, wird der vom Pingobjekt zurückgegebene Statuscode geprüft.

8.

Ist der Statuscode "0" und weist somit darauf hin, dass das Ziel auf das Pingsignal geantwortet hat, werden verschiedene der vom Pingobjekt zurückgegebenen Eigenschaften angezeigt.

9.

Wenn ein Fehler auftritt, entweder beim Abfragen der Klasse Win32_PingStatus oder bei der Iteration durch die Auflistung der Pingobjekte, wird der Statuscode gelöscht und die Beschreibung des Statuscode angezeigt.

Listing 16 Pingstatus.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
On Error Resume Next

 strComputer = "."
strTarget = " client1" 'IP address or hostname
Set objWMIService = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPings = objWMIService.ExecQuery _
 ("Select * From Win32_PingStatus where Address = '" & strTarget & "'")
If Err = 0 Then
  Err.Clear
  For Each objPing in colPings
    If Err = 0 Then
      Err.Clear
      If objPing.StatusCode = 0 Then
        Wscript.Echo strTarget & " responded to ping."
        Wscript.Echo "Responding Address: " & objPing.ProtocolAddress
        Wscript.Echo "Responding Name: " & objPing.ProtocolAddressResolved
        Wscript.Echo "Bytes Sent: " & objPing.BufferSize
        Wscript.Echo "Time: " & objPing.ResponseTime & " ms"
        Wscript.Echo "TTL: " & objPing.ResponseTimeToLive & " seconds"
      Else
        WScript.Echo strTarget & " did not respond to ping."
        WScript.Echo "Status Code: " & objPing.StatusCode
      End If
    Else
      Err.Clear
      WScript.Echo "Unable to call Win32_PingStatus on " & strComputer & "."
    End If
  Next
Else
  Err.Clear
  WScript.Echo "Unable to call Win32_PingStatus on " & strComputer & "."
End If

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

C:\scripts>pingstatus.vbs

client1 responded to ping.

Responding Address: 192.168.0.11

Responding Name:

Bytes Sent: 32

Time: 0 ms

TTL: 128 seconds

Senden von Ping-Anforderungen an mehrere Netzwerkhosts mithilfe der Klasse "Win32_PingStatus"

Dieses Skript verwendet die Klasse Win32_PingStatus, um die Ping-Anforderung an eine Liste von Computern zu senden, die in einem Array angegeben sind. Wenn der Host, auf dem Sie das Skript ausführen, ein älteres Betriebssystem als Windows XP ausführt, erfasst das Skript den Fehler und kehrt zur WSH-Methode Exec für das Senden von Ping-Anforderungen zurück.

Schritte zur Skripterstellung

Listing 17 veranschaulicht, wie die Klasse Win32_PingStatus zum Testen von Verbindungen zu mehreren Computern verwendet wird.

1.

Aufrufen von "On Error Resume Next", dem Mechanismus von VBScript zur Fehlerbehandlung.

2.

Erstellen eines Arrays aus Zeichenfolgen, um die Namen der Zielcomputer anzugeben, an die die Ping-Anforderung gesendet werden soll. Jedes Element muss aus dem Namen oder der IP-Adresse eines verfügbaren Netzwerkhosts bestehen.

3.

Verwenden Sie eine For Each-Schleife, um das Array mit den Namen der Zielcomputer zu durchlaufen.

4.

Aufrufen der Methode ExecQuery des WMI-Dienstobjekts auf jedem Zielcomputer, wobei dieser eine WQL-Abfrage übergeben wird, die alle Eigenschaften (*)der Instanz von Win32_PingStatus anfordert, deren Adresse der des Zielcomputers entspricht. Zuweisen der sich ergebenden Auflistung von Instanzen (in diesem Beispiel nur eine Instanz) an die Variable colPings.

5.

Wenn beim Versuch der Abfrage von Win32_PingStatus kein Fehler auftritt, wird eine Iteration durch die Auflistung der Pingobjekte durchgeführt (es ist gemäß der Art der Abfrage nur eine vorhanden) und die Eigenschaft StatusCode des Pingobjekts geprüft.

6.

Wenn der Wert von StatusCode "0" ist, wurde der Ping-Befehl erfolgreich ausgeführt. Aufrufen verschiedener zurückgegebener Eigenschaften und Aufrufen der Unterroutine GetName. GetName zeigt die Eigenschaft Name der Klasse Win32_ComputerSystem an. Dies ist hilfreich, da dieses Skript die IP-Adresse des Computers in der Liste der Zielcomputer als Kennung verwenden kann.

7.

Wenn StatusCode ungleich "0" ist, hat der Zielcomputer auf die Ping-Anforderung nicht geantwortet. Zeigen Sie den Wert von StatusCode als Fehlermeldung an.

8.

Wenn beim Abfragen von Win32_PingStatus ein Fehler aufgetreten ist, muss dieser bereinigt werden. Dieser Fehler weist wahrscheinlich darauf hin, dass Win32_PingStatus auf dem Zielcomputer nicht zur Verfügung stand.

9.

Aufrufen der Funktion ExecPing.

ExecPing verwendet denselben Code wie Ping.vbs zum Ausführen des Befehlszeilentools Ping.exe und interpretiert dessen Ausgabe.

ExecPing gibt einen booleschen Wert zurück, der "True"(wahr) ist, wenn die Ping-Anforderung die Zeichenfolge "Antwort von" im zurückgegebenen Ausgabetext enthält (d. h. die Ping-Anforderung wurde erfolgreich gesendet). Andernfalls ist der Wert "False" (falsch) und "Antwort von" somit nicht enthalten.

10.

Wenn ExecPing den Wert "True" (wahr) liefert, wird GetName aufgerufen, um den Namen des Zielcomputers aufzurufen.

GetName erhält den Namen des Computers von der Eigenschaft Name von Win32_ComputerSystem.

Listing 17 Pingstatus-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
63
64
65
66
67
68
69
70
71
72
73
74
75
On Error Resume Next

 strComputer = "."
arrTargets = Array("192.168.0.1", "192.168.0.11", "192.168.0.12", _
 "192.168.0.13")

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

 For Each strTarget In arrTargets

   Set colPings = objWMIService.ExecQuery _
   ("Select * From Win32_PingStatus where Address = '" & strTarget & "'")
  If Err = 0 Then
    Err.Clear
    For Each objPing in colPings
      If objPing.StatusCode = 0 Then
        Wscript.Echo VbCrLf & strTarget & " responded to ping."
        Wscript.Echo "Responding Address: " & objPing.ProtocolAddress
        Wscript.Echo "Responding Name: " & objPing.ProtocolAddressResolved
        Wscript.Echo "Bytes Sent: " & objPing.BufferSize
        Wscript.Echo "Time: " & objPing.ResponseTime & " ms"
        Wscript.Echo "TTL: " & objPing.ResponseTimeToLive & " seconds"
        GetName
      Else
        WScript.Echo VbCrLf & strTarget & " did not respond to ping."
        WScript.Echo "Status Code: " & objPing.StatusCode
      End If
    Next
  Else
    Err.Clear
    If ExecPing = True Then
      GetName
    End If
  End If

 Next

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

 Function ExecPing

   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
    WScript.Echo VbCrLf & strTarget & " responded to ping."
    ExecPing = True
  Else
    WScript.Echo VbCrLf & strTarget & " did not respond to ping."
    ExecPing = False
  End If

 End Function

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

 Sub GetName

   Err.Clear
  Set objWMIServiceRemote = GetObject("winmgmts:" _
   & "{impersonationLevel=impersonate}!\\" & strTarget & "\root\cimv2")
  If Err = 0 Then
    Err.Clear
    Set colCompSystems = objWMIServiceRemote.ExecQuery("SELECT * FROM " & _
     "Win32_ComputerSystem")
    For Each objCompSystem In colCompSystems
      WScript.Echo "Host Name: " & LCase(objCompSystem.Name)
    Next
  Else
    Err.Clear
    WScript.Echo "Unable to connect to WMI on " & strTarget & "."
  End If

 End Sub

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

C:\scripts>pingstatus-multi.vbs

192.168.0.1 responded to ping.

Responding Address: 192.168.0.1

Responding Name:

Bytes Sent: 32

Time: 0 ms

TTL: 128 seconds

Host Name: server1

192.168.0.11 responded to ping.

Responding Address: 192.168.0.11

Responding Name:

Bytes Sent: 32

Time: 0 ms

TTL: 128 seconds

Host Name: client1

192.168.0.12 responded to ping.

Responding Address: 192.168.0.12

Responding Name:

Bytes Sent: 32

Time: 0 ms

TTL: 128 seconds

Host Name: client2

192.168.0.13 did not respond to ping.

Status Code: 11010

Behandeln von Fehlern mit VBScript

Skripts sollten auch Fehler behandeln, die möglicherweise beim Herstellen der Verbindung zu WMI auf Remotecomputern auftreten – insbesondere, wenn einige Computer Windows 95, Windows 98 oder Windows NT 4.0 ausführen, bei denen WMI evtl. nicht installiert ist. Sie können dazu die VBScript-Anweisung "On Error Resume Next" zusammen mit dem integrierten Objekt Err verwenden.

Das nachfolgende Skript Getip-multi.vbs und andere Skripts in diesem Dokument veranschaulichen die Vorgehensweise. Beachten Sie, dass es nach dem Aufrufen des Objekts Err wichtig ist, die Methode Err.Clear zu verwenden, um sicherzustellen, dass Fehlerinformationen für einen Computer gelöscht werden, bevor die Prüfung auf dem nächsten Computer fortgesetzt wird.

Weitere Informationen zur Fehlerbehandlung finden Sie im Abschnitt "Fehlerbehandlung" in Kapitel 2 des Windows 2000 Scripting-Handbuchs unter /germany/technet/datenbank/articles/600358.mspx#E0BW0AA.

Verwenden eines Arrays zum Eingeben einer Liste von Netzwerkhosts

Die einfachste Möglichkeit, um eine Liste von Netzwerkhosts einzugeben, ist das Verwenden eines Arrays mit Computernamen, bei denen es sich um Hostnamen, IP-Adressen oder eine Mischung aus beidem handeln kann. Sie können dann eine For Each-Anweisung verwenden, um eine Iteration durch die einzelnen Elemente des Arrays durchzuführen, d. h. durch jeden Computer, um von jedem Element Daten abzurufen oder Aktionen auf diesem durchzuführen.

Das Skript Getip-multi.vbs und andere Skripts in diesem Dokument veranschaulichen diesen Ansatz.

Abrufen der IP-Adressen und Subnetzmasken einer Gruppe von Remotecomputern

Dieses Skript verwendet den Algorithmus von Ping.vbs und Ping-multi.vbs, um die Verbindung zu Remotecomputern herzustellen, bevor Operationen auf diesen durchgeführt werden. Dadurch wird sichergestellt, dass das Skript für alle Versionen von Windows ausgeführt wird, die WMI enthalten. Wenn alle Hosts Windows XP und Windows Server 2003 ausführen, können Sie den Code von Pingstatus.vbs und Pingstatus-multi.vbs ersetzen.

Nachdem die Ping-Anforderung an die Remotecomputer gesendet wurde, versucht dieses Skript die Verbindung zum WMI-Dienst herzustellen und prüft dann auf einen Fehler. Auf Computern, die ältere Versionen als Windows 2000 oder nicht auf Windows basierende Betriebssysteme ausführen, ist WMI möglicherweise nicht vorhanden. In diesem Fall behandelt das Skript den Fehler und zeigt eine Fehlermeldung an, bevor mit dem nächsten Computer fortgefahren wird.

Wenn Ihr Netzwerk ältere oder nicht auf Windows basierende Betriebssysteme einbezieht, ist es empfehlenswert, diesen Code in Skripts zu verwenden, die eine Verbindung zu mehreren Computern herstellen. Da dieses Skript "On Error Resume Next" verwendet, erfolgt bei Auftreten von Fehlern kein Absturz, sondern es wird einfach mit der nächsten Zeile fortgefahren, die keinen Fehler generiert.

Schritte zur Skripterstellung

In Listing 18 werden die Eigenschaften IPAddress und IPSubnet (beides Arrays) für jede Netzwerkadapterkonfiguration auf einem Remotecomputer abgerufen.

1.

Aufrufen von "On Error Resume Next", dem Mechanismus von VBScript zur Fehlerbehandlung.

2.

Erstellen einer Variable und zuweisen eines Arrays aus Remotecomputernamen zu dieser Variablen. Die Namen können entweder aus Hostnamen oder IP-Adressen bzw. aus einer Mischung von beiden bestehen. Wenn Sie dieses Skript ausführen möchten, ändern Sie die vorhandenen Namen in Namen von im Netzwerk verfügbarer Remotecomputer, für die Sie über Administratorrechte verfügen.

3.

Aufrufen der Methode Exec() des Objekts WshShell zum Ausführen von Ping.exe für jeden Remotecomputer, bevor versucht wird, auf diesen die Verbindung zu WMI herzustellen. Die Ausführung von " ping -n 2 -w 1000 " sendet zwei Echoanforderungen und wartet eine Sekunde (1000 Millisekunden) auf eine Antwort. Wenn die Ping-Anforderung zu einer Antwort führt wird mit dem Skript fortgefahren. Ist dies nicht der Fall, wird eine Fehlermeldung angezeigt (Zeilen 42–43).

4.

Aufrufen von GetObject() zum Herstellen einer Verbindung zum WMI-Namespace root\cimv2 und festlegen der Ebene für den Identitätswechsel auf "Identität wechseln".

5.

Prüfen, ob beim Aufruf von GetObject() ein Fehler aufgetreten ist (Zeile 17).

Wenn kein Fehler aufgetreten ist, wird mit dem Skript fortgefahren.

Wenn ein Fehler auftritt, werden Nummer, Quelle und Beschreibung angezeigt (Zeilen 33–37).

6.

Verwenden der Methode ExecQuery zum Abfragen der Klasse Win32_NetworkAdapterConfiguration, wobei die WQL-Abfrage nach den Instanzen gefiltert wird, bei denen IPEnabled dem Wert "True" entspricht.

Die zurückgegebene Auflistung besteht aus allen Netzwerkadapterkonfigurationen auf dem Computer, für den IP aktiviert ist.

7.

Anzeigen von den Eigenschaften Index, Description, gefolgt von den IP-Adressen und Subnetzmasken für jede Netzwerkadapterkonfiguration in der Auflistung.

Listing 18 Getip-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
On Error Resume Next

 arrComputers = Array("server1", "client1", "server2", "client2")

 For Each strComputer In arrComputers

 ' Ping remote computer. If inaccessible, display error message.
  Set objShell = CreateObject("WScript.Shell")
  Set objScriptExec = objShell.Exec("ping -n 2 -w 1000 " & strComputer)
  strPingResults = LCase(objScriptExec.StdOut.ReadAll)
  If InStr(strPingResults, "reply from") Then

     WScript.Echo VbCrLf & "Host Name: " & strComputer
    Set objWMIService = GetObject("winmgmts:" _
     & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
' Test for success in binding to WMI.
    If Err = 0 Then
      Set colNicConfigs = objWMIService.ExecQuery("SELECT * FROM " & _
       "Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
      For Each objNicConfig In colNicConfigs
        WScript.Echo VbCrLf & "  Network Adapter " & objNicConfig.Index
        WScript.Echo "    " & objNicConfig.Description & VbCrLf
        WScript.Echo "    IP Address(es):"
        For Each strIPAddress In objNicConfig.IPAddress
          WScript.Echo "        " & strIPAddress
        Next
        WScript.Echo "    Subnet Mask(s):"
        For Each strIPSubnet In objNicConfig.IPSubnet
          WScript.Echo "        " & strIPSubnet
        Next
      Next
    Else
      Wscript.Echo "Error: Unable to connect to WMI." & VbCrLf & _
       "Error Number: " & Err.Number & VbCrLf & _
       "Error Source: " & Err.Source & VbCrLf & _
       "Error Description: " & Err.Description
      Err.Clear
    End If

   Else

     WScript.Echo VbCrLf & "Host Name: " & strComputer & VbCrLf & _
     "  Unable to connect."

   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>getip-multi.vbs

Host Name: server1

Network Adapter 12

3Com EtherLink XL 10/100 PCI For Complete PC Management NIC (3C905C-TX) #2 -

Packet Scheduler Miniport

IP Address(es):

192.168.0.1

Subnet Mask(s):

255.255.255.0

Host Name: client1

Network Adapter 1

3Com 3C920 Integrated Fast Ethernet Controller (3C905C-TX Compatible) - Pack

et Scheduler Miniport

IP Address(es):

192.168.0.11

Subnet Mask(s):

255.255.255.0

Host Name: server2

Unable to connect.

Host Name: client2

Network Adapter 1

3Com 3C918 Integrated Fast Ethernet Controller (3C905B-TX Compatible)

IP Address(es):

192.168.0.12

Subnet Mask(s):

255.255.255.0

Verwenden einer Textdatei mit einer Hostliste als Eingabe

Damit die Liste der Hosts, für die ein Skript ausgeführt wird, einfacher zu verwalten ist, als ein Array, können Sie die Liste in eine Textdatei stellen. Die Textdatei kann mithilfe des Objekts FileSystemObject in das Skript eingelesen werden. Dies wird von verschiedenen Skripts in diesem Dokument veranschaulicht, einschließlich Dns-move.vbs und Addclient.vbs.

Herstellen der Verbindung zu einem Bereich von IP-Adressen

Wenn eine Skript für einen Bereich von IP-Adressen ausgeführt werden soll, z. B. einem Subnetz, dann können Sie einfache Skripterstellungsverfahren anwenden, um den Bereich programmtechnisch zu konstruieren. Dies ist möglich, da beim Herstellen der Verbindung zu einem Remotecomputer sowohl IP-Adressen als auch Hostnamen im WMI-Objektpfad verwendet werden können. Nach dem Herstellen der Verbindung können Sie anderen Möglichkeiten nutzen, z. B. die Eigenschaft Name der Klasse Win32_Computer, um den Hostnamen abzurufen. Eine Abbildung dieses Verfahrens finden Sie weiter vorne in diesem Dokument, unter der Unterroutine GetName im Skript Pinstatus-multi.vbs.

Ein Beispiel zum Herstellen der Verbindung zu einem Bereich von IP-Adressen finden Sie später in diesem Dokument in Dhcp-enable-subnet.vbs in "Szenario: Zuweisen von IP-Adressen in einem Subnetz".

Andere Möglichkeiten zum Bereitstellen von Eingaben für Skripts

Weitere komplexere und leistungsstärkere Methoden zum programmgesteuerten Abrufen einer Liste mit Computern umfassen:

Verwenden von ADSI zum Herstellen der Verbindung zu einem Active Directory-Container, z. B. einer Organisationseinheit, und anschließender Iteration durch den Inhalt des Containers.

Verwenden von Tabellenblättern und Datenbanken als Eingabe für WMI- und ADSI-Skripts.

Diese Verfahren ermöglichen es einem Skript, weitere Informationen zu den einzelnen Computern zu erhalten, als nur die Hostnamen oder IP-Adressen. Weitere Informationen zu diesen Verfahren finden Sie in "Tales from the Script - November 2002: Running WMI Scripts Against Multiple Computers" unter http://go.microsoft.com/fwlink/?LinkId=24786 (nur auf Englisch verfügbar).

Aufzeichnen von Daten von mehreren Computern

Nachdem Sie Daten von mehreren Computern im Netzwerk erfasst haben, möchten Sie diese Daten häufig in einer bestimmten Form speichern. Die einfachste Methode zum Protokollieren von Daten ist es, die Skriptausgabe in eine Textdatei umzuleiten. Sie können den Shell-Umleitungsoperator ">", zum Umleiten von Skriptausgaben in eine Datei verwenden. Wenn die Ausgabe an eine vorhandene Datei angehängt werden soll, verwenden Sie die Syntax ">>". Der folgende Befehl speichert z. B. die Ausgabe von lpsettings.vbs in einer neuen Textdatei mit dem Namen lpsettings.txt:

ipsettings.vbs > ipsettings.txt

Sie können auch das Objekt FileSystemObject verwenden, um Dateien zu erstellen und die Ergebnisse dort einzutragen. Weitere Informationen zum Verwenden von FileSystemObject für Skripteingaben finden Sie unter in Kapitel 4 des Windows 2000 Scripting-Handbuchs unter /germany/technet/datenbank/articles/600360.mspx. Die Skript-Laufzeitbibliothek ist in allen Versionen von Windows, die den WSH zur Verfügung stellen sowie in allen Downloads des Windows Scripting Hosts enthalten.

Eine etwas vielseitigere Möglichkeit zum Ausgeben von Daten ist es, diese zu formatieren und als CSV-Datei zu speichern. Sie können CSV-Dateien in einer Tabellenkalkulation öffnen. Microsoft Excel bietet ebenfalls ein umfassendes Objektmodell für die Skripterstellung, mit dem Sie XLS-Dateien erstellen können.

Zuletzt bietet ADO (ActiveX Data Objects) eine Möglichkeit für Skripts, die VBScript und WSH verwenden, um direkt mit Datenbanken zu arbeiten. Auch ohne die Verbindung zu einer Datenbank herzustellen, bieten nicht verbundene ADO-RecordSets eine bequeme Möglichkeit, um Daten zu sortieren und zu bearbeiten.

Weitere Informationen zu diesen Methoden zum Behandeln von Ausgaben finden Sie in "Tales from the Script - April 2003: Script Output that Sticks Around" im TechNet Script Center unter http://go.microsoft.com/fwlink/?LinkId=24788 (nur auf Englisch verfügbar). Lesen Sie dazu auch die folgenden Themen des Windows 2000 Scripting-Handbuches:

"FileSystemObject" im Kapitel 4 unter /germany/technet/datenbank/articles/600360.mspx.

"Displaying Output" im Kapitel "Creating Enterprise Scripts" unter http://go.microsoft.com/fwlink/?LinkId=24793 (nur auf Englisch verfügbar).

"Working with Databases" im Kapitel "Creating Enterprise Scripts" unter http://go.microsoft.com/fwlink/?LinkId=24794 (nur auf Englisch verfügbar).

Tools zur Skripterstellung für die Verwaltung von Remotenetzwerken

Wenn Sie Remotenetzwerke verwalten, können Ihnen verschiedene Tools und Registrierungsschlüssel von Windows bei der Skripterstellung helfen. In Tabelle 7 sind verfügbare Tools und Information dazu enthalten, wo Sie diese finden.

Tabelle 7 Tools für die Verwaltung von Remotenetzwerken

TechnologieToolVerfügbar in

Befehlszeilentools

Ping.exe

Windows-Betriebssysteme1

Befehlszeilentools

Remote.exe

Windows Server 2003-Supporttools

Befehlszeilentools

Remotebefehlsdienst (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

Wsremote.exe

Windows XP-Supporttools

WSH

WshController

 

WMI

StdRegProv

 

WMI

Win32_ComputerSystem

 

WMI

Win32_NetworkAdapterConfiguration

 

WMI

Win32_NetworkAdapter

 

WMI

Win32_OperatingSystem

 

WMI

Win32_PingStatus

Nur Windows XP und Windows Server 2003

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

In Tabelle 8 werden die Registrierungsunterschlüssel aufgelistet, die Sie zum Erstellen von Skripts für Remotenetzwerke verwenden können.

caution.gif Vorsicht
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 8 Registrierungsunterschlüssel zur Skripterstellung für die Verwaltung von Remotenetzwerken

Registrierungsunterschlüssel

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
\ {AdapterIdentifier}

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dhcp\Parameters


**
**