Automatisieren von TCP/IP-Netzwerken auf Clients

Teil 7: Erstellen von Skripts für andere Netzwerkprotokolle

Veröffentlicht: 07. Dez 2004

In diesem Abschnitt wird die Verwendung von WMI für die Skriptverwaltung zahlreicher TCP/IP- und zugehöriger Protokolle auf Clients erörtert. Dies umfasst TCP/IP-Filter, routingbezogene ARP-, IP- und TCP-Einstellungen, IPX-Einstellungen (Internetwork Packet Exchange) sowie die Aufzählung von auf Hosts ausgeführten Netzwerkprotokollen. Anhand der Beispielskripts werden weitere Eigenschaften und Methoden der Klasse Win32_NetworkAdapterConfiguration aufgezeigt, und es wird die neue WMI-Klasse Win32_NetworkProtocol vorgestellt.

In diesem Abschnitt werden die Schritte der Skripterstellung und Beispielskripts für diese protokollbasierten Aufgaben bereitgestellt:

Verwalten von TCP/IP-Filtereinstellungen

Verwalten weiterer TCP/IP-Einstellungen

Dies umfasst Abschnitte über das Verwalten und Abrufen von ARP-Einstellungen, TCP-Einstellungen und IP-Paketeinstellungen.

Verwalten von IPX

Auflisten der Netzwerkprotokolle auf einem Computer

Auf dieser Seite
Verwalten von TCP/IP-FiltereinstellungenVerwalten von TCP/IP-Filtereinstellungen
Verwalten weiterer TCP/IP-EinstellungenVerwalten weiterer TCP/IP-Einstellungen
Verwalten von IPXVerwalten von IPX
Auflisten der Netzwerkprotokolle auf einem ComputerAuflisten der Netzwerkprotokolle auf einem Computer
Tools zum Erstellen von Skripts für andere NetzwerkprotokolleTools zum Erstellen von Skripts für andere Netzwerkprotokolle

Verwalten von TCP/IP-Filtereinstellungen

Bekanntermaßen treten leider immer mehr Netzwerksicherheitsrisiken wie Viren und Würmer auf. In diesem Zusammenhang hat Internet Protocol Security (IPSec – Internetprotokollsicherheit) als integrierte Gruppe interoperabler, kryptografiebasierter Sicherheitsdienste für den Datenverkehr auf Netzwerkebene zwischen TCP/IP-Knoten zunehmend an Akzeptanz gewonnen. Informationen zur Basisarchitektur von IPSec finden Sie in dem von der IETF (Internet Engineering Task Force) bereitgestellten Dokument, und zwar in RFC 2401, " Security Architecture for the Internet Protocol ", unter http://go.microsoft.com/fwlink/?LinkId=24797 (nur auf Englisch verfügbar).

WMI ermöglicht mithilfe mehrerer Eigenschaften und Methoden der Klasse Win32_NetworkAdapterConfiguration das Erstellen von Skripts zum Abrufen und Konfigurieren von TCP/IP-Clienteinstellungen, die sich auf einen Aspekt von IPSec, auf TCP/IP-Filter, beziehen.

Der erste Schritt beim Implementieren von TCP/IP-Filtern mit WMI besteht darin, die Filter zu aktivieren. Legen Sie hierzu die IPFilterSecurityEnabled-Eigenschaft mithilfe der EnableIPFilterSec-Methode auf True fest. Nach dem Aktivieren der TCP/IP-Filter können Sie die zu filternden TCP- und UDP-Ports (User Datagram Protocol) festlegen und bestimmte Protokolle über IP zulassen oder ausschließen. Weitere Informationen zu TCP/IP-Filtern finden Sie im WMI-SDK in den Themen zu den Methoden "EnableIPSec" und "EnableIPFilterSec" der Klasse "Win32_NetworkAdapterConfiguration" unter http://go.microsoft.com/fwlink/?LinkId=29991 (nur auf Englisch verfügbar).

caution.gif Vorsicht
Stellen Sie vor dem Ändern dieser Einstellungen sicher, dass die neue Konfiguration mit den in Ihrem Netzwerk implementierten TCP/IP-Filtern übereinstimmt. Überprüfen Sie derartige Änderungen grundsätzlich zuerst in einem Testnetzwerk, bevor Sie diese in einer Produktivumgebung vornehmen.

Beachten Sie, dass die zwei TCP/IP-Filtermethoden EnableIPSec und EnableIPFilterSec nicht mit der Funktionsteilung zwischen den zwei Einstellungen IP-Sicherheit und TCP/IP-Filter übereinstimmten (Sie finden die Einstellungen unter Windows 2000 im Dialogfeld Erweiterte TCP/IP-Einstellungen auf der Registerkarte Optionen. Unter Windows XP und Windows Server 2003 wird auf der Registerkarte Optionen nur eine Option, TCP/IP-Filterung, aufgeführt - siehe Abbildung 13.)

07ATNC01.gif

Abbildung 13 Verwalten der TCP/IP-Filterung über die Windows-Benutzeroberfläche
Bild maximieren

In diesem Abschnitt werden zunächst zwei Beispielskripts aufgeführt. Anhand dieser Beispiele wird aufgezeigt, wie Sie diese Methoden separat verwenden. Anschließend wird in diesem Abschnitt ein drittes Skript bereitgestellt, das die Methoden miteinander kombiniert, um aufzuzeigen, wie TCP/IP-Filter aktiviert und Port- und Protokollfilter innerhalb desselben Skripts festgelegt werden (Aufgaben, die Administratoren häufig durchführen möchten). Das Skript prüft zuerst, ob TCP/IP-Filter aktiviert sind. Ist dies nicht der Fall, werden diese aktiviert. Anschließend werden die Filter festgelegt, die den Zugriff für die angegebenen TCP- und UDP-Ports sowie für die angegebenen IP-Protokolle erteilen.

In Tabelle 25 werden die TCP/IP-Filtereigenschaften für die Klasse Win32_NetworkAdapterConfiguration beschrieben.

Tabelle 25 TCP/IP-Filtereigenschaften für die Klasse "Win32_NetworkAdapterConfiguration"

EigenschaftTypBeschreibung

IPFilterSecurityEnabled

Boolean-Wert

TRUE gibt an, dass die IP-Portsicherheit global für alle IP-Netzwerkadapter aktiviert ist und die Sicherheitswerte der einzelnen Netzwerkadapter aktiv sind. Diese Eigenschaft wird mit folgenden Eigenschaften verwendet: IPSecPermitTCPPorts, IPSecPermitUDPPorts und IPSecPermitIPProtocols. FALSE gibt an, dass die IP-Filtersicherheit für alle Netzwerkadapter deaktiviert ist und der gesamte Port- und Protokollverkehr nicht gefiltert wird.

IPSecPermitIPProtocols

Zeichenfolgenarray

Array der Protokolle, die über IP ausgeführt werden können. Die Liste der Protokolle wird mit der EnableIPSec-Methode definiert. Diese Liste ist leer oder enthält numerische Werte. Der Wert 0 gibt an, dass alle Protokolle über Zugriffsrechte verfügen. Eine leere Zeichenfolge gibt an, dass kein Protokoll ausgeführt werden kann, wenn die IPFilterSecurityEnabled-Eigenschaft auf TRUE festgelegt ist.

IPSecPermitTCPPorts

Zeichenfolgenarray

Array der Ports mit Zugriffsberechtigungen für TCP. Die Liste der Protokolle wird mit der EnableIPSec-Methode definiert. Diese Liste ist leer oder enthält numerische Werte. Der Wert 0 gibt an, dass alle Ports über Zugriffsrechte verfügen. Eine leere Zeichenfolge gibt an, dass keinem Port die Zugriffsberechtigung erteilt wurde, wenn die IPFilterSecurityEnabled-Eigenschaft auf TRUE festgelegt ist.

IPSecPermitUDPPorts

Zeichenfolgenarray

Array der Ports mit UDP-Zugriffsberechtigungen (User Datagram Protocol). Die Liste der Protokolle wird mit der EnableIPSec-Methode definiert. Diese Liste ist leer oder enthält numerische Werte. Der Wert 0 gibt an, dass alle Ports über Zugriffsrechte verfügen. Eine leere Zeichenfolge gibt an, dass keinem Port die Zugriffsberechtigung erteilt wurde, wenn die IPFilterSecurityEnabled-Eigenschaft auf TRUE festgelegt ist.

Alle Eigenschaften in der vorstehenden Tabelle sind schreibgeschützt.

In Tabelle 26 werden die TCP/IP-Filtermethoden und die entsprechenden Parameter für die Klasse Win32_NetworkAdapterConfiguration aufgeführt.

Tabelle 26 TCP/IP-Filtermethoden für "Win32_NetworkAdapterConfiguration"

MethodeParameterBeschreibung

EnableIPFilterSec

IPFilterSecurityEnabled – Boolean-Wert

Statische Methode. Aktiviert TCP/IP-Filter global für alle IP-Netzwerkadapter. Wenn die Sicherheit aktiviert ist, können die funktionalen Sicherheitseigenschaften für jeden Netzwerkadapter mit der für Netzwerkadapter spezifischen EnableIPSec-Methode gesteuert werden.

EnableIPSec

IPSecPermitTCPPorts – Zeichenfolgenarray

IPSecPermitUDPPorts – Zeichenfolgenarray

IPSecPermitIPProtocols – Zeichenfolgenarray

Aktiviert TCP/IP-Filter auf einem TCP/IP-aktivierten Netzwerkadapter. Die Ports werden nur geschützt, wenn die IPFilterSecurityEnabled-Eigenschaft in Win32_NetworkAdapterConfiguration auf TRUE festgelegt ist.

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

0 bedeutet: erfolgreicher Abschluss.

1 bedeutet: erfolgreicher Abschluss, Neustart erforderlich.

Zahlen größer als 1 bedeuten, dass ein Problem aufgetreten ist und die Methode nicht abgeschlossen werden konnte. Im WMI-SDK werden die Bedeutungen der Rückgabewerte für diese Methoden aufgeführt.

Das Befehlszeilentool Ipseccmd.exe und der Befehl netsh ipsec stellen umfassendere Funktionen für die Einsatzmöglichkeiten von IPSec bereit.

Anzeigen von TCP/IP-Filtereinstellungen

