Automatisieren von TCP/IP-Netzwerken auf Clients

Teil 2: Skripterstellung für grundlegende TCP/IP-Netzwerke auf Clients

Veröffentlicht: 19. Jul 2004

Bei einigen Arten von IT-Umgebungen, z. B. Kongresszentren, Hotels und Universitäten, müssen die Netzwerkadministratoren die Netzwerkclientdaten regelmäßig ändern, da kurzzeitig eingebundene Benutzer und Computer kommen und gehen. Bei dieser Art von Netzwerkumgebung kann sich die Verwendung von Skripts zum Konfigurieren von Netzwerkclients als besonders hilfreich erweisen. Auch bei weniger unruhigen TCP/IP-Netzwerken kann die Skripterstellung für grundlegende Konfigurationen dabei helfen, die Änderungs- und Konfigurationsverwaltung zu standardisieren, manuelle Verwaltungsfehler zu vermeiden sowie Massenänderungen auf zahlreichen Clients schnell und effektiv zu erreichen.

Windows bietet umfassende GUI- und Befehlszeilenfunktionen, die Netzwerkadministratoren beim Verwalten von TCP/IP-Netzwerkclients helfen. Sie können die meisten Netzwerkeinstellungen in Windows 2000 über Netzwerk- und DFÜ-Verbindungen und in Windows XP und Windows Server 2003 (in der Systemsteuerung) über Netzwerkverbindungen anzeigen und ändern. Allgemein gebräuchliche Befehlszeilentools wie Ipconfig.exe und Ping.exe bieten zusätzliche Optionen. Manchmal sind nur diese Tools erforderlich, um eine Netzwerkaufgabe durchzuführen. Wenn Sie jedoch wiederholt auf "OK" klicken müssen oder ständig versuchen, einen Parameter auf Hunderten von Computern zu ändern, der von zwei anderen Parametern abhängig ist, sollten sich die in diesem Dokument beschriebenen Verfahren als hilfreich erweisen.

In diesem Abschnitt werden die grundlegenden Verfahren zum Abrufen und Ändern der häufigsten TCP/IP-Einstellungen behandelt, z. B. IP-Adressen und Subnetzmasken. Der Abschnitt beginnt mit einer kurzen Übersicht über die Methoden, die keine Skripts verwenden sowie Befehlszeilenmethoden, mit denen Sie diese Aufgaben durchführen können. Anschließend werden in diesem Abschnitt eine Reihe von Skriptverfahren für die Arbeit mit den zwei wichtigsten WMI-Klassen für diese Aufgaben behandelt. Abschließend wird erläutert, wie erweiterte TCP/IP-Einstellungen mithilfe eines Skripts abgerufen werden, das fast alle Funktionen des Befehls ipconfig /all reproduziert.

Auf dieser Seite
Abrufen grundlegender TCP/IP-Clienteinstellung mithilfe von Methoden, die keine Skripts verwendenAbrufen grundlegender TCP/IP-Clienteinstellung mithilfe von Methoden, die keine Skripts verwenden
Abrufen grundlegender Einstellungen mithilfe eines SkriptsAbrufen grundlegender Einstellungen mithilfe eines Skripts
Anzeigen erweiterter IP-KonfigurationsdatenAnzeigen erweiterter IP-Konfigurationsdaten
Tools für grundlegende TCP/IP-Netzwerke auf ClientsTools für grundlegende TCP/IP-Netzwerke auf Clients

Abrufen grundlegender TCP/IP-Clienteinstellung mithilfe von Methoden, die keine Skripts verwenden

Wenn nur eine Reihe von TCP/IP-Einstellungen auf einem Computer geprüft werden müssen, bevorzugen viele Netzwerkadministratoren die Verwendung der Windows-Oberfläche, die in Windows XP über Netzwerkverbindungen und in Windows 2000 über Netzwerk- und DFÜ-Verbindungen bereitgestellt werden.

So prüfen Sie TCP/IP-Einstellungen mithilfe der Windows-Oberfläche in Windows XP

1.

Öffnen Sie die Systemsteuerung, und doppelklicken Sie auf Netzwerkverbindungen.

2.

Klicken Sie im Dialogfeld Netzwerkverbindungen mit der rechten Maustaste auf eine bestimmte Netzwerkverbindung, und klicken Sie anschließend auf Eigenschaften.

3.

Wählen Sie im Dialogfeld Eigenschaften die Option Internetprotokoll (TCP/IP), und klicken Sie dann auf Eigenschaften.

In Abbildung 1 sind die verfügbaren Optionen bei Verwendung des Dialogfelds Eigenschaften von Internetprotokoll (TCP/IP) aufgeführt.

Figure 1   Internet Protocol (TCP/IP) Properties Dialog Box

Abbildung 1 Dialogfeld "Eigenschaften von Internetprotokoll (TCP/IP)"
Bild maximieren

Die Registerkarten DNS, WINS und Optionen zeigen auch Einstellungen für diese Technologien an und bieten Ihnen die Möglichkeit, die meisten Einstellungen zu ändern.

Abrufen grundlegender Einstellungen mithilfe von "Ipconfig.exe"

Viele Administratoren verwenden Befehlszeilentools zum Abrufen der Konfigurationsdaten von TCP/IP-Clients. Ein beliebtes Befehlszeilentool ist Ipconfig.exe, das in den meisten Windows-Betriebssystemen enthalten ist. In Abbildung 2 werden die Netzwerkeinstellungen veranschaulicht, die Sie mithilfe von Ipconfig.exe anzeigen können.

Figure 2   Typical Network Settings Displayed by Ipconfig.exe

Abbildung 2 Typische Netzwerkeinstellungen, die mit "Ipconfig.exe" angezeigt werden
Bild maximieren

Sie können mit diesem Tool nicht nur Netzwerkeinstellungen anzeigen, sondern auch bestimmte Vorgänge durchführen. Die Option /renew erneuert z. B. DHCP-Leases und die Option /flushdns leert den DNS-Clientauflösungscache.

Abrufen grundlegender Einstellungen mithilfe eines Skripts

Durch das Schreiben von Skripts in VBScript, die WSH und WMI verwenden, können Systemadministratoren leistungsfähigere und flexiblere Tools zum Verwalten einer breiteren Palette von Windows-Funktionen erstellen.

Für jede Einstellung im Dialogfeld Erweiterte TCP/IP-Einstellungen bieten WMI-Klassen Eigenschaften und Methoden, die Clientnetzwerkeinstellungen abrufen und ändern können, von denen die Klasse Win32_NetworkAdapterConfiguration die wichtigste ist. In Abbildung 3 wird veranschaulicht, welche WMI-Klassen den verschiedenen Elementen des Dialogfelds Erweiterte TCP/IP-Einstellungen entsprechen.

Figure 3   How TCP/IP WMI Properties and Methods Correspond to the Windows UI

Abbildung 3 Wie TCP/IP WMI-Eigenschaften und -Methoden der Windows-UI entsprechen
Bild maximieren

Hinsichtlich der Skripterstellung ist eine WMI-Klasse eine einfache Möglichkeit einen zusammengehörigen Satz von Konfigurationseinstellungen zu nutzen und diesen dann über einen aussagekräftigen Namen zu konfigurieren. Die Skripts fragen Einstellungen über Eigenschaften ab, und führen über Methoden Änderungen durch.

Win32_NetworkAdapterConfiguration umfasst auch Eigenschaften und Methoden, die den Registerkarten DNS, WMI und Optionen des Dialogfelds Erweiterte TCP/IP-Einstellungen entsprechen. Die nachfolgenden Abschnitte behandeln dieses Thema ausführlich.

Verwenden der WMI-Klasse "Win32_NetworkAdapterConfiguration"

Die 61 Eigenschaften und 41 Methoden von Win32_NetworkAdapterConfiguration decken fast alle Einstellungen und Aktionen, die über die Windows-Oberfläche oder Befehlszeilentools zur Verfügung stehen ab sowie auch einige nicht verfügbare. Zum Abrufen einer Eigenschaft oder Aufrufen einer Methode sind nur einige Zeilen VBScript-Code erforderlich, wie im folgenden Beispiel gezeigt wird. Weitere Informationen zu den Eigenschaften und Methoden dieser WMI-Klasse finden Sie im WMI Software Development Kit (SDK) unter http://go.microsoft.com/fwlink/?LinkId=29991 (nur auf Englisch verfügbar).

Das Aufrufen der Methoden InstancesOf() oder ExecQuery() des Objekts SWbemServices der Klasse Win32_NetworkAdapterConfiguration gibt eine Auflistung von Objekten zurück. Diese Auflistung besitzt die Form einer SWbemObjectSet-Auflistung, die keine oder mehr Instanzen von SWbemObject enthält. Diese Objekte und Methoden sind in der WMI-Referenz des WMI SDK unter "Scripting API for WMI" (nur auf Englisch verfügbar) ausführlich beschrieben.

Anzeigen einer Einstellung

Im folgenden Beispiel wird die Eigenschaft DHCPEnabled der Klasse Win32_NetworkAdapterConfiguration angezeigt. Die Eigenschaft DHCPEnabled gibt einen booleschen Wert zurück. Eine solche Eigenschaft kann entweder den Wert wahr oder falsch haben. Die von VBScript verwendeten Werte sind -1 für wahr (true) und 0 für falsch (false). Programmiertechnisch kann jedoch auch jeder andere Wert außer Null als Equivalent für "wahr" verwendet werden. In den meisten Fällen sollten Skripts jedoch die VBScript-Schlüsselwörter "True" (wahr) und "False" (falsch) für diese Werte verwenden.