Zum Abrufen von TCP/IP-Filtereinstellungen stellt die Klasse Win32_NetworkAdapterConfiguration mehrere für Netzwerkadapter spezifische Eigenschaften bereit. IPFilterSecurityEnabled ist jedoch eine globale Eigenschaft, die für alle IP-Netzwerkadapter gilt. Beachten Sie, dass IPFilterSecurityEnabled die veraltete IPPortSecurityEnabled-Eigenschaft ersetzt.

Die Eigenschaften IPSecPermitIPProtocols, IPSecPermitTCPPorts und IPSecPermitUDPPorts geben jeweils Zeichenfolgenarrays zurück, die die Ports oder Protokolle darstellen, denen Zugriffsberechtigungen erteilt wurden. Dabei gibt der Wert 0 an, dass alle Protokolle oder Ports über Zugriffsrechte verfügen, während eine leere Zeichenfolge angibt, dass keinem Port die Zugriffsberechtigung erteilt wurde.

Schritte zur Skripterstellung

In dem Skript in Listing 44 werden die TCP/IP-Filtereinstellungen aller installierten Netzwerkadapter mit den Eigenschaften der Klasse Win32_NetworkAdapterConfiguration angezeigt.

1.

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

2.

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

3.

Verwenden Sie die ExecQuery-Methode zum Abfragen der Klasse Win32_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.

Zeigen Sie für jede Netzwerkadapterkonfiguration in der Auflistung die Indexnummer, die Beschreibung und den Wert für die IPFilterSecurityEnabled-Eigenschaft an.

5.

Wenn die Eigenschaften IPSecPermitIPProtocols, IPSecPermitTCPPorts und IPSecPermitUDPPorts nicht den Wert Null aufweisen, sollten Sie die zurückgegebenen Arrays durchlaufen und die zugehörigen Werte anzeigen.

Listing 44 Ipfiltersettings.vbs

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

 strComputer = "."

 Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNicConfig = objWMIService.ExecQuery _
 ("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")

 For Each objNicConfig in colNicConfig
  WScript.Echo VbCrLf & "Network Adapter " & objNicConfig.Index & _
   VbCrLf & "  " & objNicConfig.Description
  WScript.Echo "    IP Filter Security Enabled: " & _
   objNicConfig.IPFilterSecurityEnabled
  WScript.Echo "    Protocols Permitted over IP:"
  If Not IsNull(objNicConfig.IPSecPermitIPProtocols) Then
    For Each strIPProtocol In objNicConfig.IPSecPermitIPProtocols
      WScript.Echo "      " & strIPProtocol
    Next
  End If
  WScript.Echo "    TCP Ports Permitted:"
  If Not IsNull(objNicConfig.IPSecPermitTCPPorts) Then
    For Each strTCPPort In objNicConfig.IPSecPermitTCPPorts
      WScript.Echo "      " & strTCPPort
    Next
  End If
  WScript.Echo "    UDPPorts Permitted:"
  If Not IsNull(objNicConfig.IPSecPermitUDPPorts) Then
    For Each strUDPPort In objNicConfig.IPSecPermitUDPPorts
      WScript.Echo "      " & strUDPPort
    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>ipfiltersettings.vbs

Network Adapter 1

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

Scheduler Miniport

IP Filter Security Enabled: False

Protocols Permitted over IP:

0

TCP Ports Permitted:

0

UDPPorts Permitted:

0

Aktivieren von TCP/IP-Filtern mithilfe von "EnableIPFilterSec"

Die in diesem Skript verwendete statische Methode (EnableIPFilterSec) aktiviert TCP/IP-Filter global für alle IP-Netzwerkadapter. Nachdem Sie die TCP/IP-Filter für alle Netzwerkadapter aktiviert haben, können Sie für jeden Netzwerkadapter bestimmte TCP/IP-Filtereinstellungen mit der EnableIPSec-Methode konfigurieren.

EnableIPFilterSec ist eine statische Methode, die für alle Instanzen der Klasse Win32_NetworkAdapterConfiguration (also für alle Netzwerkadapter) gilt. Dies bedeutet, dass Sie die Get()-Methode des SwbemServices-Objekts zum Abrufen der Klasse Win32_NetworkAdapterConfiguration verwenden können, statt die Instanzen der Klasse mithilfe der ExecQuery()-Methode abzurufen. Anstatt die Methode einfach ohne Parameter aufzurufen, wie bei EnableDHCP, müssen Sie der IPFilterSecurityEnabled-Eigenschaft einen booleschen Wert (True oder False) zuweisen.

Wenn das Skript nur statische Methoden aufruft, können Sie auch kompaktere Möglichkeiten der Bindung an die Klasse Win32_NetworkAdapterConfiguration nutzen. Sie können beispielsweise eine der folgenden Zeilen verwenden:

Set objNicConfig = GetObject("winmgmts:\\" & strComputer & _
 "\root\cimv2:Win32_NetworkAdapterConfiguration")
Set objNicConfig = GetObject("winmgmts:").Get _
 ("Win32_NetworkAdapterConfiguration")

Schritte zur Skripterstellung

caution.gif Vorsicht
Dieses Skript nimmt möglicherweise Änderungen an der Computerkonfiguration vor. Führen Sie es deshalb nur auf einem Testcomputer aus, und notieren Sie sich vor der Skriptausführung die davon betroffenen Einstellungen.

Das Skript in Listing 45 aktiviert die IP-Filtersicherheit für alle installierten Netzwerkadapter mithilfe der EnableIPFilterSec-Methode der Klasse Win32_NetworkAdapterConfiguration. Mit dieser Methode wird die IPFilterSecurityEnabled-Eigenschaft auf True festgelegt. Unter Windows XP und Windows Server 2003 wird die IP-Filtersicherheit im Dialogfeld Erweiterte TCP/IP-Einstellungen auf der Registerkarte Optionen als TCP/IP-Filterung bezeichnet.

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 statische Get-Methode des SWbemServices-Objekts zum Abrufen eines SWbemObject-Objekts, das die Klasse Win32_NetworkAdapterConfiguration darstellt.

Die an diesem Objekt vorgenommenen Änderungen gelten für alle Netzwerkadapter auf dem Computer.

4.

Rufen Sie die statische EnableIPFilterSec-Methode der Klasse Win32_NetworkAdapterConfiguration auf, und weisen Sie ihr den booleschen Parameter True zu.

5.

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

Listing 45 Ipfilter-enableipfilter.vbs

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

 strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objNicConfig = objWMIService.Get("Win32_NetworkAdapterConfiguration")

 If Not objNicConfig.IPFilterSecurityEnabled Then
  intFilterReturn = objNicConfig.EnableIPFilterSec(True)
  If intFilterReturn = 0 Then
    WScript.Echo "IP Filtering enabled for all network adapters."
  ElseIf intFilterReturn = 1 Then
    WScript.Echo "IP Filtering enabled for all network adapters." & _
     VbCrLf & "Must reboot for changes to take effect."
  Else
    WScript.Echo "Unable to enable IP Filtering."
  End If
Else
  WScript.Echo "IP Filtering already enabled."
End If

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

C:\scripts>ipfilter-enableipfilter.vbs

IP Filter Security Enabled:

IP Filtering enabled for all network adapters.

Must reboot for changes to take effect.

Implementieren von TCP/IP-Filtern mithilfe von "EnableIPSec"

Nachdem Sie die TCP/IP-Filter mithilfe von EnableIPFilterSec aktiviert haben, können Sie die EnableIPSec-Methode verwenden, um Zugriffsberechtigungen für den TCP- und UDP-Datenverkehr für bestimmte Ports zu erteilen bzw. zu verweigern. Sie können auch Protokolle, die über IP ausgeführt werden, zulassen oder ausschließen. Diese spezifischen Sicherheitsoptionen werden mit der EnableIPSec-Methode für jeden Netzwerkadapter festgelegt.

Beachten Sie, dass die Funktionalität Methoden EnableIPSec und EnableIPFilterSec im Bezug auf die zwei Einstellungen IP-Sicherheit und TCP/IP-Filter vertauscht ist. (Sie finden diese Einstellungen unter Windows 2000 im Dialogfeld Erweiterte TCP/IP-Einstellungen auf der Registerkarte Optionen. Unter Windows XP und Windows Server 2003 sind diese zwei Einstellungen auf der Registerkarte Optionen in einer einzigen Option, TCP/IP-Filterung, zusammengefasst.)

Auf der Registerkarte Optionen können Sie durch Klicken auf die Schaltfläche Eigenschaften das Dialogfeld TCP/IP-Filterung (Windows 2000: TCP/IP-Filter) öffnen. Dieses Dialogfeld enthält das Kontrollkästchen TCP/IP-Filter aktivieren (alle Adapter) (Windows 2000: TCP/IP-Filter aktivieren (alle Netzwerkkarten)) und ermöglicht separate Einstellungen für TCP-Ports, UDP-Ports und IP-Protokolle. Sie können für jede einzelne dieser Optionen entweder Alle zulassen oder Nur zulassen auswählen, so dass Sie die zulässigen Ports oder Protokolle angeben können.

Schritte zur Skripterstellung

Das Skript in Listing 46 aktiviert die IP-Filtersicherheit für bestimmte Netzwerkadapter mithilfe der EnableIPSec-Methode. Dieses Skript erteilt die Zugriffsberechtigungen für alle TCP-, UDP- und IP-Ports.

important.gif Wichtig
Vor dem Ausführen dieses Skripts müssen Sie die IPFilterSecurityEnabled-Eigenschaft mithilfe der EnableIPFilterSec-Methode der Klasse Win32_NetworkAdapterConfiguration auf True festlegen. Informationen zur Durchführung dieses Schrittes finden Sie unter “Aktivieren von TCP/IP-Filtern mithilfe von EnableIPFilterSec ” weiter oben in diesem Dokument.

Bei den drei Parametern von EnableIPSec, IPSecPermitIPProtocols, IPSecPermitTCPPorts und IPSecPermitUDPPorts gibt der Wert 0 an, dass alle Protokolle oder Ports über Zugriffsrechte verfügen, und ein NULL-Wert (keine leere Zeichenfolge, sondern ein leerer Array) gibt an, dass keinem Protokoll oder Port die Zugriffsberechtigung erteilt wurde. Ansonsten muss es sich bei IPSecPermitTCPPorts und IPSecPermitUDPPorts um Zeichenfolgenarrays handeln, die die Ports darstellen, denen Zugriffsberechtigungen erteilt werden, und IPSecPermitIPProtocols muss ein Zeichenfolgenarray sein, das die zulässigen Protokolle darstellt.

caution.gif Vorsicht
Dieses Skript nimmt möglicherweise Änderungen an der Computerkonfiguration vor. Führen Sie es deshalb nur auf einem Testcomputer aus, und notieren Sie sich vor der Skriptausführung die davon betroffenen Einstellungen.

1.

Definieren Sie eine Konstante, um alle Ports und Protokolle zuzulassen.

2.

Erstellen Sie eine Variable zur Angabe des Computernamens.

3.

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

4.

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.

5.

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

6.

Weisen Sie die ALLOW_ALL-Konstante als Parameter zu den Arrays der zulässigen TCP- und UDP-Ports und der zulässigen IP-Protokolle zu.

Sie können das Skript ändern, so dass nur bestimmte Ports und Protokolle angegeben werden.

7.

Rufen Sie die EnableIPSec-Methode der Klasse Win32_NetworkAdapterConfiguration auf, und weisen Sie ihr die Arrays der zulässigen TCP- und UDP-Ports und der zulässigen IP-Protokolle zu.

8.

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

Listing 46 Ipfilter-enableipsec.vbs

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

 Const ALLOW_ALL = 0
arrPermittedTCPPorts = Array(ALLOW_ALL)
arrPermittedUDPPorts = Array(ALLOW_ALL)
arrPermittedIPProtocols = Array(ALLOW_ALL)

 strComputer = "."

 Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNicConfig = objWMIService.ExecQuery _
 ("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")

 For Each objNicConfig in colNicConfig
  WScript.Echo VbCrLf & "  Network Adapter " & objNicConfig.Index
  If objNicConfig.IPFilterSecurityEnabled Then
    intIPSecReturn = objNicConfig.EnableIPSec(arrPermittedTCPPorts, _
     arrPermittedUDPPorts, arrPermittedIPProtocols)
    If intIPSecReturn = 0 Then
      WScript.Echo "  IP Filtering enabled for specified ports and protocols."
    ElseIf intIPSecReturn = 1 Then
      WScript.Echo "  IP Filtering enabled for specified ports and protocols." _
       & VbCrLf & "  Must reboot for changes to take effect."
    Else
      WScript.Echo "  Unable to enable IP Filtering for " & _
       "specified ports and protocols."
    End If
  Else
    WScript.Echo "  IP Filtering not enabled. Must enable before " & _
     "specifying port and protocols."
  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>ipfilter-enableipsec.vbs

Network Adapter 1

IP Filtering enabled for specified ports and protocols.

Must reboot for changes to take effect.

Aktivieren und Implementieren von TCP/IP-Filtern in einem einzigen Skript

In diesem Skript werden die in den zwei vorherigen Abschnitten erörterten Verfahren zusammengefasst. Dabei wird aufgezeigt, wie durch die Zusammenfügung der Methoden EnableIPFilterSec und EnableIPSec TCP/IP-Filter aktiviert und spezifische Einstellungen für alle Netzwerkadapter konfiguriert werden.

Das Skript prüft zuerst, ob TCP/IP-Filter aktiviert sind. Ist dies nicht der Fall, wird EnableIPFilterSec aufgerufen. Anschließend werden die zulässigen TCP- und UDP-Ports und die zulässigen IP-Protokolle festgelegt.

Zwecks Vereinfachung ist dieses Skript so ausgelegt, dass für jeden Netzwerkadapter dieselben EnableIPSec-Parameter festgelegt werden. Bei Verwendung eines komplexeren Skripts könnten auch unterschiedliche Einstellungen für bestimmte Netzwerkadapter festgelegt werden.

Dieses Skript definiert zwei Konstanten, die als Parameter zu EnableIPSec zugewiesen werden.

Der Wert von ALLOW_ALL ist eine Zeichenfolge mit der Zahl 0, die alle Ports oder Protokolle zulässt. Diese Konstante wird EnableIPSec als Parameter für die zulässigen UDP-Ports zugewiesen.

Der Wert von ALLOW_NONE ist eine leere Zeichenfolge (""), die allen Ports oder Protokollen die Berechtigung verweigert. Diese Konstante wird EnableIPSec als Parameter für die zulässigen IP-Protokolle zugewiesen.

Für die zulässigen TCP-Ports übergibt das Skript der Methode direkt zwei literale Zeichenfolgenwerte (80 und 443).

Schritte zur Skripterstellung

caution.gif Vorsicht
Dieses Skript nimmt möglicherweise Änderungen an der Computerkonfiguration vor. Führen Sie es deshalb nur auf einem Testcomputer aus, und notieren Sie sich vor der Skriptausführung die davon betroffenen Einstellungen.

1.

Definieren Sie eine Konstante, um alle Ports und Protokolle zuzulassen (0), und definieren Sie eine Konstante, um keine Ports und Protokolle zuzulassen (leere Zeichenfolge).

2.

Erstellen Sie eine Konstante für den Wert, der den gesamten Datenverkehr zulässt, und erstellen Sie eine Variable zur Angabe des Computernamens.

3.

Legen Sie die boolesche Variable, die den Status der IPFilterSecurityEnabled-Eigenschaft angibt, auf False fest.

4.

Weisen Sie Port 80 und Port 443 zum Array der zulässigen TCP-Ports zu.

5.

Weisen Sie die ALLOW_NONE-Konstante zum Array der zulässigen UDP-Ports zu.

6.

Weisen Sie die ALLOW_ALL-Konstante zu den Arrays der zulässigen IP-Protokolle zu.

7.

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

8.

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.

9.

Führen Sie eine Iteration durch die Auflistung der Netzwerkadapter durch, und zeigen Sie die aktuellen TCP/IP-Filtereinstellungen an.

10.

Wenn die IPFilterSecurityEnabled-Eigenschaft auf False festgelegt ist, rufen Sie die statische Get-Methode des SWbemServices-Objekts auf, um ein SWbemObject-Objekt abzurufen, das die Klasse Win32_NetworkAdapterConfiguration darstellt.

Die an diesem Objekt vorgenommenen Änderungen gelten für alle Netzwerkadapter auf dem Computer.

11.

Rufen Sie die EnableIPFilterSec-Methode der Klasse Win32_NetworkAdapterConfiguration in dem Klassenobjektverweis auf, und weisen Sie ihr den Parameter True zu.

12.

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

13.

Fragen Sie die Klasse Win32_NetworkAdapterConfiguration mithilfe der ExecQuery-Methode erneut ab, wobei die WQL-Abfrage nach "WHERE IPEnabled = True" gefiltert wird.

14.

Führen Sie erneut eine Iteration durch die Auflistung der Netzwerkadapter durch, und rufen Sie dabei für jeden Netzwerkadapter die EnableIPSec-Methode der Klasse Win32_NetworkAdapterConfiguration auf, und weisen Sie ihr die Arrays der zulässigen TCP- und UDP-Ports und der zulässigen IP-Protokolle zu.

15.

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

16.

Fragen Sie die Klasse Win32_NetworkAdapterConfiguration mithilfe der ExecQuery-Methode erneut ab, wobei die WQL-Abfrage nach "WHERE IPEnabled = True" gefiltert wird.

17.

Führen Sie eine Iteration durch die Auflistung der Netzwerkadapter durch, und zeigen Sie die TCP/IP-Filtereinstellungen einschließlich aller Änderungen an.

Listing 47 Ipfilter-enable.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
100
101
102
103
104
105
106
107
108
109
On Error Resume Next

 Const ALLOW_ALL = "0"
Const ALLOW_NONE = ""

 strComputer = "."