Das in diesem Beispielskript verwendete Muster kann für sämtliche Eigenschaften von Win32_NetworkAdapterConfiguration wiederholt werden, ausgenommen für Eigenschaften, die Arrays zurückgeben. Die Behandlung von Eigenschaften, die Arrays zurückgeben, wird später in diesem Dokument beschrieben.

Schritte zur Skripterstellung

1.

Stellen Sie mithilfe des Monikers "winmgmts:" eine Verbindung zum WMI-Dienst her.

2.

Rufen Sie alle Instanzen der Klasse Win32_NetworkAdapterConfiguration mithilfe der Methode InstancesOf ab.

Die zurückgegebene Auflistung besteht aus allen Netzwerkadapterkonfigurationen auf dem Computer.

3.

Für jede Netzwerkadapterkonfiguration in der Auflistung verwenden Sie die WSH-Methode Echo, um die boolesche Eigenschaft anzuzeigen, die der Einstellung DHCP aktiviert im Feld IP-Adressen der Registerkarte IP-Einstellungen des Dialogfelds Erweiterte TCP/IP-Einstellungen entspricht.

Listing 1 Onesetting.vbs

1
2
3
4
5
6
Set objWMIService = GetObject("winmgmts:")
Set colNicConfig = _
 objWMIService.InstancesOf("Win32_NetworkAdapterConfiguration")
For Each objNicConfig In colNicConfig
  WScript.Echo objNicConfig.DHCPEnabled
Next

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

C:\scripts>onesetting.vbs

-1

0

0

0

0

0

0

0

note.gif Hinweis
Ein Computer, der nur einen physischen Netzwerkadapter enthält, zeigt möglicherweise Einstellungen für mehrere Netzwerkadapter an. Dies liegt daran, dass einige Arten von Netzwerkverbindungen (z. B. VPN-Adapter) zwar vorhanden sind, jedoch normalerweise in der Netzwerkumgebung oder im Gerätemanager nicht angezeigt werden..

Anzeigen einer booleschen Einstellung als Zeichenfolge

Wenn Sie eine besser lesbare Ausgabe erzeugen möchten, führt eine kleine Änderung in Zeile 5 dazu, dass die booleschen Einstellungen als "True" oder "False" anstelle von "-1" und "0" angezeigt werden, wodurch sich die Lesbarkeit der Skriptausgabe erhöht. Durch Ausgeben von "DHCP Enabled: " und anschließendem Verknüpfen der Eigenschaft DHCPEnabled ermöglicht das Skript VBScript, die boolesche Einstellung in ein Zeichenfolgenformat zu konvertieren.

Obwohl alle VBScript-Variablen vom Typ "Variant" sind, wandelt (transformiert) VBScript Varianten abhängig vom Kontext, in denen sie verwendet werden, automatisch in geeignete Datentypen. In diesem Fall, da das Skript eine Variable vom Typ "Boolean" mit einer reinen Zeichenfolge verknüpft, konvertiert VBScript den booleschen Wert in seine äquivalente Zeichenfolge.

Schritte zur Skripterstellung

1.

Stellen Sie die Verbindung zum WMI-Dienst her.

2.

Rufen Sie alle Instanzen der Klasse Win32_NetworkAdapterConfiguration mithilfe der Methode InstancesOf ab.

Die zurückgegebene Auflistung besteht aus allen Netzwerkadapterkonfigurationen auf dem Computer.

3.

Verwenden Sie für jede Konfiguration eines Netzwerkadapters die WSH-Methode Echo, um die Beschriftung "DHCP Enabled:" mit der booleschen Eigenschaft DHCPEnabled verknüpft anzuzeigen.

Listing 2 Onesetting-string.vbs

1
2
3
4
5
6
Set objWMIService = GetObject("winmgmts:")
Set colNicConfig = _
 objWMIService.InstancesOf("Win32_NetworkAdapterConfiguration")
For Each objNicConfig In colNicConfig
  WScript.Echo "DHCP Enabled: " & objNicConfig.DHCPEnabled
Next

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

C:\scripts>onesetting-string.vbs

DHCP Enabled: True

DHCP Enabled: False

DHCP Enabled: False

DHCP Enabled: False

DHCP Enabled: False

DHCP Enabled: False

DHCP Enabled: False

DHCP Enabled: False

Anzeigen einer Einstellung für bestimmte Netzwerkadapter

Die vorherigen beiden Beispiele zeigen den Wert der Eigenschaft DHCPEnabled für jede Netzwerkadapterkonfiguration an, die WMI finden kann. In einigen Fällen kann es vorkommen, dass Sie nicht mit allen Netzwerkadaptern arbeiten möchten. Bestimmte Features, z. B. Routing, RAS und VPNs, erstellen ihre eigenen Konfigurationen für die virtuellen Netzwerkadapter, für die TCP/IP nicht aktiviert ist.

Sie können die Methode ExecQuery() des Objekts SWbemServices (das in Zeile 1 durch den Aufruf von GetObject() zurückgegebene Objekt) verwenden, um nur für IP aktivierte Netzwerkadapter zu filtern. ExecQuery() übernimmt als erforderlicher Parameter im Allgemeinen eine Zeichenfolge, die eine Abfrage in WQL (WMI Query Language) enthält, einem Dialekt von SQL (Structured Query Language). Sie gibt eine SWbemObjectSet-Auflistung von Objekten zurück.

Obwohl bei WQL-Abfragen nicht zwischen Groß-/Kleinschreibung unterschieden wird, ist die Standardvorgehensweise, alle WQL-Schlüsselwörter in Großbuchstaben darzustellen, um das Skript leserlicher zu gestalten.

Die von Skripts zur Systemverwaltung am häufigsten verwendete grundlegende Abfrage ist "SELECT * FROM Klassenname ". Diese Abfrage gibt alle Instanzen der Klasse zurück und "*" dient als Platzhalterzeichen (wie in SQL und bei Dateisystembezeichnern in der Befehlszeile), das alle Eigenschaften der einzelnen Instanzen zurückgibt. "SELECT * FROM Win32_Service" gibt z. B. alle Eigenschaften aller Instanzen der Klasse Win32_Service Zurück - dies wären beispielsweise alle Dienste, die momentan auf dem Computer aktiv sind.

Im folgenden Skript ermöglicht es das Schlüsselwort WHERE (ebenfalls Teil von SQL) einschränkende Bedingungen für das Skript anzugeben. Hier fordert die Abfrage "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True" alle Instanzen der Klasse Win32_NetworkAdapterConfiguration an, deren boolescher Wert der Eigenschaft IPEnabledTrue ist, d. h. für die IP aktiviert ist.

In diesem Beispiel wird auch eine zweite Eigenschaft hinzugefügt, Index (siehe Zeile 5), um zwischen Adaptern unterscheiden zu können, falls mehrere installiert sind. Index ist die Schlüsseleigenschaft der Klasse Win32_NetworkAdapterConfiguration und dient als eindeutige Kennung für die einzelnen Instanzen der Klasse. Der Wert von Index ist eine ganze Zahl, die für die erste aktive Netzwerkadapterkonfiguration bei 0 beginnt und für nachfolgende Konfigurationen um 1 erhöht wird.

Listing 3 gibt die Eigenschaften Index und DHCPEnabled für alle Adapter zurück, für die IPEnabled den Wert True ergibt.

Schritte zur Skripterstellung

1.

Stellen Sie die Verbindung zum WMI-Dienst her.

2.

Rufen Sie die bestimmten Instanzen der Klasse Win32_NetworkAdapterConfiguration mit der Methode ExecQuery und einer Abfragezeichenfolge ab, die die Netzwerkadapter filtert, deren Eigenschaft IPEnabled den Wert True ergibt.

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

3.

Verwenden Sie für jede Konfiguration eines Netzwerkadapters die WSH-Methode Echo, um den Index des Netzwerkadapters und die Eigenschaft DHCPEnabled anzuzeigen.

Listing 3 Onesetting-execquery.vbs

1
2
3
4
5
6
7
Set objWMIService = GetObject("winmgmts:")
Set colNicConfig = objWMIService.ExecQuery("SELECT * FROM " & _
  "Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
For Each objNicConfig In colNicConfig
  WScript.Echo "Network Adapter: " & objNicConfig.Index
  WScript.Echo "  DHCP Enabled: " & objNicConfig.DHCPEnabled
Next

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

C:\scripts>onesetting-execquery.vbs

Network Adapter: 1

DHCP Enabled: True

Network Adapter: 10

DHCP Enabled: False

In anderen Fällen möchten Sie die Ausführung des Skripts möglicherweise auf eine einzelne Netzwerkadpaterkonfiguration einschränken. Auf einem zweifach vernetzten Computer, der mit zwei Netzwerken verbunden ist, können Sie z. B. DHCP für einen Netzwerkadapter aktivieren, während es für den anderen deaktiviert bleibt. Dazu können Sie eine Abfrage wie "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE Index = 0" verwenden.

Eine einfachere Methode, um dies zu erreichen, ist die Verwendung der Methode Get() des Objekts SWbemServices (zurückgegeben durch den Aufruf von GetObject für den Moniker wingmgts:). Get() nimmt eine Zeichenfolge, die einen WMI-Objektpfad als erforderlichen Parameter enthält und gibt ein SWbemObject-Objekt zurück.

tip.gif Tipp
Das folgende Skript zeigt eine Eigenheit von WMI: Obwohl VBScript, WSH und WMI normalerweise Leerzeichen ignorieren, darf innerhalb des an objWMIService.Get() übergebenen Objektpfades (dem Zeichenfolgenparameter) kein Leerzeichen vor oder hinter dem Gleichheitszeichen (=) in "Index=0" enthalten sein. Ein Leerzeichen auf einer Seite des Gleichheitszeichens führt zu einem Fehler.

Schritte zur Skripterstellung

1.

Stellen Sie die Verbindung zum WMI-Dienst her.

2.

Rufen Sie die Instanz der Klasse Win32_NetworkAdapterConfiguration mit dem Index (die Schlüsseleigenschaft) "0" mithilfe der Methode Get ab.

Die zurückgegebene Auflistung besteht aus der Netzwerkadapterkonfiguration auf dem Computer, für den der Index den Wert "0" hat.

3.

Verwenden Sie für diese Instanz die WSH-Methode Echo, um den Index des Netzwerkadapters und die Eigenschaft DHCPEnabled anzuzeigen.

Listing 4 Onesetting-onenic.vbs

1
2
3
4
5
6
7
8
intIndex = 1 ' index of an IP-enabled network adapter
Set objWMIService = GetObject("winmgmts:")
Set colNicConfig = objWMIService.ExecQuery("SELECT * FROM " & _
 "Win32_NetworkAdapterConfiguration WHERE Index = " & intIndex)
For Each objNicConfig In colNicConfig
  WScript.Echo "Network Adapter: " & objNicConfig.Index
  WScript.Echo "  DHCP Enabled: " & objNicConfig.DHCPEnabled
Next

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

C:\scripts>onesetting-onenic.vbs

Network Adapter: 1

DHCP Enabled: True

Anzeigen mehrwertiger Eigenschaften

Da es der Netzwerkadaptereinstellung unter Windows erlaubt ist, mehrere IP-Adressen, Subnetzmasken, Standardgateways oder DNS-Server zu besitzen, können einige Eigenschaften von Win32_NetworkAdapterConfiguration mehrere Werte aufweisen. WMI gibt mehrere Werte einer Eigenschaft in Form von Arrays zurück. Da ein Array mehrere Werte enthält, kann er nicht auf dieselbe Weise wie eine einzelne Zeichenfolge, ein boolescher Wert oder eine Zahl behandelt werden.

VBScript bietet zwei Verfahren zum Umwandeln von Arrays in das Zeichenfolgenformat, das mit WScript.Echo angezeigt werden kann: Die Funktion Join und die Schleife For Each.

Verwenden der Funktion "Join" von VBScript

Die Funktion Join von VBScript verknüpft oder verbindet Elemente eines Arrays zu einer einzelnen Zeichenfolge, die durch ein oder mehrere in einem zweiten, optionalen Parameter angegebene Zeichen getrennt sind. Wenn Sie dieses Trennzeichen nicht angeben, verwendet Join das Leerzeichen als Trennzeichen.

Die Funktion Join ist erforderlich, da Sie ein Array nicht direkt anzeigen können. Zuerst müssen Sie das Array in seine Elemente aufteilen oder es in eine Zeichenfolge konvertieren. Mithilfe der Funktion Join können Sie die Formatierung dieser Zeichenfolge steuern. Sie können z. B. entweder das Komma oder den Doppelpunkt als Trennzeichen verwenden (anstelle des Leerzeichens), um die Elemente im Array zu trennen.

Schritte zur Skripterstellung

1.

Stellen Sie die Verbindung zum WMI-Dienst her.

2.

Rufen Sie alle Instanzen der Klasse Win32_NetworkAdapterConfiguration mit der Methode ExecQuery und einer Abfragezeichenfolge ab, die die Netzwerkadapter filtert, deren Eigenschaft IPEnabled den Wert True ergibt.

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

3.

Verwenden Sie für jede Konfiguration eines Netzwerkadapters die WSH-Methode Echo, um den Index des Netzwerkadapters anzuzeigen.

4.

Gehen Sie wie folgt vor, wenn für die Eigenschaft IPAddress (ein Array) Folgendes zutrifft:

Wenn die Eigenschaft ungleich Null ist, verwenden Sie die Funktion Join von VBScript, um die Elemente des Arrays IPAddress zu einer durch Leerzeichen (Standardwert) getrennten Zeichenfolge zu verknüpfen und weisen diese dann einer Variablen zu.

Wenn die Eigenschaft gleich Null ist, weisen Sie der Variablen eine leere Zeichenfolge zu.

5.

Zeigen Sie die durch Leerzeichen getrennte Zeichenfolge der IP-Adressen an.

Listing 5 Onesetting-array-join.vbs

1
2
3
4
5
6
7
8
9
10
11
12
Set objWMIService = GetObject("winmgmts:")
Set colNicConfig = objWMIService.ExecQuery("SELECT * FROM " & _
 "Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
For Each objNicConfig In colNicConfig
  WScript.Echo "Network Adapter: " & objNicConfig.Index
  If Not IsNull(objNicConfig.IPAddress) Then
    strIPAddresses = Join(objNicConfig.IPAddress)
  Else
    strIPAddresses = ""
  End If
  WScript.Echo "  IP Address(es): " & strIPAddresses
Next

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

C:\scripts>onesetting-array-join.vbs

Network Adapter: 1

IP Address(es): 0.0.0.0

Network Adapter: 10

IP Address(es): 192.168.1.2

Verwenden von "For Each ... In ... Next"

Die Schleife For Each bietet eine alternative Möglichkeit, um die Elemente eines Arrays anzuzeigen. Diese Anweisung durchläuft das Array und ermöglicht es dem Skript, für jedes separate Element eine Aktion durchzuführen. In diesem Fall wird das Element einfach angezeigt.

Schritte zur Skripterstellung

1.

Stellen Sie die Verbindung zum WMI-Dienst her.

2.

Rufen Sie alle Instanzen der Klasse Win32_NetworkAdapterConfiguration mit der Methode ExecQuery und einer Abfragezeichenfolge ab, die die Netzwerkadapter filtert, deren Eigenschaft IPEnabled den Wert True ergibt.

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

3.

Verwenden Sie für jede Konfiguration eines Netzwerkadapters die WSH-Methode Echo, um den Index des Netzwerkadapters anzuzeigen.

4.

Wenn die Eigenschaft IPAddress (ein Array) ungleich Null ist, verwenden Sie eine For Each-Schleife, um eine Iteration durch das Array IPAddress durchzuführen, wobei jedes Element mithilfe der WSH-Methode Echo angezeigt wird.

Listing 6 Onesetting-array-foreach.vbs

1
2
3
4
5
6
7
8
9
10
11
12
Set objWMIService = GetObject("winmgmts:")
Set colNicConfig = objWMIService.ExecQuery("SELECT * FROM " & _
 "Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
For Each objNicConfig In colNicConfig
  WScript.Echo "Network Adapter: " & objNicConfig.Index
  WScript.Echo "  IP Address(es):"
  If Not IsNull(objNicConfig.IPAddress) Then
    For Each strIPAddress In objNicConfig.IPAddress
      WScript.Echo "    " & strIPAddress
    Next
  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>onesetting-array-foreach.vbs

Network Adapter: 1

IP Address(es):

0.0.0.0

Network Adapter: 10

IP Address(es):

192.168.1.2

Anzeigen eines Bereichs von Netzwerkeigenschaften

Bei der Bestandsaufnahme für Netzwerkclients kann es häufig wünschenswert sein, Daten zu einer größeren Gruppe von TCP/IP-Einstellungen zu erfassen. Wenn Sie z. B. die im Dialogfeld Erweiterte TCP/IP-Einstellungen sowie die durch Ipconfig.exe angezeigten Einstellungen erfassen möchten, dann überschneiden sich einige Einstellungen, während andere nur durch eine dieser Optionen angezeigt werden. Ein Skript kann all diese Einstellungen aus unterschiedlichen Quellen in einem Paket zusammenfassen.

Für jeden Netzwerkadapter eines bestimmten Computers, für den IP aktiviert ist, verwenden Sie das Skript Ipsettings.vbs, um die auf der Registerkarte IP-Einstellungen des Dialogfelds Erweiterte TCP/IP-Einstellungen für eine Netzwerkverbindung sowie die von Ipconfig.exe (verwendet mit einigen Parametern) angezeigten Daten abzurufen.

Die Konfiguration eines Netzwerkadapters kann mehrere IP-Adressen, Subnetze, Standardgateways und Gatewaymetriken aufweisen.

Schritte zur Skripterstellung

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_NetworkAdapterConfiguration, wobei die WQL-Abfrage nach "WHERE IPEnabled = True" gefiltert wird.

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

4.

Verwenden Sie für jede Konfiguration eines Netzwerkadapters in der Auflistung die WSH-Methode Echo, um die Eigenschaften anzuzeigen, die den Einstellungen auf der Registerkarte IP-Einstellungen entsprechen.

5.

Für die Eigenschaften, die ein Array zurückgeben, verwenden Sie die VBScript-Funktion IsNull(), um zu prüfen, ob das Array den Wert Null hat.

Wenn das Array nicht den Wert Null hat, verwenden Sie die VBScript-Funktion Join(), um die Arrayelemente zu einer Zeichenfolge zu verknüpfen und diese dann anzuzeigen.

Wenn das Array den Wert Null hat, zeigen Sie eine leere Zeichenfolge an.

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

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

 WScript.Echo VbCrLf & "IP Settings"

 For Each objNicConfig In colNicConfigs

   WScript.Echo VbCrLf & "  Network Adapter " & objNicConfig.Index
  WScript.Echo "    " & objNicConfig.Description & VbCrLf
  WScript.Echo "    DHCP Enabled:                   " & _
   objNicConfig.DHCPEnabled
  If Not IsNull(objNicConfig.IPAddress) Then
    strIPAddresses = Join(objNicConfig.IPAddress)
  Else
    strIPAddresses = ""
  End If
  WScript.Echo "    IP Address(es):                 " & strIPAddresses
  If Not IsNull(objNicConfig.IPSubnet) Then
    strIPSubnet = Join(objNicConfig.IPSubnet)
  Else
    strIPSubnet = ""
  End If
  WScript.Echo "    Subnet Mask(s):                 " & strIPSubnet
  If Not IsNull(objNicConfig.DefaultIPGateway) Then
    strDefaultIPGateway = Join(objNicConfig.DefaultIPGateway)
  Else
    strDefaultIPGateway = ""
  End If
  WScript.Echo "    Default Gateways(s):            " & strDefaultIPGateway
  If Not IsNull(objNicConfig.GatewayCostMetric) Then
    strGatewayCostMetric = Join(objNicConfig.GatewayCostMetric)
  Else
    strGatewayCostMetric = ""
  End If
  WScript.Echo "    Gateway Metric(s):              " & strGatewayCostMetric
  WScript.Echo "    Interface Metric:               " & _
   objNicConfig.IPConnectionMetric
  WScript.Echo "    Connection-specific DNS Suffix: " & _
   objNicConfig.DNSDomain

 Next

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

C:\scripts>ipsettings.vbs

IP Settings

Network Adapter 1

Intel(R) PRO/1000 MT Network Connection - Packet Scheduler Miniport

DHCP Enabled: True

IP Address(es): 0.0.0.0

Subnet Mask(s):

Default Gateways(s):

Gateway Metric(s):

Interface Metric: 1

Connection-specific DNS Suffix:

Network Adapter 10

3Com EtherLink 10/100 PCI For Complete PC Management NIC (3C905C-TX) - Packet Scheduler Miniport

DHCP Enabled: False

IP Address(es): 192.168.1.2

Subnet Mask(s): 255.255.255.0

Default Gateways(s):

Gateway Metric(s):

Interface Metric: 20

Connection-specific DNS Suffix:

"Win32_NetworkAdapterConfiguration" und "Win32_NetworkAdapter"

Die Klasse Win32_NetworkAdapterConfiguration ist eng mit der Klasse Win32_NetworkAdapter verbunden. Es besteht eine 1:1-Entsprechung zwischen Instanzen beider Klassen und eine implizierte Arbeitsaufteilung zwischen den beiden Klassen: Win32_NetworkAdapter legt hauptsächlich hardwarebezogene Eigenschaften offen und enthält im Gegensatz zu Win32_NetworkAdapterConfiguration keine Methoden. Es gibt einige Überschneidungspunkte zwischen den beiden Klassen. Beide besitzen z. B. die Eigenschaft MACAddress, die die physikalische Adresse eines Netzwerkadapters abruft.

Abbildung 4 veranschaulicht die Beziehung zwischen den Klassen Win32_NetworkAdapterConfiguration und Win32_NetworkAdapter.

Nur Win32_NetworkAdapter verfügt über die Eigenschaft NetConnectionID (nur unter Windows XP und Windows Server 2003 verfügbar), die den Namen der Netzwerkverbindung zurückgibt (der Name, der auch unter Netzwerkverbindungen angezeigt wird), die mit dem Netzwerkadapter verbunden ist, obwohl diese Einstellung logisch gesehen eher zu Win32_NetworkAdapterConfiguration gehören sollte. Die Eigenschaft NetConnectionID entspricht dem Namen, den Ipconfig.exe für die einzelnen Netzwerkadapter verwendet.

Außerdem enthält nur Win32_NetworkAdapter die Eigenschaft AdapterType, die das Netzwerkmedium beschreibt, mit dem der Adapter die Verbindung herstellt, z. B. Ethernet 802.3 oder Token Ring 802.5. Ipconfig.exe verwendet diese Daten auch, um den Netzwerkadapter zu beschreiben.

Figure 4   Relationship Between These WMI Classes

Abbildung 4 Beziehung zwischen diesen WMI-Klassen
Bild maximieren

Die folgenden Beispiele zeigen, wie die Eigenschaften von Win32_NetworkAdapter angezeigt werden sowie die Methoden für korrelierende Eigenschaften von Instanzen von Win32_NetworkAdapter und Win32_NetworkAdapterConfiguration.

Anzeigen Netzwerkadaptereigenschaften

Das Anzeigen der Einstellungen von Netzwerkadaptern erfordert ähnliche Verfahren zur Skripterstellung, wie die zum Anzeigen der TCP/IP-Einstellungen. Der einzige Unterschied ist, dass Sie die Klasse Win32_NetworkAdapterConfiguration zum Anzeigen der TCP/IP-Einstellungen verwenden, während die Eigenschaften der Netzwerkadapter mithilfe der Klasse Win32_NetworkAdapter angezeigt werden. Weitere Informationen zu den Eigenschaften und Methoden dieser WMI-Klasse finden Sie im WMI Software Development Kit (SDK) unter http://go.microsoft.com/fwlink/?LinkId=29992 (nur auf Englisch verfügbar).

Schritte zur Skripterstellung

Listing 8 ruft die Eigenschaften für alle Netzwerkadapter eines Computers ab. In diesem Skript werden einige Eigenschaften abgerufen, die nur unter Windows XP und Windows Server 2003 verfügbar sind.

1.

Erstellen Sie eine Variable zur Angabe des Computernamens. Verwenden Sie z. B. ("."), um den lokalen Computer anzugeben.

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 Methode ExecQuery zum Abfragen der Klasse Win32_NetworkAdapter.

Die zurückgegebene Auflistung besteht aus allen Netzwerkadaptern auf dem Computer.

4.

Verwenden Sie für jeden Netzwerkadapter in der Auflistung die WSH-Methode Echo, um seine Eigenschaften anzuzeigen.

5.

Für die Eigenschaften, die ein Array zurückgeben, verwenden Sie die VBScript-Funktion IsNull(), um zu prüfen, ob das Array den Wert Null hat.

Wenn das Array nicht den Wert Null hat, verwenden Sie die VBScript-Funktion Join(), um die Arrayelemente zu einer Zeichenfolge zu verknüpfen und diese dann anzuzeigen.

Wenn das Array den Wert Null hat, zeigen Sie eine leere Zeichenfolge an.

Listing 8 Nicsettings.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
On Error Resume Next

 strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colNics = objWMIService.ExecQuery _
 ("SELECT * FROM Win32_NetworkAdapter")

 WScript.Echo VbCrLf & "Network Adapter Settings"

 For Each objNic In colNics

   WScript.Echo VbCrLf & "  Network Adapter (Device ID)" & _
   objNic.DeviceID
  Wscript.Echo "    Index: " & objNic.Index
  Wscript.Echo "    MAC Address: " & objNic.MACAddress
  Wscript.Echo "    Adapter Type: " & objNic.AdapterType
  Wscript.Echo "    Adapter Type Id: " & objNic.AdapterTypeID
  Wscript.Echo "    Description: " & objNic.Description
  Wscript.Echo "    Manufacturer: " & objNic.Manufacturer
  Wscript.Echo "    Name: " & objNic.Name
  Wscript.Echo "    Product Name: " & objNic.ProductName
  Wscript.Echo "    Net Connection ID: " & objNic.NetConnectionID
  Wscript.Echo "    Net Connection Status: " & objNic.NetConnectionStatus
  Wscript.Echo "    PNP Device ID: " & objNic.PNPDeviceID
  Wscript.Echo "    Service Name: " & objNic.ServiceName
  If Not IsNull(objNic.NetworkAddresses) Then
    strNetworkAddresses = Join(objNic.NetworkAddresses)
  Else
    strNetworkAddresses = ""
  End If
  Wscript.Echo "    NetworkAddresses: " & strNetworkAddresses
  Wscript.Echo "    Permanent Address: " & objNic.PermanentAddress
  Wscript.Echo "    AutoSense: " & objNic.AutoSense
  Wscript.Echo "    Maximum Number Controlled: " & objNic.MaxNumberControlled
  Wscript.Echo "    Speed: " & objNic.Speed
  Wscript.Echo "    Maximum Speed: " & objNic.MaxSpeed

 Next

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

C:\scripts>nicsettings.vbs

Network Adapter Settings

Network Adapter (Device ID)1

Index: 1

MAC Address: 00:0D:56:15:ED:B7

Adapter Type: Ethernet 802.3

Adapter Type Id: 0

Description: Intel(R) PRO/1000 MT Network Connection

Manufacturer: Intel

Name: Intel(R) PRO/1000 MT Network Connection

Product Name: Intel(R) PRO/1000 MT Network Connection

Net Connection ID: Local Area Connection

Net Connection Status: 7

PNP Device ID: PCI\VEN_8086&DEV_100E&SUBSYS_01511028&REV_02\4&1C660DD6&0&60F0

Service Name: E1000

NetworkAddresses:

Permanent Address:

AutoSense:

Maximum Number Controlled: 0

Speed:

Maximum Speed:

Network Adapter (Device ID)2

Index: 2

MAC Address:

Adapter Type:

Adapter Type Id:

Description: RAS Async Adapter

Manufacturer:

Name: RAS Async Adapter

Product Name: RAS Async Adapter

Net Connection ID:

Net Connection Status:

PNP Device ID:

Service Name:

NetworkAddresses:

Permanent Address:

AutoSense:

Maximum Number Controlled: 0

Speed:

Maximum Speed:

Network Adapter (Device ID)3

Index: 3

MAC Address:

Adapter Type:

Adapter Type Id:

Description: WAN Miniport (L2TP)

Manufacturer: Microsoft

Name: WAN Miniport (L2TP)

Product Name: WAN Miniport (L2TP)

Net Connection ID:

Net Connection Status:

PNP Device ID: ROOT\MS_L2TPMINIPORT\0000

Service Name: Rasl2tp

NetworkAddresses:

Permanent Address:

AutoSense:

Maximum Number Controlled: 0

Speed:

Maximum Speed:

Network Adapter (Device ID)6

Index: 6

MAC Address:

Adapter Type:

Adapter Type Id:

Description: Direct Parallel

Manufacturer: Microsoft

Name: Direct Parallel

Product Name: Direct Parallel

Net Connection ID:

Net Connection Status:

PNP Device ID: ROOT\MS_PTIMINIPORT\0000

Service Name: Raspti

NetworkAddresses:

Permanent Address:

AutoSense:

Maximum Number Controlled: 0

Speed:

Maximum Speed:

Network Adapter (Device ID)8

Index: 8

MAC Address: 00:0D:56:15:ED:B7

Adapter Type: Ethernet 802.3

Adapter Type Id: 0

Description: Packet Scheduler Miniport

Manufacturer: Microsoft

Name: Packet Scheduler Miniport

Product Name: Packet Scheduler Miniport

Net Connection ID:

Net Connection Status:

PNP Device ID: ROOT\MS_PSCHEDMP\0000

Service Name: PSched

NetworkAddresses:

Permanent Address:

AutoSense:

Maximum Number Controlled: 0

Speed:

Maximum Speed:

Network Adapter (Device ID)10

Index: 10

MAC Address: 00:0A:5E:3D:E3:70

Adapter Type: Ethernet 802.3

Adapter Type Id: 0

Description: 3Com EtherLink 10/100 PCI For Complete PC Management NIC (3C905C-TX)

Manufacturer: 3Com

Name: 3Com EtherLink 10/100 PCI For Complete PC Management NIC (3C905C-TX)

Product Name: 3Com EtherLink 10/100 PCI For Complete PC Management NIC (3C905C-TX)

Net Connection ID: Local Area Connection 2

Net Connection Status: 2

PNP Device ID: PCI\VEN_10B7&DEV_9200&SUBSYS_100010B7&REV_78\4&1C660DD6&0&40F0

Service Name: EL90Xbc

NetworkAddresses:

Permanent Address:

AutoSense:

Maximum Number Controlled: 0

Speed:

Maximum Speed:

Zuordnen des Netzwerkverbindungsnamen zu MAC- und IP-Adressen mithilfe zweier Klassen

Es gibt verschiedene Zwecke, zu denen Administratoren die MAC-Adressen (auch als physikalische Adressen bezeichnet) sowie die IP-Adressen von Computern abrufen müssen, um sie auf den Namen der unter Netzwerkverbindungen aufgeführten Adapter zu beziehen. Ipconfig.exe verwendet die Namen der Netzwerkadapter um zwischen den einzelnen Netzwerkadaptern zu unterscheiden, wie in Abbildung 5 gezeigt.

Das Zuordnen von MAC- und IP-Adressen entspricht dem Teil des IP-Routingprozesses, der vom ARP (Address Resolution Protocol) durchgeführt wird. Sie können die sich ergebenden Zuordnungstabellen von IP-Adressen zu MAC-Adressen mithilfe des Befehlszeilentools Arp.exe anzeigen. Abbildung 5 bietet ein Beispiel der Ausgabe, die durch Ausführen des Befehls arp -a erzeugt wird.

Figure 5   Arp.exe output

Abbildung 5 Ausgabe von "Arp.exe"
Bild maximieren

Sie müssen Eigenschaften entsprechender Instanzen von Win32_NetworkAdapterConfiguration (MACAddress und IPAddress) und Win32_NetworkAdapter (NetConnectionID und AdapterType) abrufen, um WMI zum Verbinden von MAC- und IP-Adressen mit Netzwerkadapternamen und -typen zu verwenden. Die Eigenschaft NetConnectionID von Win32_NetworkAdapter ist nur unter Windows XP und Windows Server 2003 verfügbar.

Damit Sie die spezifischen Instanzen der einzelnen Klassen finden, die einander entsprechen, können Sie den Schlüsselkennzeichner verwenden, um Schlüsseleigenschaften der einzelnen Klasse zu ermitteln. Schlüsseleigenschaften (es können mehrere vorhanden sein) bieten zusammengenommen einen eindeutigen Verweis für die einzelnen Klasseninstanzen und sind Teil des Namespace-Handles einer Instanz. Sie entsprechen ein wenig dem Schlüsselfeld in einer Datenbank. Das WMI SDK oder Wbemtest.exe (das WMI-Testtool, das in allen Versionen von Windows enthalten ist, die WMI einbeziehen) können Ihnen mitteilen, welche Eigenschaft(en) einer Klasse als Schlüssel gelten.

In Tabelle 2 werden die Schlüsseleigenschaften für die beiden WMI-Netzwerkadapterklassen angezeigt.

Tabelle 2 Schlüsseleigenschaften für WMI-Netzwerkadapterklassen

KlasseSchlüsseleigenschaft

Win32_NetworkAdapterConfiguration

Index

Win32_NetworkAdapter

DeviceID

Durch Verwenden einer dieser Schlüssel können Sie Instanzen beider Klassen vergleichen. Im folgenden Beispiel wird die Eigenschaft Get von SWbemServices verwendet, um die Instanz von Win32_NetworkAdapter abzurufen, dessen Eigenschaft DeviceID der Eigenschaft Index einer bestimmten Instanz von Win32_NetworkAdapterConfiguration entspricht.

Getncmacip.vbs zeigt den Netzwerkverbindungsnamen (oder die Indexnummer für Clients, die ältere Versionen des Betriebssystems als Windows XP verwenden), die MAC-Adresse, IP-Adressen und Subnetzmasken für IP-aktivierte Netzwerkschnittstellen an. Die Konfiguration eines Netzwerkadapters kann mehrere IP-Adressen und Subnetze aufweisen. Das Skript erhält Eigenschaften von entsprechenden Instanzen von Win32_NetworkAdapter und Win32_NetworkAdapterConfiguration, indem die direkte Korrelation zwischen Win32_NetworkAdapter.DeviceID und Win32_NetworkAdapterConfiguration.Index verwendet wird.

Das Skript zeigt eine einfachere Methode als die Funktion GetNetConnectionID() in Ipsettings.vbs um zu ermitteln, ob die Eigenschaft NetConnectionID verfügbar ist. Anstatt die Betriebssysstemversion zu prüfen, um zu ermitteln, ob es sich um Windows XP handelt (wodurch sichergestellt ist, dass Win32_NetworkAdapter.NetConnectionID verfügbar ist), wird einfach versucht, die Eigenschaft NetConnectionID abzurufen. Wenn ein Fehler zurückgegeben wird, verwendet das Skript stattdessen die Eigenschaft Win32_NetworkAdapterConfiguration.Index.

Schritte zur Skripterstellung

Listing 9 ruft die IP-Adressen und Subnetzmasken für jeden Netzwerkadapter eines einzelnen Computers ab.

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_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.

4.

Führen Sie für jede Netzwerkadapterkonfiguration in der Auflistung die folgenden Aufgaben aus.

5.

Verwenden Sie die Methode Get des Objekts objWMIService, um die Instanz von Win32_NetworkAdapter zu ermitteln, dessen Eigenschaft DeviceID der Eigenschaft Index von Win32_NetworkAdapterConfiguration entspricht.

6.

Zeigen Sie die Eigenschaften AdapterType und NetConnectionID der aktuellen Instanz von Win32_NetworkAdapter an.

Wenn ein Fehler auftritt, ist die Eigenschaft NetConnectionID nicht vorhanden (diese Eigenschaft ist neu in Windows XP und Windows Server 2003). Wechseln Sie also zur Anzeige der Eigenschaft Index von Win32_NetworkAdapterConfiguration, um den aktuellen Netzwerkadapter zu identifizieren.

7.

Zeigen Sie die Eigenschaft Description von Win32_NetworkAdapterConfiguration und die Eigenschaft MACAddress von Win32_NetworkAdapter an.

8.

Zeigen Sie die Eigenschaften IPAddress und IPSubnet von Win32_NetworkAdapterConfiguration an.

Listing 9 Getncmacip.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
On Error Resume Next

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

 WScript.Echo VbCrLf & "MAC & IP Addresses & Subnet Masks"

 For Each objNicConfig In colNicConfigs

   Set objNic = objWMIService.Get _
   ("Win32_NetworkAdapter.DeviceID=" & objNicConfig.Index)

   WScript.Echo VbCrLf & "  " & objNic.AdapterType & " " & _
   objNic.NetConnectionID
  If Err Then
    WScript.Echo VbCrLf & "  Network Adapter " & objNicConfig.Index
  End If

   WScript.Echo "    " & objNicConfig.Description & VbCrLf 
  WScript.Echo "    MAC Address:" & VbCrLf & _
   "        " & objNic.MACAddress
  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>getncmacip.vbs

MAC & IP Addresses & Subnet Masks

Ethernet 802.3 Local Area Connection

Intel(R) PRO/1000 MT Network Connection - Packet Scheduler Miniport

MAC Address:

00:0D:56:15:ED:B7

IP Address(es):

0.0.0.0

Subnet Mask(s):

Ethernet 802.3 Local Area Connection 2

3Com EtherLink 10/100 PCI For Complete PC Management NIC (3C905C-TX) - Packet Scheduler Miniport

MAC Address:

00:0A:5E:3D:E3:70

IP Address(es):

192.168.1.2

Subnet Mask(s):

255.255.255.0

Verwenden von Verknüpfungsklassen zum Abrufen von korrelierenden Daten

Eine weitere Möglichkeit zum Abrufen von Daten verwandter Instanzen von Win32_NetworkAdapterConfiguration und Win32_NetworkAdapter ist die Verwendung der Verknüpfungsklasse, Win32_NetworkAdapterSetting. In diesem Fall handelt es sich bei den zu korrelierenden Eigenschaften um NetConnectionID und MACAddress von Win32_NetworkAdapter und die Eigenschaften IPAddress und IPSubnet von Win32_NetworkAdapterConfiguration.

Abbildung 6 veranschaulicht, wie die Verknüpfungsklasse Win32_NetworkAdapterSetting dazu verwendet wird, um Daten von verwandten Instanzen dieser beiden Klassen abzurufen. In diesem Beispiel wird eine ASSOCIATORS OF-Abfrage mit der Methode ExecQuery von SWbemServices verwendet, um Eigenschaften der beiden Klassen zu verknüpfen. ASSOCIATORS OF ist ein Schlüsselwort von WQL (WMI Query Language).

Figure 6   Correlating Data by Using Win32_NetworkAdapterSetting

Abbildung 6 Korrelieren von Daten mithilfe von "Win32_NetworkAdapterSetting"
Bild maximieren

Zuordnen des Netzwerkverbindungsnamen zu IP-Adressen mithilfe einer Verknüpfungsklasse

Getncmacip-assoc.vbs zeigt den Netzwerkverbindungsnamen (oder die Indexnummer für Clients, die ältere Versionen des Betriebssystems als Windows XP verwenden), die MAC-Adresse, IP-Adressen und Subnetzmasken für IP-aktivierte Netzwerkschnittstellen an. Es verwendet die Verknüpfungsklasse Win32_NetworkAdapterSetting, um Eigenschaften von Win32_NetworkAdapterConfiguration und Win32_NetworkAdapter zu korrelieren. Die Konfiguration eines Netzwerkadapters kann mehrere IP-Adressen und Subnetze aufweisen.

Schritte zur Skripterstellung

Listing 10 ruft die Eigenschaften des TCP/IP-Netzwerkclients eines einzelnen Computers ab.

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_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.

4.

Verwenden Sie für jede Netzwerkadapterkonfiguration in der Auflistung die Methode ExecQuery, um die Klasse Win32_NetworkAdapterConfiguration mit einer ASSOCIATORS OF-Abfrage abzufragen. Die Abfrage gibt eine Auflistung der Instanzen von Win32_NetworkAdapter zurück.

Eine ASSOCIATORS OF-Abfrage verwendet die Verknüpfungsklasse Win32_NetworkAdapterSetting, um die Instanzen von Win32_NetworkAdapterConfiguration (durch die Eigenschaft Index gekennzeichnet) mit den entsprechenden Instanzen der Verknüpfungsklasse Win32_NetworkAdapter zu korrelieren.

5.

Führen Sie eine Iteration durch die Auflistung der Instanzen von Win32_NetworkAdapter durch, die die Eigenschaften AdapterType, NetConnectionID und MACAddress anzeigt.

Wenn ein Fehler beim Anzeigen der Eigenschaft NetConnectionID auftritt, zeigen Sie stattdessen den Index der entsprechenden Instanz von Win32_NetworkAdapterConfiguration an.

6.

Zeigen Sie die Eigenschaften IPAddress und IPSubnet für die Instanz von Win32_NetworkAdapterConfiguration an, die mit der aktuellen Instanz von Win32_NetworkAdapter verknüpft ist.

Listing 10 Getncmacip-assoc.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
On Error Resume Next

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

 WScript.Echo VbCrLf & "MAC & IP Addresses & Subnet Masks"

 For Each objNicConfig In colNicConfigs

   Set colNics = objWMIService.ExecQuery _
   ("ASSOCIATORS OF " & "{Win32_NetworkAdapterConfiguration.Index='" & _
   objNicConfig.Index & "'}" & _
   " WHERE AssocClass=Win32_NetworkAdapterSetting")

   For Each objNic in colNics

     WScript.Echo VbCrLf & "  " & objNic.AdapterType & " " & _
     objNic.NetConnectionID
    If Err Then
      WScript.Echo VbCrLf & "  Network Adapter " & objNicConfig.Index
    End If

     WScript.Echo "    " & objNicConfig.Description & VbCrLf 
    WScript.Echo "    MAC Address:" & VbCrLf & _
     "        " & objNic.MACAddress
    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

 Next

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

C:\scripts>getncmacip-assoc.vbs

MAC & IP Addresses & Subnet Masks

Ethernet 802.3 Local Area Connection

Intel(R) PRO/1000 MT Network Connection - Packet Scheduler Miniport

MAC Address:

00:0D:56:15:ED:B7

IP Address(es):

0.0.0.0

Subnet Mask(s):

Ethernet 802.3 Local Area Connection 2

3Com EtherLink 10/100 PCI For Complete PC Management NIC (3C905C-TX) - Packet Scheduler Miniport

MAC Address:

00:0A:5E:3D:E3:70

IP Address(es):

192.168.1.2

Subnet Mask(s):

255.255.255.0

Anzeigen von für den Netzwerkverbindungsnamen gefilterten Einstellungen

Nachdem Ihnen jetzt bekannt ist, wie Sie mit einem einzelnen Skript verwandte Eigenschaften von Win32_NetworkAdapterConfiguration und Win32_NetworkAdapter abrufen, wird hier eine weitere Möglichkeit vorgestellt, wie Sie diese Funktion verwenden können. Wenn nur die Daten eines Netzwerkadapters erforderlich sind, können Sie über Netzwerkverbindungen eine Verbindung über seinen Namen herstellen – eine leichter zu merkende Kennung als die Indexnummer – und eine Einstellung von diesem Netzwerkadapter abrufen. Sie können dies über die Verwendung der Eigenschaft NetConnectionID von Win32_NetworkAdapter erreichen.

Die Eigenschaft NetConnectionID ist nur unter Windows XP und Windows Server 2003 verfügbar. Wenn die Eigenschaft nicht gefunden wird, erzeugt das Skript einen Laufzeitfehler, der durch Prüfen des VBScript-Objekts Err behandelt wird. Wenn die Eigenschaft Number des Err-Objekts einen anderen Wert als "0" hat, ist ein Fehler aufgetreten. In dem Fall zeigt das Skript eine Fehlermeldung an und wird abgebrochen.

Schritte zur Skripterstellung

Listing 11 ruft die Eigenschaften des TCP/IP-Netzwerkclients eines einzelnen Computers ab.

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 Methode ExecQuery zum Abfragen der Klasse Win32_NetworkAdapter, wobei die WQL-Abfrage mit einer WHERE-Klausel nach einer bestimmten NetConnectionID gefiltert wird.

Die zurückgegebene Auflistung besteht aus einer Instanz, die den Netzwerkadapter mit dieser bestimmten NetConnectionID darstellt.

4.

Überprüfen Sie, ob die NetConnectionID gefunden wurde. Ist dies der Fall, fahren Sie mit den Aufgaben im Skript fort.

5.

Für jeden Netzwerkadapter in der Auflistung führen Sie mithilfe einer ASSOCIATORS OF-Abfrage eine Korrelation jeder Netzwerkadapterkonfiguration mit einem Netzwerkadapter durch. Dazu müssen Sie die Eigenschaft DeviceID von Win32_NetworkAdapter verwenden, die die Schlüsseleigenschaft für diese Klasse darstellt (Zeilen 12–15).

6.

Zeigen Sie für jeden Netzwerkadapter und die zugehörige Konfiguration den Adaptertyp und die IP-Adressen an.

7.

Wenn die bestimmte NetConnectionID nicht gefunden wurde, zeigen Sie eine Meldung an.

Listing 11 Getncip.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
On Error Resume Next

 strComputer = "."

strNetConn = "Local Area Connection"
 Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNics = objWMIService.ExecQuery("SELECT * FROM " & _
 "Win32_NetworkAdapter WHERE NetConnectionID = '" & strNetConn & "'")

 If colNics.Count > 0 Then
  For Each objNic in colNics
    Set colNicConfigs = objWMIService.ExecQuery ("ASSOCIATORS OF " & _
     "{Win32_NetworkAdapter.DeviceID='" & objNic.DeviceID & "'}" & _
     " WHERE AssocClass=Win32_NetworkAdapterSetting")
    For Each objNicConfig In colNicConfigs
      WScript.Echo VbCrLf & "  " & objNic.AdapterType & " " & _
       objNic.NetConnectionID
      If Not IsNull(objNicConfig.IPAddress) Then
        For Each strIPAddress in objNicConfig.IPAddress
          Wscript.Echo "    IP Address: " &  strIPAddress
        Next
      End If
    Next
  Next
Else
  WScript.Echo "Unable to find NetconnectID named '" & strNetConn & "'." & _
   VbCrLf & "If Windows 2000 or earlier, NetConnectionID property unavailable."
End If

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

C:\scripts>getncip.vbs

Ethernet 802.3 Local Area Connection

IP Address: 192.168.0.213

Anzeigen erweiterter IP-Konfigurationsdaten

In Windows XP können Sie detailliertere TCP/IP-Clienteinstellung für eine bestimmte Netzwerkverbindung bequem über das Dialogfeld Netzwerkverbindungsdetails abrufen.

So rufen Sie ausführliche TCP/IP-Einstellungen für eine bestimmte Netzwerkverbindung ab

1.

Öffnen Sie die Systemsteuerung, und doppelklicken Sie auf Netzwerkverbindungen.

2.

Klicken Sie im Dialogfeld Netzwerkverbindungen mit der rechten Maustaste auf eine bestimmte Netzwerkverbindung, und klicken Sie anschließend auf Status.

3.

Klicken Sie auf der Registerkarte Netzwerkunterstützung auf Details, um die Einstellungen der Netzwerkverbindung anzuzeigen.

Abbildung 7 zeigt ein Beispiel für das Dialogfeld Netzwerkverbindungsdetails.

Figure 7   Network Connection Details Dialog Box

Abbildung 7 Dialogfeld "Netzwerkverbindungsdetails"
Bild maximieren

Verwenden von "Ipconfig.exe" zum Anzeigen erweiterter Konfigurationsdaten

Sie können die Option /all mit dem Befehlszeilentool Ipconfig.exe verwenden, um eine ausführlichere Auflistung der Einstellungen abzurufen, als im Dialogfeld Netzwerkverbindungsdetails enthalten. Abbildung 8 zeigt eine Bildschirmausgabe, wie sie durch den Befehl ipconfig /all erzeugt wird.

Figure 8   Using Ipconfig.exe /all to Display Network Data

Abbildung 8 Verwenden von "Ipconfig.exe /all" zum Anzeigen von Netzwerkdaten
Bild maximieren

Verwenden eines Skripts zum Anzeigen erweiterter Konfigurationsdaten

WMI bietet die Funktionalität, um fast alle Funktionen des Befehls ipconfig /all zusammen mit vielen anderen Einstellungen zu reproduzieren. Neben Win32_NetworkAdapterConfiguration verwendet Ipconfig.vbs auch StdRegProv, eine im WMI-Provider der Systemregistrierung enthaltene Klasse, um einige Einstellungen aus der Registrierung zu extrahieren.

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.

Schritte zur Skripterstellung

Listing 12 ruft einen umfangreichen Satz mit Einstellungen von TCP/IP-Netzwerkclients ab, der dem durch Ipconfig.exe /all von einem einzelnen Computer abgerufenen Satz entspricht. Das Skript verwendet zwei Funktionen: Eine konvertiert die zurückgegebenen Daten in ein lesbareres Format und die andere Funktion gibt die Version des Betriebssystems zurück.

Das Skript muss dazu folgende Aufgaben durchführen:

1.

Aufrufen von "On Error Resume Next", damit das Skript nicht durch auftretende Fehler abgebrochen wird.

2.

Zuordnen von Werten zu Konstanten und Variablen, die verwendet werden sollen.

3.

Verwenden eines Aufrufs von GetObject, um im WMI-Namespace root\default eine Verbindung zur Klasse StdRegProv herzustellen.

4.

Abrufen globaler Einstellungen aus der Registrierung mithilfe der Methoden GetStringValue und GetDWORDValue von StdRegProv. Diese Einstellungen gelten für alle Netzwerkadapter.

Diese Methoden geben einen Wert über einen Ausgabeparameter zurück (hierbei handelt es sich um den jeweils letzten beim Aufruf der Methode angegebenen Parameter).

5.

Verwenden einer Select Case-Anweisung, um den vom Ausgabeparameter dwNodeType zurückgegebenen Wert zu decodieren.

6.

Verwenden einer If ... ElseIf ... Else-Anweisung, um den vom Ausgabeparameter dwlPRouting zurückgegebenen Wert zu decodieren.

7.

Verwenden eines Aufrufs von GetObject, um die Verbindung zum WMI-Namespace root\cimv2 herzustellen.

8.

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.

9.

Abrufen des Werts von DNSEnabledForWINSResolution, wobei es sich um eine globale Einstellung handelt, die für jeden Netzwerkadapter gleich ist. Verwenden einer If ... ElseIf ... Else-Anweisung, um den von DNSEnabledForWINSResolution zurückgegebenen booleschen Wert zu decodieren.

10.

Anzeigen der abgerufenen globalen Einstellungen.

11.

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

12.

Aufrufen der Funktion GetOSVer, die die Eigenschaft Version von Win32_OperatingSystem abruft. Zuordnen des zurückgegebenen Werts zu einer Variablen.

13.

Durchführen einer Iteration durch jede von der Abfrage zurückgegebene Netzwerkadapterkonfiguration in der Auflistung.

14.

Abrufen der Eigenschaft Index für die Instanz und verwenden der Methode Get, um die Instanz von Win32_NetworkAdapter zurückzugeben, dessen Eigenschaft DeviceID dem Wert der Eigenschaft Index entspricht.

15.

Abrufen der adapterabhängigen Eigenschaften von Win32_NetworkAdapter und Win32_NetworkAdapterConfiguration, die durch Ipconfig.exe /all angezeigt werden.

16.

Wenn die Eigenschaft AdapterType nicht verfügbar ist, "Netzwerk" als Adaptertyp anzeigen.

17.

Wenn für die Betriebssystemversion Folgendes gilt:

Eine höhere Version als 5, die auf Windows XP oder Windows Server 2003 hinweist, dann die Eigenschaft NetConnectionID von Win32_NetworkAdapter abrufen.

Version 5 oder niedriger, dann die Eigenschaft Index von Win32_NetworkAdapterConfiguration als Kennung des Netzwerkadapters verwenden.

18.

Abrufen und Anzeigen anderer Eigenschaften der beiden Klassen.

19.

Wenn die Eigenschaft ein Array zurückgibt, überprüfen, dass der Wert ungleich Null ist. Wenn der Rückgabewert ungleich Null ist, jedes durch Leerzeichen getrennte Arrayelement einer Zeichenfolge zuweisen und diese anzeigen.

20.

Wenn die Eigenschaft einen Wert im Format WMI DATETIME zurückgibt, die Funktion WMIDateStringToDate aufrufen und den DATETIME-Wert übergeben.

Diese Funktion konvertiert den Wert in eine lesbarere Zeichenfolge, die das Datum und die Uhrzeit darstellt.

Listing 12 Ipconfig.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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
On Error Resume Next


  Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
strKeyPath1 = "SYSTEM\CurrentControlSet\Services\Tcpip\Parameters"
strKeyPath2 = "SYSTEM\CurrentControlSet\Services\NetBT\Parameters"
strHostEntry = "Hostname"
strDomainEntry = "Domain"
strNodeEntry = "DhcpNodeType"
strRoutingEntry = "IPEnableRouter"

 Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
 strComputer & "\root\default:StdRegProv")
objReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath1,strHostEntry,strHostname
objReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath1,strDomainEntry,strDomain
objReg.GetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath2,strNodeEntry,dwNodeType
objReg.GetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath1,strRoutingEntry,dwIPRouting

 Select Case dwNodeType
  Case 4 strNodeType = "Mixed"
  Case 8 strNodeType = "Hybrid"
  Case Else strNodeType = dwNodeType
End Select
If dwIPRouting = 0 Then
  strIPRouting = "No"
ElseIf dwIPRouting = 1 Then
  strIPRouting = "Yes"
Else
  strIPRouting = "?"
End If

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

 Set colFirstNicConfig = objWMIService.ExecQuery _
 ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
For Each objFirstNicConfig In colFirstNicConfig
  strDnsWins = objFirstNicConfig.DNSEnabledForWINSResolution
Next
If strDnsWins = False Then
  strWinsProxy = "No"
ElseIf strDnsWins = True Then
  strWinsProxy = "Yes"
Else
  strWinsProxy = "?"
End If

 ' Display global settings.

 WScript.Echo VbCrLf & "Windows IP Configuration" & VbCrLf
WScript.Echo "        Host Name . . . . . . . . . . . . : " & strHostname
WScript.Echo "        Primary DNS Suffix  . . . . . . . : " & strDomain
WScript.Echo "        Node Type . . . . . . . . . . . . : " & strNodeType
WScript.Echo "        IP Routing Enabled. . . . . . . . : " & strIPRouting
WScript.Echo "        WINS Proxy Enabled. . . . . . . . : " & strWinsProxy
WScript.Echo "        DNS Suffix Search List. . . . . . : " & strDomain

 Set colNicConfigs = objWMIService.ExecQuery _
  ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
sngOsVer = GetOsVer

 ' Display per-adapter settings.

 For Each objNicConfig In colNicConfigs
  intIndex = objNicConfig.Index
  Set objNic = objWMIService.Get("Win32_NetworkAdapter.DeviceID=" & intIndex)

   strAdapterType = objNic.AdapterType
  If IsEmpty(strAdapterType) Or IsNull(strAdapterType) Or _
   (strAdapterType = "") Then
    strAdapterType = "Network"
  End If

   If sngOsVer > 5 Then
    strNetConn = objNic.NetConnectionID
  Else
    strNetConn = intIndex
  End If

   WScript.Echo VbCrLf & strAdapterType & " adapter " & strNetConn
  WScript.Echo "        Connection-specific DNS Suffix  . : " & _
   objNicConfig.DNSDomain
  WScript.Echo "        Description . . . . . . . . . . . : " & _
   objNicConfig.Description
  WScript.Echo "        Physical Address. . . . . . . . . : " & _
   objNicConfig.MACAddress
  WScript.Echo "        DHCP Enabled. . . . . . . . . . . : " & _
   objNicConfig.DHCPEnabled
'  WScript.Echo "        Autoconfiguration Enabled . . . .: " & objNicConfig.?

   strIPAddresses = ""
  If Not IsNull(objNicConfig.IPAddress) Then
    For Each strIPAddress In objNicConfig.IPAddress
      strIPAddresses = strIPAddresses & strIPAddress & " "
    Next
  End If
  WScript.Echo "        IP Address. . . . . . . . . . . . : " & strIPAddresses
  strIPSubnets = ""
  If Not IsNull(objNicConfig.IPSubnet) Then
    For Each strIPSubnet In objNicConfig.IPSubnet
      strIPSubnets = strIPSubnets & strIPSubnet & " "
    Next
  End If
  WScript.Echo "        Subnet Mask . . . . . . . . . . . : " & strIPSubnets
  strDefaultIPGateways = ""
  If Not IsNull(objNicConfig.DefaultIPGateway) Then
    For Each strDefaultIPGateway In objNicConfig.DefaultIPGateway
      strDefaultIPGateways = strDefaultIPGateways & strDefaultIPGateway & " "
    Next
  End If
  WScript.Echo "        Default Gateway . . . . . . . . . : " & _
   strDefaultIPGateways
  WScript.Echo "        DHCP Server . . . . . . . . . . . : " & _
   objNicConfig.DHCPServer
  strDNSServerSearchOrder = ""
  If Not IsNull(objNicConfig.DNSServerSearchOrder) Then
    For Each strDNSServer In objNicConfig.DNSServerSearchOrder
      strDNSServerSearchOrder = strDNSServerSearchOrder & VbCrLf & _
      "                                            " & strDNSServer
    Next
  End If
  WScript.Echo "        DNS Servers . . . . . . . . . . . :" & _
   strDNSServerSearchOrder
  If Not IsNull(objNicConfig.WINSPrimaryServer) Then
    WScript.Echo "        Primary WINS Server . . . . . . . : " & _
     objNicConfig.WINSPrimaryServer
  End If
  If Not IsNull(objNicConfig.WINSSecondaryServer) Then
    WScript.Echo "        Secondary WINS Server . . . . . . : " & _
     objNicConfig.WINSSecondaryServer
  End If
  If objNicConfig.DHCPEnabled Then
    dtmRawLeaseObtainedDate = objNicConfig.DHCPLeaseObtained
    strFormattedLeaseObtainedDate = WMIDateToString(dtmRawLeaseObtainedDate)
    WScript.Echo "        Lease Obtained. . . . . . . . . . : " & _
     strFormattedLeaseObtainedDate
    dtmRawLeaseExpiresDate = objNicConfig.DHCPLeaseExpires
    strFormattedLeaseExpiresDate = WMIDateToString(dtmRawLeaseExpiresDate)
    WScript.Echo "        Lease Expires . . . . . . . . . . : " & _
    strFormattedLeaseExpiresDate
  End If
Next

 '******************************************************************************
' Function: WMIDateStringToDate(dtmDate)
' Converts WMI date to string.
'******************************************************************************

 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

 '******************************************************************************
' Function: GetOsVer
' Gets the operating system version number.
'******************************************************************************

 Function GetOsVer
  Set colOperatingSystems = objWMIService.ExecQuery _
   ("Select * from Win32_OperatingSystem")
  For Each objOperatingSystem In colOperatingSystems
    GetOSVer = CSng(Left(objOperatingSystem.Version, 3))
  Next
End Function

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

C:\scripts>ipconfig.vbs

Windows IP Configuration

Host Name . . . . . . . . . . . . . . : client1

Primary DNS Suffix . . . . . . . : fabrikam.com

Node Type . . . . . . . . . . . . . . : Hybrid

IP Routing Enabled. . . . . . . . : No

WINS Proxy Enabled. . . . . . . : Yes

DNS Suffix Search List. . . . . . : fabrikam.com

Ethernet 802.3 adapter Local Area Connection

Connection-specific DNS Suffix . :

Description . . . . . . . . . . . : 3Com 3C920 Integrated Fast Ethernet

Controller (3C905C-TX Compatible) - Packet Scheduler Miniport

Physical Address. . . . . . . . . : 00:B0:D0:23:70:37

DHCP Enabled. . . . . . . . . . . : True

IP Address. . . . . . . . . . . . : 192.168.0.12

Subnet Mask . . . . . . . . . . . : 255.255.255.0

Default Gateway . . . . . . . . . : 192.168.0.1

DHCP Server . . . . . . . . . . . : 192.168.0.1

DNS Servers . . . . . . . . . . . :

192.168.0.1

Primary WINS Server . . . . . . . : 192.168.0.1

Secondary WINS Server . . . . . . : 192.168.0.2

Lease Obtained. . . . . . . . . . . . . : 6/2/2004 4:31:19 PM

Lease Expires . . . . . . . . . . . . . : 6/12/2004 7:31:19 PM

Tools für grundlegende TCP/IP-Netzwerke auf Clients

Die Tabellen in diesem Abschnitt führen die verfügbaren Befehlzeilen- und Skripterstellungstools sowie die Registrierungsschlüssel zum Abrufen und Anzeigen grundlegender Netzwerkdaten von Clients auf. Tabelle 3 enthält die Befehlszeilentools zum Anzeigen der grundlegenden TCP/IP-Netzwerke auf Clients und weist darauf hin, wo diese Tools zu finden sind.

Tabelle 3 Befehlszeilentools für grundlegende TCP/IP-Netzwerke auf Clients

ToolVerfügbar in

Arp.exe

Windows-Betriebssysteme1

Getmac.exe: GetMAC

Windows 2000 Resource Kit

Hostname.exe

Windows-Betriebssysteme

Ipconfig.exe

Windows-Betriebssysteme

Listadapters.vbs

Windows 2000 Resource Kit

Netconnections.vbs

Windows 2000 Resource Kit

Netipconfig.pl

Windows 2000 Resource Kit

Netipfilteringconfig.pl

Windows 2000 Resource Kit

Net.exe

Windows-Betriebssysteme

Netset.exe

Windows 2000 Resource Kit

Netsh.exe

Windows-Betriebssysteme

Netstat.exe

Windows-Betriebssysteme

Networkprotocol.vbs

Windows 2000 Resource Kit

Ping.exe

Windows 2000 Resource Kit

Protocolbinding.vbs

Windows 2000 Resource Kit

Subnet_op.vbs

Windows 2000 Resource Kit

Timezone.exe: Daylight Saving Time Update Utility

Windows 2000 Resource Kit

Tzedit.exe: Time Zone Editor

Windows 2000 Resource Kit -- GUI-Tool

Wsremote.exe

Windows XP-Supporttool

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

Tabelle 4 enthält die WSH-Objekte und WMI-Klassen zum Anzeigen der grundlegenden TCP/IP-Netzwerke auf Clients und bietet auch Informationen zur Verfügbarkeit.

Tabelle 4 WSH-Objekte und WMI-Klassen für grundlegende TCP/IP-Netzwerke auf Clients

TechnologieObjekt oder KlasseHinweise/Verfügbar in

WSH

WshController

WshNetwork

WshShell

 

WMI

Win32_ComputerSystem

 

WMI

Win32_NetworkAdapterConfiguration

 

WMI

Win32_NetworkAdapter

 

WMI

Win32_NetworkAdapterSetting

Verknüpfungsklasse, die Win32_NetworkAdapter und Win32_NetworkAdapterConfiguration verknüpft

WMI

Win32_NetworkClient

 

WMI

Win32_NetworkConnection

 

WMI

Win32_NetworkProtocol

 

WMI

Win32_NTDomain

Nur Windows XP und Windows Server 2003

WMI

Win32_OperatingSystem

 

WMI

Win32_PingStatus

Nur Windows XP und Windows Server 2003

WMI

Win32_ProtocolBinding

Verknüpfungsklasse, die Win32_NetworkProtocol, Win32_SystemDriver und Win32_NetworkAdapter verknüpft

In Tabelle 5 werden die Registrierungsschlüssel zum Anzeigen der grundlegenden TCP/IP-Netzwerkeinstellungen auf Clients aufgeführt.

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 5 Registrierungsunterschlüssel für grundlegende TCP/IP-Netzwerke auf Clients

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

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBIOS

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netman


**
**