blnIPFilterSecurityEnabled = "False"
arrPermittedTCPPorts = Array("80", "443")
arrPermittedUDPPorts = Array(ALLOW_NONE)
arrPermittedIPProtocols = Array(ALLOW_ALL)

 Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNicConfig = objWMIService.ExecQuery _
 ("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
WScript.Echo VbCrLf & "Settings Before Enabling IP Filtering"

 For Each objNicConfig in colNicConfig
  blnIPFilterSecurityEnabled = objNicConfig.IPFilterSecurityEnabled
  WScript.Echo VbCrLf & "  Network Adapter " & objNicConfig.Index & VbCrLf & _
   "    IP Filtering Enabled: " & blnIPFilterSecurityEnabled
  WScript.Echo "    TCP Ports:"
  If Not IsNull(objNicConfig.IPSecPermitTCPPorts) Then
    For Each strTCPPort In objNicConfig.IPSecPermitTCPPorts
      WScript.Echo "      " & strTCPPort
    Next
  End If
  WScript.Echo "    UDP Ports:"
  If Not IsNull(objNicConfig.IPSecPermitUDPPorts) Then
    For Each strUDPPort In objNicConfig.IPSecPermitUDPPorts
      WScript.Echo "      " & strUDPPort
    Next
  End If
  WScript.Echo "    IP Protocols:"
  If Not IsNull(objNicConfig.IPSecPermitIPProtocols) Then
    For Each strIPProtocol In objNicConfig.IPSecPermitIPProtocols
      WScript.Echo "      " & strIPProtocol
    Next
  End If
Next

 If blnIPFilterSecurityEnabled = False Then
  WScript.Echo VbCrLf & "Enabling IP Filtering ..."
  Set objAllNicsConfig = objWMIService.Get("Win32_NetworkAdapterConfiguration")
  intFilterReturn = objAllNicsConfig.EnableIPFilterSec(True)
  If intFilterReturn = 0 Then
    WScript.Echo "  IP Filtering enabled for all network adapters."
    SpecifyFilters
  ElseIf intFilterReturn = 1 Then
    WScript.Echo "  IP Filtering enabled for all network adapters." _
     & VbCrLf & "  Must reboot for changes to take effect."
    SpecifyFilters
  Else
    WScript.Echo "  Unable to enable IP Filtering."
  End If
Else
  WScript.Echo VbCrLf & "IP Filtering already enabled for all network adapters."
  SpecifyFilters
End If

 Set colNicConfig = objWMIService.ExecQuery _
 ("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
WScript.Echo VbCrLf & "Settings After Enabling IP Filtering"

 For Each objNicConfig in colNicConfig
  WScript.Echo VbCrLf & "  Network Adapter " & objNicConfig.Index & VbCrLf & _
   "    IP Filtering Enabled: " & objNicConfig.IPFilterSecurityEnabled
  WScript.Echo "    TCP Ports:"
  If Not IsNull(objNicConfig.IPSecPermitTCPPorts) Then
    For Each strTCPPort In objNicConfig.IPSecPermitTCPPorts
      WScript.Echo "      " & strTCPPort
    Next
  End If
  WScript.Echo "    UDP Ports:"
  If Not IsNull(objNicConfig.IPSecPermitUDPPorts) Then
    For Each strUDPPort In objNicConfig.IPSecPermitUDPPorts
      WScript.Echo "      " & strUDPPort
    Next
  End If
  WScript.Echo "    IP Protocols:"
  If Not IsNull(objNicConfig.IPSecPermitIPProtocols) Then
    For Each strIPProtocol In objNicConfig.IPSecPermitIPProtocols
      WScript.Echo "      " & strIPProtocol
    Next
  End If
Next

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

 Sub SpecifyFilters

 Set colNicConfig = objWMIService.ExecQuery _
 ("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
For Each objNicConfig in colNicConfig
  intIPSecReturn = objNicConfig.EnableIPSec(arrPermittedTCPPorts, _
   arrPermittedUDPPorts, arrPermittedIPProtocols)
  If intIPSecReturn = 0 Then
    WScript.Echo "  Filters enabled on " & _
     objNicConfig.Index & " for specified ports and protocols."
  ElseIf intIPSecReturn = 1 Then
    WScript.Echo "  Filters enabled on " & _
     objNicConfig.Index & " for specified ports and protocols." _
     & VbCrLf & "  Must reboot for changes to take effect."
  Else
    WScript.Echo "  Unable to enable filters on " & _
     objNicConfig.Index & " for specified ports and protocols."
  End If
Next

 End Sub

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

C:\scripts>ipfilter-enable.vbs

Settings Before Enabling IP Filtering

Network Adapter 1

IP Filtering Enabled: False

TCP Ports:

0

UDP Ports:

0

IP Protocols:

0

Enabling IP Filtering ...

IP Filtering enabled for all network adapters.

Must reboot for changes to take effect.

Filters enabled on 1 for specified ports and protocols.

Must reboot for changes to take effect.

Settings After Enabling IP Filtering

Network Adapter 1

IP Filtering Enabled: True

TCP Ports:

80

443

UDP Ports:

IP Protocols:

0

Deaktivieren von TCP/IP-Filtern

Wenn Sie TCP/IP-Filter für ein Netzwerksegment oder für eine andere Gruppe von Hosts deaktivieren müssen, können Sie wertvolle Verwaltungszeit sparen, indem Sie Skripts für diese Aufgaben auf mehreren Computern ausführen. In bestimmten Fällen kann es auch auf einzelnen Hosts sinnvoll sein, ein Skript zur Deaktivierung von TCP/IP-Filtern über eine Eingabeaufforderung auszuführen. Ein Beispiel hierfür ist ein Laptop, der häufig abwechselnd in einem Netzwerk mit und in einem Netzwerk ohne TCP/IP-Filter verwendet wird.

Schritte zur Skripterstellung

caution.gif Vorsicht
Dieses Skript nimmt möglicherweise Änderungen an der Computerkonfiguration vor. Führen Sie es deshalb nur auf einem Testcomputer aus, und notieren Sie sich vor der Skriptausführung die davon betroffenen Einstellungen.

Das Skript in Listing 48 deaktiviert TCP/IP-Filter für alle IP-Netzwerkadaptereinstellungen.

1.

Erstellen Sie eine Konstante für den Wert, der den gesamten Datenverkehr zulässt, und 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.

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

5.

Zeigen Sie die aktuellen TCP/IP-Filtereinstellungen an.

6.

Rufen Sie die DisableIPSec-Methode der Klasse Win32_NetworkAdapterConfiguration auf.

7.

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

8.

Fragen Sie die Klasse Win32_NetworkAdapterConfiguration mithilfe der ExecQuery-Methode erneut ab, wobei die WQL-Abfrage nach "WHERE IPEnabled = True" gefiltert wird.

9.

Führen Sie eine Iteration durch die Auflistung der Netzwerkadapter durch, und zeigen Sie die TCP/IP-Filtereinstellungen einschließlich aller Änderungen an.

Listing 48 Ipfilter-disable.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 = "."

 Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNicConfig = objWMIService.ExecQuery _
 ("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")

 WScript.Echo VbCrLf & "IPSec and TCP/IP Filtering Settings"

 For Each objNicConfig in colNicConfig
  WScript.Echo VbCrLf & "  Network Adapter " & objNicConfig.Index & _
   VbCrLf & "    IP Filtering Enabled: " & _
   objNicConfig.IPFilterSecurityEnabled
  WScript.Echo "    TCP Ports:"
  If Not IsNull(objNicConfig.IPSecPermitTCPPorts) Then
        For Each strTCPPort In objNicConfig.IPSecPermitTCPPorts
            WScript.Echo "      " & strTCPPort
        Next
  End If
  WScript.Echo "    UDP Ports:"
  If Not IsNull(objNicConfig.IPSecPermitUDPPorts) Then
    For Each strUDPPort In objNicConfig.IPSecPermitUDPPorts
      WScript.Echo "      " & strUDPPort
    Next
  End If
  WScript.Echo "    IP Protocols:"
  If Not IsNull(objNicConfig.IPSecPermitIPProtocols) Then
    For Each strIPProtocol In objNicConfig.IPSecPermitIPProtocols
      WScript.Echo "      " & strIPProtocol
    Next
  End If
  If objNicConfig.IPFilterSecurityEnabled Then
    intDisableReturn = objNicConfig.DisableIPSec
    If intDisableReturn = 0 Then
      WScript.Echo "    IP Filtering disabled."
    ElseIf intDisableReturn = 1 Then
      WScript.Echo "    IP Filtering disabled." & _
       VbCrLf & "    Must reboot for changes to take effect."
    Else
      WScript.Echo "    Unable to disable IP Filtering."
    End If
  Else
    WScript.Echo "    IP Filtering already disabled."
  End If
Next

 Set colNicConfig = objWMIService.ExecQuery _
 ("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")

 WScript.Echo VbCrLf & "Settings After Operation"

 For Each objNicConfig in colNicConfig
  WScript.Echo VbCrLf & "  Network Adapter " & objNicConfig.Index & _
   VbCrLf & "    IP Filtering Enabled: " & _
   objNicConfig.IPFilterSecurityEnabled
  WScript.Echo "    TCP Ports:"
  If Not IsNull(objNicConfig.IPSecPermitTCPPorts) Then
    For Each strTCPPort In objNicConfig.IPSecPermitTCPPorts
      WScript.Echo "      " & strTCPPort
    Next
  End If
  WScript.Echo "    UDP Ports:"
  If Not IsNull(objNicConfig.IPSecPermitUDPPorts) Then
    For Each strUDPPort In objNicConfig.IPSecPermitUDPPorts
      WScript.Echo "      " & strUDPPort
    Next
  End If
  WScript.Echo "    IP Protocols:"
  If Not IsNull(objNicConfig.IPSecPermitIPProtocols) Then
    For Each strIPProtocol In objNicConfig.IPSecPermitIPProtocols
      WScript.Echo "      " & strIPProtocol
    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>ipfilter-disable.vbs

IPSec and TCP/IP Filtering Settings

Network Adapter 1

IP Filtering Enabled: True

TCP Ports:

80

443

UDP Ports:

IP Protocols:

0

IP Filtering disabled.

Must reboot for changes to take effect.

Settings After Operation

Network Adapter 1

IP Filtering Enabled: True

TCP Ports:

0

UDP Ports:

0

IP Protocols:

0

Verwalten weiterer TCP/IP-Einstellungen

Die Klasse Win32_NetworkAdapterConfiguration stellt zahlreiche weitere Eigenschaften und Methoden bereit, die sich auf ARP-Einstellungen (Address Resolution Protocol), TCP-Einstellungen (Transmission Control Protocol) und IP-Einstellungen (Internet Protocol) beziehen. Da die meisten dieser Eigenschaften in erster Linie zum Konfigurieren von Routingoptionen verwendet werden oder der Optimierung der Netzwerkleistung dienen, werden sie in diesem Dokument nicht ausführlich behandelt. Diese Eigenschaften werden jedoch in den nachfolgenden Tabellen aufgelistet, und in dem unten dargestellten Skript werden die Eigenschaftseinstellungen für jedes Protokoll angezeigt.

Für jede schreibgeschützte Eigenschaft ist eine entsprechende Methode zum Ändern der Eigenschaft verfügbar. Es wird jedoch kein Beispielskript für diese Methoden angezeigt. Wenn ein Computer nicht für Routing konfiguriert ist, geben diese Eigenschaften häufig einen leeren Wert oder den Wert Null zurück.

Informationen darüber, wie Sie einige dieser Einstellungen zum Verbessern der Netzwerkleistung verwenden können, finden Sie im Abschnitt "Performance Tuning for Networking" im Artikel " Performance Tuning Guidelines for Windows Server 2003 " unter http://go.microsoft.com/fwlink/?LinkId=24798 (nur auf Englisch verfügbar).

Verwalten von ARP-Einstellungen

ARP (Address Resolution Protocol) dient der Zuordnung von IP-Adressen zu MAC-Adressen. Windows umfasst das Befehlszeilentool Arp.exe, mit dem ARP-Cacheeinträge aufgelistet und konfiguriert werden können.

In Tabelle 27 werden die Eigenschaften der Klasse Win32_NetworkAdapterConfiguration beschrieben, die in Verbindung mit ARP verwendet werden können.

Tabelle 27 ARP-Eigenschaften für die Klasse "Win32_NetworkAdapterConfiguration"

EigenschaftTypBeschreibung

ArpAlwaysSourceRoute

Boolean-Wert

True gibt an, dass TCP/IP ARP-Abfragen (Address Resolution Protocol) mit aktiviertem Quellrouting in Token Ring-Netzwerken überträgt.

Standardmäßig (False) werden ARP-Abfragen zuerst ohne Quellrouting ausgeführt. Anschließend wird der Vorgang mit aktiviertem Quellrouting wiederholt, wenn keine Antwort empfangen wird. Quellrouting ermöglicht das Routing von Netzwerkpaketen in unterschiedlichen Netzwerktypen.

ArpUseEtherSNAP

Boolean-Wert

True gibt an, dass Ethernetpakete die IEEE 802.3 SNAP-Codierung (Sub-Network Access Protocol) verwenden. Wenn dieser Parameter auf 1 festgelegt wird, überträgt TCP/IP Ethernetpakete mit 802.3 SNAP-Codierung.

Standardmäßig (False) überträgt der Stapel Pakete im DIX-Ethernetformat. Systeme unter Windows NT und Windows 2000 können beide Formate empfangen.

Alle Eigenschaften in der vorstehenden Tabelle sind schreibgeschützt.

In Tabelle 28 werden die Methoden der Klasse Win32_NetworkAdapterConfiguration beschrieben, die in Verbindung mit ARP verwendet werden können.

Tabelle 28 ARP-Methoden für die Klasse "Win32_NetworkAdapterConfiguration"

MethodeParameterBeschreibung

SetArpAlwaysSourceRoute

ArpAlwaysSourceRoute – Boolean-Wert

Statische Methode. Legt die Übertragung von ARP-Abfragen von TCP/IP fest.

Wenn der Parameter auf True festgelegt ist, überträgt TCP/IP ARP-Abfragen mit aktiviertem Quellrouting in Token Ring-Netzwerken.

Standardmäßig überträgt der Stapel ARP-Abfragen zuerst ohne Quellrouting. Anschließend wird der Vorgang mit aktiviertem Quellrouting wiederholt, wenn keine Antwort empfangen wird.

SetArpUseEtherSNAP

ArpUseEtherSNAP – Boolean-Wert

Statische Methode. Ermöglicht TCP/IP die Übertragung von Ethernetpaketen mit 802.3 SNAP-Codierung.

Wenn der Parameter auf True festgelegt ist, verwenden Ethernetpakete die 802.3 SNAP-Codierung.

Standardmäßig überträgt der Stapel Pakete im DIX-Ethernetformat (Digital, Intel, Xerox). Es werden immer beide Formate empfangen.

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

0 bedeutet: erfolgreicher Abschluss.

1 bedeutet: erfolgreicher Abschluss, Neustart erforderlich.

Zahlen größer als 1 bedeuten, dass ein Problem aufgetreten ist und die Methode nicht abgeschlossen werden konnte. Im WMI-SDK werden die Bedeutungen der Rückgabewerte für diese Methoden aufgeführt.

Verwalten von TCP-Einstellungen

In Tabelle 29 werden die Eigenschaften der Klasse Win32_NetworkAdapterConfiguration beschrieben, die in Verbindung mit TCP-Einstellungen verwendet werden können.

Tabelle 29 TCP-Eigenschaften von "Win32_NetworkAdapterConfiguration"

EigenschaftTypBeschreibung

KeepAliveInterval

Uint32

Einheiten: Millisekunden

Intervall zwischen erneuten Keep Alive-Übertragungen bis zum Empfang einer Antwort. Nach dem Empfang einer Antwort wird die Verzögerung bis zur nächsten Keep Alive-Übertragung erneut vom Wert der KeepAliveTime-Eigenschaft gesteuert. Die Verbindung wird abgebrochen, nachdem die von TcpMaxDataRetransmissions angegebene Anzahl der erneuten Übertragungen unbeantwortet bleiben. Standard: 1000, Gültiger Bereich:
1–xFFFFFFFF.

KeepAliveTime

Uint32

Einheiten: Millisekunden

Gibt an, wie oft TCP durch Senden eines Keep Alive-Pakets überprüft, ob eine Verbindung im Leerlauf noch verfügbar ist. Wenn das Remotesystem erreicht werden kann und aktiv ist, wird die Keep Alive-Übertragung bestätigt. Keep Alive-Pakete werden nicht standardmäßig gesendet. Diese Funktion kann in einer Verbindung von einer Anwendung aktiviert werden. Standard: 7.200.000 (zwei Stunden)

MTU

Uint32

Einheiten: Bytes

Überschreibt die standardmäßige Maximum Transmission Unit (MTU – maximale Übertragungseinheit) für eine Netzwerkschnittstelle. Die MTU ist die maximale Paketgröße (einschließlich Übertragungsheader), die über das Netzwerk übertragen wird. Das IP-Datagramm kann mehrere Pakete umfassen. Der Wertebereich umfasst die minimale Paketgröße (68) bis zur vom Netzwerk unterstützten MTU.

PMTUBHDetectEnabled

Boolean-Wert

TRUE gibt an, dass Black Hole-Router erkannt werden, während TCP den MTU-Pfad identifiziert. Ein Black Hole-Router gibt keine ICMP-Meldungen (Internet Control Message Protocol) Ziel nicht erreichbar zurück, wenn ein IP-Datagramm fragmentiert werden muss und das Bit Keine Fragmentierung festgelegt ist. TCP ist vom Empfang dieser Meldungen abhängig, um einen MTU-Pfad identifizieren zu können. Wenn diese Funktion aktiviert ist, sendet TCP Segmente ohne das Bit Keine Fragmentierung, wenn mehrere erneute Übertragungen eines Segments nicht bestätigt werden. Wird das Segment bestätigt, wird die maximale Segmentgröße erhöht, und das Bit Keine Fragmentierung wird für künftige Pakete festgelegt. Wenn die Black Hole-Erkennung aktiviert ist, wird die maximale Anzahl der erneuten Segmentübertragungen erhöht. Der Standardwert dieser Eigenschaft ist FALSE.

PMTUDiscoveryEnabled

Boolean-Wert

TRUE gibt an, dass der MTU-Pfad über den Pfad zum Remotehost identifiziert wird. Durch Identifizieren des MTU-Pfades und Beschränken der TCP-Segmente auf diese Größe kann TCP die Fragmentierung bei Routern auf Pfaden vermeiden, die Netzwerke mit unterschiedlichen MTUs verbinden. Die Fragmentierung wirkt sich nachteilig auf den TCP-Durchsatz und die Netzwerkauslastung aus. Durch Festlegen dieses Parameters auf FALSE wird eine MTU von 576 Bytes für alle Verbindungen außerhalb des lokalen Subnetzes verwendet. Der Standardwert ist TRUE.

TcpMaxConnectRetransmissions

Uint32

Gibt an, wie oft TCP versucht, eine Verbindungsanforderung auszuführen, bevor die Verbindung abgebrochen wird. Das Zeitlimit für die erste erneute Übertragung beträgt 3 Sekunden. Das Zeitlimit wird bei jedem Versuch verdoppelt. Standard: 3, Gültiger Bereich: 0-0xFFFFFFFF.

TcpMaxDataRetransmissions

Uint32

Gibt an, wie oft TCP einzelne Datensegmente erneut überträgt, bevor die Verbindung abgebrochen wird. Das Zeitlimit wird mit jeder erneuten Übertragung verdoppelt. Standard: 5, Gültiger Bereich: 0-0xFFFFFFFF.

TcpNumConnections

Uint32

Die maximale Anzahl der zulässigen gleichzeitigen TCP-Verbindungen. Standard: 0xFFFFFE, Gültiger Bereich: 0-0xFFFFFE.

TcpUseRFC1122UrgentPointer

Boolean-Wert

TRUE gibt an, dass TCP die RFC 1122-Spezifikation für dringende Daten verwendet. FALSE (Standardeinstellung) gibt an, dass TCP den Modus von BSD-abgeleiteten Systemen (Berkeley Software Design) verwendet. Die zwei Mechanismen interpretieren den Dringlichkeitszeiger unterschiedlich und können nicht zusammen verwendet werden. Windows 2000 und Windows NT 3.51 oder höher verwenden standardmäßig den BSD-Modus.

TcpWindowSize

Uint16

Einheiten: Bytes

Die maximale TCP-Empfangsfenstergröße, die vom System unterstützt wird. Das Empfangsfenster gibt die Anzahl der Bytes an, die ohne Bestätigung übertragen werden können. Im Allgemeinen verbessern größere Empfangsfenster die Leistung auf Netzwerken mit hoher Verzögerung und hoher Bandbreite. Zwecks Leistungsfähigkeit sollte das Empfangsfenster ein gerades Vielfaches der maximalen TCP-Segmentgröße sein. Standard: Die maximale TCP-Datengröße multipliziert mit 4 oder ein gerades Vielfaches der TCP-Datengröße, aufgerundet auf das nächste Vielfache von 8192. Der Standard für Ethernetnetzwerke ist 8760. Gültiger Bereich: 0-5535.

Alle Eigenschaften in der vorstehenden Tabelle sind schreibgeschützt.

In Tabelle 30 werden die Methoden der Klasse Win32_NetworkAdapterConfiguration beschrieben, die in Verbindung mit TCP-Einstellungen verwendet werden können.

Tabelle 30 TCP-Methoden von "Win32_NetworkAdapterConfiguration"

MethodeParameterBeschreibung

SetKeepAliveInterval

KeepAliveInterval – int32

Wert (in Millisekunden) für das Intervall zwischen erneuten Keep Alive-Übertragungen bis zum Empfang einer Antwort.

Statische Methode. Legt das Intervall fest, das die erneuten Keep Alive-Übertragungen bis zum Empfang einer Antwort trennt. Nach dem Empfang einer Antwort wird die Verzögerung bis zur nächsten Keep Alive-Übertragung erneut vom Wert der KeepAliveTime-Eigenschaft gesteuert. Die Verbindung wird abgebrochen, nachdem die von der TcpMaxDataRetransmissions-Eigenschaft angegebene Anzahl der erneuten Übertragungen unbeantwortet bleiben.

SetKeepAliveTime

KeepAliveTime – uint32

Intervall (in Millisekunden) das festlegt, wie lange TCP mit der Überprüfung, ob eine Verbindung im Leerlauf noch verfügbar ist, wartet.

Statische Methode. Legt fest, wie oft TCP durch Senden eines Keep Alive-Pakets überprüft, ob eine Verbindung im Leerlauf noch verfügbar ist. Wenn das Remotesystem weiterhin erreichbar und funktionsfähig ist, wird die Keep Alive-Übertragung bestätigt. Keep Alive-Pakete werden nicht standardmäßig gesendet. Diese Funktion kann in einer Verbindung von einer Anwendung aktiviert werden.

SetMTU

Windows Server 2003: Diese Methode wird nicht unterstützt. Es gibt keinen Ersatz, und die Werte entsprechen nicht dem beabsichtigten Zweck der Methode.

MTU – int32

Die standardmäßige Maximum Transmission Unit (MTU – maximale Übertragungseinheit) für eine Netzwerkschnittstelle. Der Wertebereich umfasst die minimale Paketgröße (68) bis zur vom Netzwerk unterstützten MTU.

Statische Methode. Legt die Standard-MTU für eine Netzwerkschnittstelle fest. Die MTU ist die maximale Paketgröße (in Bytes), die über das Netzwerk übertragen wird. Die Größe umfasst den Übertragungsheader.

Beachten Sie, dass ein IP-Datagramm mehrere Pakete umfassen kann. Wenn die Werte die für das jeweilige Netzwerk angegebene Standardgröße überschreiten, wird für die Übertragung die Standard-MTU des Netzwerks verwendet. Bei Werten unter 68 wird für die Übertragung eine MTU von 68 Bytes verwendet.

SetPMTUBHDetect

PMTUBHDetectEnabled – Boolean-Wert

TRUE gibt an, dass TCP Black Hole-Router erkennt und Pakete auf andere Netzwerkpfade umleitet.

Statische Methode. Aktiviert die Erkennung von Black Hole-Routern beim Identifizieren des MTU-Pfades. Ein Black Hole-Router gibt keine ICMP-Meldungen (Internet Control Message Protocol) Ziel nicht erreichbar zurück, wenn ein IP-Datagramm fragmentiert werden muss und das Bit Keine Fragmentierung festgelegt ist. TCP ist vom Empfang dieser Meldungen abhängig, um einen MTU-Pfad identifizieren zu können.

Wenn diese Funktion aktiviert ist, sendet TCP Segmente ohne das Bit Keine Fragmentierung, wenn mehrere erneute Übertragungen eines Segments nicht bestätigt werden. Wird das Segment bestätigt, wird die maximale Segmentgröße erhöht, und das Bit Keine Fragmentierung wird für künftige Pakete festgelegt. Wenn die Black Hole-Erkennung aktiviert ist, wird die maximale Anzahl der erneuten Segmentübertragungen erhöht.

SetPMTUDiscovery

PMTUDiscoveryEnabled – Boolean-Wert

TRUE gibt an, dass TCP für die Ermittlung der MTU oder der größten Paketgröße über den Pfad zum Remotehost aktiviert ist. Der Standardwert ist TRUE.

Statische Methode. Aktiviert die MTU-Ermittlung über den Pfad zum Remotehost. Durch Identifizieren der Pfad-MTU und Beschränken der TCP-Segmente auf diese Größe kann TCP die Fragmentierung bei Routern auf Pfaden vermeiden, die Netzwerke mit unterschiedlichen MTUs verbinden. Die Fragmentierung wirkt sich nachteilig auf den TCP-Durchsatz und die Netzwerkauslastung aus. Durch Festlegen dieses Parameters auf FALSE wird eine MTU von 576 Bytes für alle Verbindungen außerhalb des lokalen Subnetzes verwendet.

SetTcpMaxConnectRetransmissions

TcpMaxConnectRetransmissions – int32

Die Anzahl der wiederholten Übertragungsversuche einer TCP-Verbindungsanforderung, bevor der Vorgang abgebrochen wird. Der gültige Wertebereich ist 0-0xFFFFFFFF.

Statische Methode. Legt die Anzahl der wiederholten Übertragungsversuche einer TCP-Verbindungsanforderung fest, bevor der Vorgang abgebrochen wird. Das Zeitlimit für die erste erneute Übertragung beträgt 3 Sekunden und wird bei jedem Versuch verdoppelt.

SetTcpMaxDataRetransmissions

TcpMaxDataRetransmissions – int32

Anzahl der Versuche, die TCP unternimmt, um einzelne Datensegmente erneut zu übertragen, bevor die Verbindung abgebrochen wird. Gültiger Bereich: 0-0xFFFFFFFF.

Statische Methode. Legt fest, wie oft TCP einzelne Datensegmente erneut überträgt, bevor die Verbindung abgebrochen wird. Das Zeitlimit wird mit jeder erneuten Übertragung verdoppelt.

SetTcpNumConnections

TcpNumConnections – int32

Die maximale Anzahl der zulässigen gleichzeitigen TCP-Verbindungen. Gültiger Bereich: 0-0xFFFFFE.

Statische Methode. Legt die maximale Anzahl der zulässigen gleichzeitigen TCP-Verbindungen fest.

SetTcpUseRFC1122UrgentPointer

TcpUseRFC1122UrgentPointer – Boolean-Wert

TRUE gibt an, dass TCP die RFC 1122-Spezifikation verwendet. FALSE gibt an, dass dringende Daten in dem von BSD-abgeleiteten Systemen verwendeten Modus gesendet werden.

Statische Methode. Gibt an, ob TCP die RFC 1122-Spezifikation für dringende Daten oder den Modus von BSD-abgeleiteten Systemen (Berkeley Software Design) verwendet. Die zwei Mechanismen interpretieren den Dringlichkeitszeiger im TCP-Header und die Länge der dringenden Daten unterschiedlich. Sie können nicht zusammen verwendet werden. Windows 2000 und Windows NT 3.51 oder höher verwenden standardmäßig den BSD-Modus.

SetTcpWindowSize

TcpWindowSize – int16

Die maximale TCP-Empfangsfenstergröße (in Bytes), die vom System unterstützt wird. Gültiger Bereich (in Bytes): 0-65535.

Statische Methode. Legt die maximale TCP-Empfangsfenstergröße fest, die vom System unterstützt wird. Das Empfangsfenster gibt die Anzahl der Bytes an, die ohne Bestätigung übertragen werden können. Im Allgemeinen verbessern größere Empfangsfenster die Leistung auf Netzwerken mit hoher Verzögerung und hoher Bandbreite. Zwecks Leistungsfähigkeit sollte das Empfangsfenster ein gerades Vielfaches der maximalen TCP-Segmentgröße sein.

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

0 bedeutet: erfolgreicher Abschluss.

1 bedeutet: erfolgreicher Abschluss, Neustart erforderlich.

Zahlen größer als 1 bedeuten, dass ein Problem aufgetreten ist und die Methode nicht abgeschlossen werden konnte. Im WMI-SDK werden die Bedeutungen der Rückgabewerte für diese Methoden aufgeführt.

Verwalten von IP-Paketeinstellungen

In Tabelle 31 werden die Eigenschaften der Klasse Win32_NetworkAdapterConfiguration beschrieben, die in Verbindung mit IP-Einstellungen verwendet werden können.

Tabelle 31 IP-Eigenschaften von "Win32_NetworkAdapterConfiguration"

EigenschaftTypBeschreibung

DefaultTOS

Uint8

TOS-Standardwert (Type Of Service) im Header ausgehender IP-Pakete. Die Werte sind in RFC 791 definiert. Standard: 0, Gültiger Bereich: 0-255.

DefaultTTL

Uint8

TTL-Standardwert (Time To Live) im Header ausgehender IP-Pakete. Der TTL-Wert gibt die Anzahl der Router an, über die ein IP-Paket vor dem Erreichen des Zieles weitergeleitet werden kann, bevor es verworfen wird. Jeder Router verringert diesen Wert um 1 und verwirft die Pakete, wenn die Gültigkeitsdauer den Wert 0 (Null) aufweist. Standard: 32, Gültiger Bereich: 1-255.

IPUseZeroBroadcast

Boolean-Wert

TRUE gibt an, dass IP-Zero-Broadcasts (0.0.0.0) verwendet werden. Das System verwendet in diesem Fall normale Broadcasts (255.255.255.255). Computersysteme verwenden im Allgemeinen normale Broadcasts, - von BSD-Implementationen abgeleitete Systeme verwenden jedoch Zero-Broadcasts. Systeme, die unterschiedliche Broadcasts verwenden, können nicht in demselben Netzwerk ausgeführt werden. Der Standardwert ist FALSE.

Alle Eigenschaften in der vorstehenden Tabelle sind schreibgeschützt.

In Tabelle 32 werden die Methoden der Klasse Win32_NetworkAdapterConfiguration beschrieben, die in Verbindung mit IP-Einstellungen verwendet werden können.

Tabelle 32 IP-Methoden von "Win32_NetworkAdapterConfiguration"

MethodeParameterBeschreibung

SetDefaultTOS

Veraltet. Anwendungen sollten die QoS-API zum Ändern von TOS-Bits verwenden.

DefaultTOS – Zeichenfolge

Der Parameter stellt den TOS-Wert (Type Of Service) im Header ausgehender IP-Pakete dar. Eine Definition der Werte finden Sie in RFC 791.

Statische Methode. Legt den TOS-Standardwert (Type Of Service) im Header ausgehender IP-Pakete fest.

SetDefaultTTL

DefaultTTL – uint 8

Der Parameter stellt den TTL-Wert im Header ausgehender IP-Pakete dar. Standard: 32, Gültiger Bereich: 1-255.

Statische Methode. Legt den TTL-Standardwert (Time to Live) im Header ausgehender IP-Pakete fest. Der TTL-Wert gibt die Anzahl der Router an, über die ein IP-Paket vor dem Erreichen des Zieles weitergeleitet werden kann, bevor es verworfen wird. Jeder Router verringert diesen Wert um 1 und verwirft die Pakete, wenn die Gültigkeitsdauer den Wert 0 aufweist.

SetIPUseZeroBroadcast

IPUseZeroBroadcast – Boolean-Wert

TRUE gibt an, dass IP-Zero-Broadcasts verwendet werden. Der Standardwert ist FALSE.

Statische Methode. Legt die Verwendung von IP-Zero-Broadcasts fest. Wenn der IPUseZeroBroadcast-Parameter auf TRUE festgelegt ist, verwendet IP Zero-Broadcasts (0.0.0.0) anstelle von One-Broadcasts (255.255.255.255). Die meisten Systeme verwenden One-Broadcasts, aber von BSD-Implementationen abgeleitete Systeme verwenden Zero-Broadcasts. Systeme, die unterschiedliche Broadcasts verwenden, können nicht in demselben Netzwerk ausgeführt werden.

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

0 bedeutet: erfolgreicher Abschluss.

1 bedeutet: erfolgreicher Abschluss, Neustart erforderlich.

Zahlen größer als 1 bedeuten, dass ein Problem aufgetreten ist und die Methode nicht abgeschlossen werden konnte. Im WMI-SDK werden die Bedeutungen der Rückgabewerte für diese Methoden aufgeführt.

Abrufen von ARP-, TCP- und IP-Paketeinstellungen

ARP-, TCP- und IP-Paketeinstellungen werden normalerweise in erster Linie auf Routern verwendet. Beachten Sie, dass diese Eigenschaften auf Computern, die nicht als Router konfiguriert sind, häufig leere oder NULL-Werte enthalten.

Schritte zur Skripterstellung

Das Skript in Listing 49 ruft ARP-, IP- und TCP-Paketeinstellungen ab und zeigt diese an.

1.

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

2.

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

3.

Verwenden Sie die ExecQuery-Methode zum Abfragen der Klasse Win32_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.

Zeigen Sie für jede Netzwerkadapterkonfiguration in der Auflistung die ARP-, IP- und TCP-Eigenschaften jeweils unter einer eigenen Überschrift an.

Listing 49 Arp-ip-tcp-settings.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
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 & "ARP, IP and TCP packet settings"
WScript.Echo VbCrLf & "Host Name: " & strComputer

 For Each objNicConfig in colNicConfigs
  WScript.Echo VbCrLf & "  Network Adapter: " & objNicConfig.Index & _
   VbCrLf & "   " & objNicConfig.Description
  WScript.Echo VbCrLf & "   ARP Settings:"
  WScript.Echo "    ARP queries use source routing on Token Ring: " & _
   objNicConfig.ArpAlwaysSourceRoute
  WScript.Echo "    ARP uses SNAP encoding on Ethernet: " & _
   objNicConfig.ArpUseEtherSNAP
  WScript.Echo VbCrLf & "   IP packet settings:"
  WScript.Echo "    Default Type Of Service: " & objNicConfig.DefaultTOS
  WScript.Echo "    Default Time To Live: " & objNicConfig.DefaultTTL
  WScript.Echo "    IP uses zeros-broadcasts: " & _
   objNicConfig.IPUseZeroBroadcast
  WScript.Echo VbCrLf & "   TCP Settings:"
  WScript.Echo "    Keep Alive Interval: " & objNicConfig.KeepAliveInterval
  WScript.Echo "    Keep Alive Time: " & objNicConfig.KeepAliveTime
  WScript.Echo "    Maximum Transmission Unit: " & objNicConfig.MTU
  WScript.Echo "    Maximum Transmission Unit path discovery enabled: " & _
   objNicConfig.PMTUDiscoveryEnabled
  WScript.Echo "    Maximum number of connect request retransmissions: " & _
   objNicConfig.TcpMaxConnectRetransmissions
  WScript.Echo "    Maximum number of data segment retransmissions: " & _
   objNicConfig.TcpMaxDataRetransmissions
  WScript.Echo "    Maximum number of simultaneous open connections: " & _
   objNicConfig.TcpNumConnections
  WScript.Echo "    Use RFC 1122 specification for urgent data: " & _
   objNicConfig.TcpUseRFC1122UrgentPointer
  WScript.Echo "    Maximum TCP receive window size: " & _
   objNicConfig.TcpWindowSize
Next

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

C:\scripts>arp-ip-tcp-settings.vbs

ARP, IP and TCP packet settings

Host Name: .

Network Adapter: 1

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

Scheduler Miniport

ARP Settings:

ARP queries use source routing on Token Ring:

ARP uses SNAP encoding on Ethernet:

IP packet settings:

Default Type Of Service:

Default Time To Live:

IP uses zeros-broadcasts:

TCP Settings:

Keep Alive Interval:

Keep Alive Time:

Maximum Transmission Unit:

Maximum Transmission Unit path discovery enabled:

Maximum number of connect request retransmissions:

Maximum number of data segment retransmissions:

Maximum number of simultaneous open connections:

Use RFC 1122 specification for urgent data:

Maximum TCP receive window size:

Verwalten von IPX

Internetwork Packet Exchange (IPX) ist ein Protokoll, das in älteren Novell NetWare-Netzwerken verwendet wird. Die Klasse Win32_NetworkAdapterConfiguration stellt ein paar Eigenschaften und Methoden für die IPX-Konfiguration bereit, die in Netzwerken mit NetWare-basierten und Windows-basierten Clients sinnvoll sein können.

In Tabelle 33 werden die IPX-Eigenschaften für die Klasse Win32_NetworkAdapterConfiguration beschrieben.

Tabelle 33 IPX-Eigenschaften der Klasse "Win32_NetworkAdapterConfiguration"

EigenschaftTypBeschreibung

IPXEnabled

Boolean-Wert

TRUE gibt an, dass das IPX-Protokoll für diesen Adapter gebunden und aktiviert ist.

IPXAddress

Zeichenfolge

IPX-Adresse des Netzwerkadapters. Die IPX-Adresse identifiziert ein Computersystem in Netzwerken, die das IPX-Protokoll verwenden.

IPXFrameType

Uint32-Array

Array von Frametypkennungen. Die Werte in diesem Array entsprechen den Elementen in IPXNetworkNumber.

O = Ethernet II

1 = Ethernet 802.3

2 = Ethernet 802.2

3 = Ethernet SNAP

255 = AUTO

IPXMediaType

Uint32

IPX-Medientypkennung.

1 = Ethernet

2 = Token Ring

3 = FDDI

8 = ARCNET

IPXNetworkNumber

Zeichenfolgenarray

Array von Zeichen, die eine Kombination aus Frames und Netzwerkadapter auf dem Computersystem eindeutig kennzeichnen. Das NWLink IPX/SPX/NetBIOS-kompatible Transportprotokoll (NWLink) unter Windows 2000 und Windows NT 4.0 und höher verwendet zwei unterschiedliche Netzwerknummerntypen. Diese Nummer wird auch als externe Netzwerknummer bezeichnet. Sie muss für jedes Netzwerksegment eindeutig sein. Die Reihenfolge in dieser Zeichenfolgenliste entspricht (pro Element) den Elementen in der IPXFrameType-Eigenschaft.

IPXVirtualNetNumber

Zeichenfolge

Eindeutige Kennung des Computersystems im Netzwerk. Diese Kennung ist eine achtstellige Hexadezimalzahl. Windows NT und Windows 2000 verwenden die virtuelle Netzwerknummer, die auch als interne Netzwerknummer bezeichnet wird, für internes Routing.

Alle Eigenschaften in der vorstehenden Tabelle sind schreibgeschützt.

In Tabelle 34 werden die IPX-Methoden für die Klasse Win32_NetworkAdapterConfiguration beschrieben.

Tabelle 34 IPX-Methoden für die Klasse "Win32_NetworkAdapterConfiguration"

MethodeParameterBeschreibung

SetIPXFrameTypeNetworkPairs

IPXNetworkNumber – Zeichenfolgenarray

Array von Zeichen, die einen Adapter auf dem Computersystem eindeutig kennzeichnen. Das NWLink-Protokoll unter Windows 2000 und Windows NT 3.51 oder höher verwendet zwei unterschiedliche Netzwerknummerntypen. Diese Nummer wird auch als externe Netzwerknummer bezeichnet. Sie muss für jedes Netzwerksegment eindeutig sein. Für die Werte in dieser Zeichenfolgenliste ist ein entsprechender Wert im IPXFrameType-Parameter erforderlich, der den für dieses Netzwerk verwendeten Paketframetyp identifiziert.

IPXFrameType – int32-Array

Array (mit ganzen Zahlen) von Frametypkennungen. Die Werte in diesem Array entsprechen den Elementen im IPXNetworkNumber-Parameter.

Statische Methode. Legt die IPX-Netzwerknummern/-Framepaare für diesen Netzwerkadapter fest. Windows 2000 und Windows NT 3.51 oder höher verwenden eine IPX-Netzwerknummer für Routingzwecke. Diese Nummer wird jeder konfigurierten Kombination aus Frametyp und Netzwerkadapter auf dem Computersystem zugewiesen. Diese Nummer wird auch als externe Netzwerknummer bezeichnet. Sie muss für jedes Netzwerksegment eindeutig sein. Wenn der Frametyp auf AUTO festgelegt ist, sollte die Netzwerknummer 0 sein.

SetIPXVirtualNetworkNumber

IPXNetworkNumber – Zeichenfolgenarray

Array von Zeichen, die einen Adapter auf dem Computersystem eindeutig kennzeichnen. Das NWLink-Protokoll unter Windows 2000 und Windows NT 3.51 oder höher verwendet zwei unterschiedliche Netzwerknummerntypen. Diese Nummer wird auch als externe Netzwerknummer bezeichnet. Sie muss für jedes Netzwerksegment eindeutig sein. Für die Werte in dieser Zeichenfolgenliste ist ein entsprechender Wert im IPXFrameType-Parameter erforderlich, der den für dieses Netzwerk verwendeten Paketframetyp identifiziert.

IPXFrameType – int32-Array

Array (mit ganzen Zahlen) von Frametypkennungen. Die Werte in diesem Array entsprechen den Elementen im IPXNetworkNumber-Parameter.

Statische Methode. Legt die virtuelle IPX-Netzwerknummer auf dem Zielcomputer fest. Windows 2000 und Windows NT 3.51 oder höher verwenden eine interne Netzwerknummer für internes Routing. Die interne Netzwerknummer wird auch als virtuelle Netzwerknummer bezeichnet, die das Computersystem im Netzwerk eindeutig identifiziert.

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

0 bedeutet: erfolgreicher Abschluss.

1 bedeutet: erfolgreicher Abschluss, Neustart erforderlich.

Zahlen größer als 1 bedeuten, dass ein Problem aufgetreten ist und die Methode nicht abgeschlossen werden konnte. Im WMI-SDK werden die Bedeutungen der Rückgabewerte für diese Methoden aufgeführt.

Schritte zur Skripterstellung

Das Skript in Listing 50 zeigt IPX-basierte Eigenschaften an, ohne jedoch IPX-Einstellungen zu konfigurieren. Dieses Skript verwendet die Select Case-Anweisung (VBScript), um mehrere Möglichkeiten für einen Wert nutzen zu können. In diesem Fall werden die von der Eigenschaft zurückgegebenen ganzen Zahlen in aussagekräftige (beschreibende) Zeichenfolgen konvertiert.

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

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.

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

4.

Zeigen Sie für jede Netzwerkadapterkonfiguration in der Auflistung die IPX-Eigenschaften an.

5.

Verwenden Sie Select Case-Anweisungen, um die von den Eigenschaften IPXFrameType und IPXMediaType zurückgegebenen Werte für ganze Zahlen in aussagekräftige (beschreibende) Zeichenfolgen zu konvertieren.

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

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

 WScript.Echo VbCrLf & "IPX Settings"

 For Each objNicConfig In colNicConfigs
  WScript.Echo VbCrLf & "  Network Adapter " & objNicConfig.Index
  WScript.Echo "    " & objNicConfig.Description
  WScript.Echo "    IPX Enabled: " & objNicConfig.IPXEnabled
  If objNicConfig.IPXEnabled Then
    WScript.Echo "    IPX Address: " & objNicConfig.IPXAddress
    WScript.Echo "    IPX Network Number(s):"
    If Not IsNull(objNicConfig.IPXNetworkNumber) Then
      For Each strIPXNetworkNumber In objNicConfig.IPXNetworkNumber
        WScript.Echo "        " & strIPXNetworkNumber
      Next
    End If
    WScript.Echo "    IPX Virtual Network Number: " & _
     objNicConfig.IPXVirtualNetNumber
    WScript.Echo "    IPX Frame Type(s):"
    If Not IsNull(objNicConfig.IPXFrameType) Then
      For Each intIPXFrameType In objNicConfig.IPXFrameType
        Select Case intIPXFrameType
          Case 0 strIPXFrameType = "Ethernet II"
          Case 1 strIPXFrameType = "Ethernet 802.3"
          Case 2 strIPXFrameType = "Ethernet 802.2"
          Case 3 strIPXFrameType = "Ethernet SNAP"
          Case 255 strIPXFrameType = "AUTO"
          Case Else strIPXFrameType = "Frame type cannot be determined."
        End Select
        WScript.Echo "        " & strIPXFrameType
      Next
    End If
    intIPXMediaType = objNicConfig.IPXMediaType
    Select Case intIPXMediaType
      Case 1 strIPXMediaType = "Ethernet"
      Case 2 strIPXMediaType = "Token ring"
      Case 3 strIPXMediaType = "FDDI"
      Case 255 strIPXMediaType = "ARCNET"
      Case Else strIPXMediaType = "Media type cannot be determined."
    End Select
    WScript.Echo "    IPX Media Type: " & strIPXMediaType
  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>ipxsettings.vbs

IPX Settings

Network Adapter 1

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

Scheduler Miniport

IPX Enabled: False

Network Adapter 2

RAS Async Adapter

IPX Enabled: False

Network Adapter 3

Packet Scheduler Miniport

IPX Enabled: False

Network Adapter 4

WAN Miniport (L2TP)

IPX Enabled: False

Network Adapter 5

WAN Miniport (PPTP)

IPX Enabled: False

Network Adapter 6

WAN Miniport (PPPOE)

IPX Enabled: False

Network Adapter 7

Direct Parallel

IPX Enabled: False

Network Adapter 8

WAN Miniport (IP)

IPX Enabled: False

Network Adapter 9

Packet Scheduler Miniport

IPX Enabled: False

Auflisten der Netzwerkprotokolle auf einem Computer

Wenn Sie ermitteln müssen, welche Netzwerkprotokolle auf einem bestimmten Host installiert sind, bietet Ihnen die WMI-Klasse Win32_NetworkProtocol Zugriff auf viele Parameter für jedes Protokoll. Im Zusammenhang mit dem Inhalt dieses Dokuments müssen Sie jedoch wahrscheinlich nur wissen, ob TCP/IP, NetBIOS und möglicherweise IPX installiert sind, obwohl die Klasse auch Informationen zu anderen Protokollen (z. B. QoS-RSVP) zurückgibt. Fast alle anderen Eigenschaften dieser Klasse geben Einzelheiten zurück, die für die Skripterstellung für Netzwerkclients irrelevant sind.

Sie können auch die IPEnabled-Eigenschaft bzw. die IPXEnabled-Eigenschaft der Klasse Win32_NetworkAdapterConfiguration Überprüfen. So können Sie feststellen, ob TCP/IP oder IPX auf den einzelnen Netzwerkadaptern installiert ist. Wenn Sie Informationen zu NetBIOS auf bestimmten Netzwerkadaptern erhalten möchten, verwenden Sie die TcpipNetbiosOptions-Eigenschaft der Klasse Win32_NetworkAdapterConfiguration.

Die Klasse Win32_NetworkProtocol umfasst keine Methoden. Alle zugehörigen Eigenschaften sind schreibgeschützt und beziehen sich auf das gesamte Computersystem – statt auf einzelne Netzwerkadapter (wie die meisten Eigenschaften von der Klasse Win32_NetworkAdapterConfiguration).

Für jedes Protokoll werden die jeweiligen Einstellungen individuell über die Klasse Win32_NetworkProtocol zusammengestellt. TCP/IP wird in Form von zwei Protokolltreibern aufgelistet: MSAFD Tcpip [TCP/IP] für TCP und MSAFD Tcpip [UDP/IP] für UDP. Pro Netzwerkadapter werden zwei NetBIOS-Schnittstellen aufgelistet (vom GUID identifiziert): SEQPACKET und DATAGRAM.

Schritte zur Skripterstellung

Das Skript in Listing 51 listet alle auf einem Computer installierten Netzwerkprotokolle auf.

1.

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

2.

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

3.

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

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

4.

Zeigen Sie für jedes installierte Netzwerkprotokoll in der Auflistung den Protokollnamen, die Beschreibung und den Status an.

Listing 51 Netprotocols.vbs

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

 strComputer = "."

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

 WScript.Echo VbCrLf & "Host: " & strComputer & VbCrLf & _
 "  Network Protocols Installed"

 For Each objNetProtocol In colNetProtocols
  WScript.Echo VbCrLf & "    Protocol Name: " & objNetProtocol.Name
  WScript.Echo "      Description: " & objNetProtocol.Description
  WScript.Echo "      Status: " & objNetProtocol.Status
Next

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

C:\scripts>netprotocols.vbs

Host: .

Network Protocols Installed

Protocol Name: MSAFD Tcpip [TCP/IP]

Description: TCP/IP Protocol Driver

Status: OK

Protocol Name: MSAFD Tcpip [UDP/IP]

Description: TCP/IP Protocol Driver

Status: OK

Protocol Name: RSVP UDP Service Provider

Description: QoS RSVP

Status: Unknown

Protocol Name: RSVP TCP Service Provider

Description: QoS RSVP

Status: Unknown

Protocol Name: MSAFD NetBIOS [\Device\NetBT_Tcpip_{90505148-4B0A-495D-A68D-A

131E8EFF247}] SEQPACKET 0

Description: NetBIOS Interface

Status: OK

Protocol Name: MSAFD NetBIOS [\Device\NetBT_Tcpip_{90505148-4B0A-495D-A68D-A

131E8EFF247}] DATAGRAM 0

Description: NetBIOS Interface

Status: OK

Protocol Name: MSAFD NetBIOS [\Device\NetBT_Tcpip_{837F1F4E-3E51-4718-95B0-C

5E31D76BCD1}] SEQPACKET 1

Description: NetBIOS Interface

Status: OK

Protocol Name: MSAFD NetBIOS [\Device\NetBT_Tcpip_{837F1F4E-3E51-4718-95B0-C

5E31D76BCD1}] DATAGRAM 1

Description: NetBIOS Interface

Status: OK

Protocol Name: MSAFD NetBIOS [\Device\NetBT_Tcpip_{136E1638-D8FC-4182-8FE7-9

3CFEC053BC7}] SEQPACKET 2

Description: NetBIOS Interface

Status: OK

Protocol Name: MSAFD NetBIOS [\Device\NetBT_Tcpip_{136E1638-D8FC-4182-8FE7-9

3CFEC053BC7}] DATAGRAM 2

Description: NetBIOS Interface

Status: OK

Tools zum Erstellen von Skripts für andere Netzwerkprotokolle

Das Windows-Betriebssystem stellt Tools und Registrierungsschlüssel bereit, mit denen Sie Skripts für IPSec und für andere Netzwerkprotokolle auf Clients erstellen können. In Tabelle 35 werden die Befehlszeilentools zum Erstellen von Skripts für IPSec und andere Protokolle aufgelistet.

Tabelle 35 Befehlszeilentools für IPSec und andere Protokolle

BefehlszeilentoolRessource

Arp.exe

Windows-Betriebssysteme1

Getmac.exe

Windows 2000 Resource Kit

Hostname.exe

Windows-Betriebssysteme

Ipconfig.exe

Windows-Betriebssysteme

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

Netipxspxconfig.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-Betriebssysteme

Protocolbinding.vbs

Windows 2000 Resource Kit

Remote.exe

Windows Server 2003-Supporttools

Remotebefehlsdienst (Rcmd.exe und Rcmdsvc.exe)

Windows 2000 Resource Kit

Remotekonsole

Windows 2000 Resource Kit

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

Windows 2000 Resource Kit

Subnet_op.vbs

Windows 2000 Resource Kit

Telnet.exe

Windows-Betriebssysteme

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-Supporttools

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

In Tabelle 36 werden die WSH-Objekte aufgelistet, die Sie zum Erstellen von Skripts für andere Netzwerkprotokolle verwenden können.

Tabelle 36 WSH-Objekte für andere Netzwerkprotokolle

WSH-Objekt

WshController

WshNetwork

WshShell

In Tabelle 37 werden die WMI-Klassen aufgelistet, die Sie zum Erstellen von Skripts für andere Netzwerkprotokolle verwenden können.

Tabelle 37 WMI-Klassen für andere Netzwerkprotokolle

WMI-Klasse

Win32_NetworkAdapterConfiguration

Win32_NetworkAdapter

Win32_NetworkAdapterSetting (stellt die Beziehung zwischen Win32_NetworkAdapter und Win32_NetworkAdapterConfiguration dar)

Win32_NetworkProtocol

Win32_OperatingSystem

Win32_ProtocolBinding (Assoziationsklasse)

In Tabelle 38 werden die Registrierungsschlüssel aufgelistet, die Sie zum Erstellen von Skripts für andere Netzwerkprotokolle 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 38 Registrierungsunterschlüssel für andere Netzwerkprotokolle

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\Netman


**
**