Automatisieren von TCP/IP-Netzwerken auf Clients

Teil 6: Skripterstellung für WINS auf Clients

Veröffentlicht: 07. Dez 2004

Obwohl der Dienst WINS (Windows Internet Name Service) unter Windows XP und Windows Server 2003 hauptsächlich aus Gründen der Abwärtskompatibilität mit älteren NetBIOS-basierten Versionen von Windows und Netzwerkanwendungen bereitgestellt wird, dient er vielfach weiterhin als Namensauflösungssystem für NetBIOS-Namen. Abbildung 12 zeigt die Registerkarte WINS des Dialogfelds Erweiterte TCP/IP-Einstellungen, die über die Windows-Benutzeroberfläche Zugriff auf diese Einstellungen bietet.

06ATNC01.gif

Abbildung 12 Festlegen der NetBIOS-Namensauflösung über die Windows-Benutzeroberfläche
Bild maximieren

Bei Skripts, die WMI verwenden, stellt die Klasse Win32_NetworkAdapterConfiguration Funktionalität zum Verwalten der WINS-Konfiguration bereit, die mit der Konfiguration zum Verwalten von DNS vergleichbar ist.

Falls sowohl WINS als auch DNS in einem Netzwerk eingesetzt wird, kann DNS von WINS als Sicherung für die Namensauflösung verwendet werden und umgekehrt. Wenn Sie WINS unter Verwendung der Klasse Win32_NetworkAdapterConfiguration aktivieren, kann der Dienst von einem der an die EnableWINS-Methode übergebenen Parameter so konfiguriert werden, dass er den DNS-Server nach Namen abfragt, die bei der NetBIOS-Namensauflösung nicht aufgelöst werden können.

Darüber hinaus bietet die Klasse Win32_NetworkAdapterConfiguration eine Methode, die den Standardvorgang von NetBIOS über TCP/IP aktivieren oder deaktivieren kann. Wenn DHCP verwendet wird, kann diese Methode einen Client zum Abrufen der NetBIOS-Einstellungen von DHCP konfigurieren. In Tabelle 19 werden die WINS-Eigenschaften für die Klasse Win32_NetworkAdapterConfiguration beschrieben.

Tabelle 19 WINS-Eigenschaften für die Klasse "Win32_NetworkAdapterConfiguration"

EigenschaftTypBeschreibung

DNSEnabledForWINSResolution

Boolscher Wert

TRUE gibt an, dass DNS für die Namensauflösung über WINS aktiviert ist. Wenn der Name mithilfe von DNS nicht aufgelöst werden kann, wird die Anforderung an WINS weitergeleitet.

TcpipNetbiosOptions

Neu bei Windows XP

Uint32

Einstellungen für NetBIOS über TCP/IP. Die Werte lauten:

0 = NetBIOS über DHCP aktivieren

1 = NetBIOS aktivieren

2 = NetBIOS deaktivieren

WINSEnableLMHostsLookup

Boolscher Wert

TRUE gibt an, dass die lokale LMHosts-Datei verwendet wird. Diese enthält die Zuordnung von IP-Adressen zu Hostnamen. Im lokalen System ist die Datei im Pfad %systemroot%\System32\Drivers\etc gespeichert.

WINSHostLookupFile

Zeichenfolge

Pfad zu einer LMHosts-Datei im lokalen System. Diese Datei enthält die Zuordnung von IP-Adressen zu Hostnamen. Wenn die in dieser Eigenschaft angegebene Datei gefunden wird, wird sie in den Ordner %systemroot%\System32\Drivers\etc des lokalen Systems kopiert. Diese Eigenschaft ist nur gültig, wenn die WINSEnableLMHostsLookup-Eigenschaft TRUE lautet.

WINSPrimaryServer

Zeichenfolge

IP-Adresse für den primären WINS-Server.

WINSScopeID

Zeichenfolge

Wert, der an den NetBIOS-Namen angehängt wird und eine Gruppe von Computersystemen isoliert, die nur miteinander kommunizieren. Er wird für alle NetBIOS-Transaktionen über TCP/IP-Kommunikationen von dem betreffenden Computersystem aus verwendet. Computer, die mit identischen Bereichskennungen konfiguriert sind, können mit diesem Computer kommunizieren. TCP/IP-Clients mit anderen Bereichskennungen ignorieren Pakete von Computern mit dieser Bereichskennung. Diese Eigenschaft ist nur gültig, wenn die EnableWINS-Methode erfolgreich ausgeführt wurde.

WINSSecondaryServer

Zeichenfolge

IP-Adresse für den sekundären WINS-Server.

Alle Eigenschaften in der vorstehenden Tabelle sind schreibgeschützt.

In Tabelle 20 werden die WINS-Methoden für die Klasse Win32_NetworkAdapterConfiguration beschrieben.

Tabelle 20 WINS-Methoden für die Klasse "Win32_NetworkAdapterConfiguration"

MethodeParameterBeschreibung

EnableWINS

DNSEnabledForWINSResolution – Boolean-Wert

WINSEnableLMHostsLookup – Boolean-Wert

WINSHostLookupFile – Zeichenfolge

WINSScopeID – Zeichenfolge

Statische Methode. Aktiviert die für TCP/IP spezifischen Einstellungen, ist jedoch unabhängig vom Netzwerkadapter.

SetWINSServer

WINSPrimaryServer – Zeichenfolge

WINSSecondaryServer – Zeichenfolge

Statische Methode. Legt den primären und sekundären WINS-Server auf dem TCP/IP-Netzwerkadapter fest. Diese Methode wird unabhängig vom Netzwerkadapter angewendet.

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.

Dieser Abschnitt enthält die Schritte zur Skripterstellung sowie Beispielskripts für die entsprechenden WINS-Aufgaben:

Anzeigen von WINS-Clientinformationen

Aktivieren von NetBIOS

Aktivieren von WINS

Festlegen von WINS-Servern für einen Client

Anzeigen von WINS-Clientinformationen

Beim Verwalten von WINS auf Clients besteht der erste Schritt wie bei DHCP und DNS normalerweise darin, die aktuellen Einstellungen zu ermitteln. In diesem Abschnitt wird gezeigt, wie die aktuellen NetBIOS- und WINS-Einstellungen abgerufen werden.

Schritte zur Skripterstellung

Das Skript in Listing 39 zeigt die WINS-Clienteinstellungen für die einzelnen Netzwerkadapterkonfigurationen auf einem Computer an.

1.

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

2.

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

3.

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

Weisen Sie die Eigenschaft DNSHostName der Klasse Win32_NetworkAdapterConfiguration einer Variablen zu.

6.

Verwenden Sie eine Select Case-Anweisung zum Konvertieren der Werte für die TcpipNetbiosOptions-Eigenschaft in aussagekräftige Zeichenfolgen.

7.

Verketten Sie die Bezeichnungen, die aussagekräftige Zeichenfolge für die TcpipNetbiosOptions-Eigenschaft sowie die Werte für die Win32_NetworkAdapterConfiguration-Eigenschaften Index, Description, WINSPrimaryServer, WINSSecondaryServer, WINSScopeID, WINSEnableLMHostsLookup, WINSHostLookupFile und DNSEnabledForWINSResolution zu einer Zeichenfolge.

8.

Verketten Sie bei jeder nachfolgenden Iteration durch einen anderen Netzwerkadapter die zugehörige Zeichenfolge mit der ursprünglichen Zeichenfolge.

9.

Zeigen Sie den Hostnamen und die Einstellungen für jeden Adapter an.

Listing 39 Winssettings.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 colNicConfigs = objWMIService.ExecQuery _
 ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")

 For Each objNicConfig In colNicConfigs
  strDNSHostName = objNicConfig.DNSHostName
  intNetBIOS = objNicConfig.TcpipNetbiosOptions
  Select Case intNetBIOS
    Case 0 strNetBIOS = "Use NetBIOS setting from the DHCP server."
    Case 1 strNetBIOS = "Enable NetBIOS over TCP/IP."
    Case 2 strNetBIOS = "Disable NetBIOS over TCP/IP."
    Case Else strNetBIOS = "Unable to determine setting for NetBIOS " & _
     "Over TCP/IP."
  End Select
  strWINSSettings = strWINSSettings & VbCrLf & VbCrLf & _
   "  Network Adapter " & objNicConfig.Index & VbCrLf & _
   "    " & objNicConfig.Description & VbCrLf & VbCrLf & _
   "    NetBIOS: " & strNetBIOS & VbCrLf & _
   "    WINS Primary Server:             " & _
   objNicConfig.WINSPrimaryServer & VbCrLf & _
   "    WINS Secondary Server:           " & _
   objNicConfig.WINSSecondaryServer & VbCrLf & _
   "    WINS Scope ID:                   " & _
   objNicConfig.WINSScopeID & VbCrLf & _
   "    WINS Enable LMHosts Lookup:      " & _
   objNicConfig.WINSEnableLMHostsLookup & VbCrLf & _
   "    WINS Host Lookup File:           " & _
   objNicConfig.WINSHostLookupFile & VbCrLf & _
   "    DNS Enabled For WINS Resolution: " & _
   objNicConfig.DNSEnabledForWINSResolution
Next

 WScript.Echo VbCrLf & "WINS Settings" & VbCrLf & VbCrLf & _
 "Host Name: " & strDNSHostName & strWINSSettings

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

C:\scripts>winssettings.vbs

WINS Settings

Host Name: client1

Network Adapter 1

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

Scheduler Miniport

NetBIOS: Enable NetBIOS over TCP/IP.

WINS Primary Server:

WINS Secondary Server:

WINS Scope ID:

WINS Enable LMHosts Lookup: True

WINS Host Lookup File:

DNS Enabled For WINS Resolution: False

Aktivieren von NetBIOS

Weil WINS NetBIOS-Namen auflöst, müssen Sie NetBIOS aktivieren, wenn Sie WINS auf einem Client aktivieren. Wenn DHCP aktiviert ist, kann der Client NetBIOS-Einstellungen vom DHCP-Server abrufen. Wenn ein Client aber eine statische IP-Adresse verwendet, müssen Sie WINS-Einstellungen auf diesem Client konfigurieren.

Die Einstellung für NetBIOS über TCP/IP wird in der Windows-Benutzeroberfläche durch die drei Optionsfelder im unteren Abschnitt der Registerkarte WINS des Dialogfelds Erweiterte TCP/IP-Einstellungen bereitgestellt (siehe Abbildung 12).

Tabelle 21 zeigt, wie diese Optionsfelder den drei möglichen Werten der TcpipNetbiosOptions-Eigenschaft von Win32_Network AdapterConfiguration entsprechen, die Sie mithilfe der SetTCPIPNetBIOS()-Methode festlegen können.

Tabelle 21 Werte der "TcpipNetbiosOptions"-Eigenschaft

WertBedeutungVerwendung

0

NetBIOS über DHCP aktivieren

Wenn DHCP aktiviert ist, um NetBIOS-Einstellungen vom DHCP-Server abzurufen. Falls eine statische IP-Adresse verwendet wird oder der DHCP-Server keine NetBIOS-Einstellung bereitstellt, aktiviert diese Einstellung NetBIOS über TCP/IP.

1

NetBIOS aktivieren

Wenn die statische IP-Adressierung aktiviert und DHCP deaktiviert ist

2

NetBIOS deaktivieren

Wenn NetBIOS im Netzwerk nicht verwendet wird

Schritte zur Skripterstellung

caution.gifVorsicht
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 40 aktiviert NetBIOS auf einem Netzwerkadapter. Es verwendet die SetTCPIPNetBIOS()-Methode der Klasse Win32_NetworkAdapterConfiguration zum Festlegen der TcpipNetbiosOptions-Eigenschaft. Diese Eigenschaft ist neu bei Windows XP.

1.

Definieren Sie Konstanten zur Darstellung der drei möglichen Werte für die TcpipNetbiosOptions-Eigenschaft.

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.

Zeigen Sie den Namen des Computers an.

6.

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

7.

Zeigen Sie die Index-Eigenschaft des Netzwerkadapters an.

8.

Rufen Sie die SetTCPIPNetBIOS-Methode der Klasse Win32_NetworkAdapterConfiguration auf, und übergeben Sie ihr als einzigen Parameter eine der drei Konstanten, die die Werte der TcpipNetbiosOptions-Eigenschaft darstellen.

9.

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

10.

Fragen Sie die Klasse Win32_NetworkAdapterConfiguration erneut ab.

11.

Zeigen Sie die neue TcpipNetbiosOptions-Eigenschaft an, und verwenden Sie dabei eine Select Case-Anweisung zum Konvertieren der ganzen Zahl in eine erklärende Zeichenfolge.

Listing 40 Wins-enablenetbios.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
On Error Resume Next

Const ENABLE_NETBIOS_VIA_DHCP = 0
Const ENABLE_NETBIOS = 1
Const DISABLE_NETBIOS = 2
strComputer = "."

 Set objWMIService = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colNicConfigs = objWMIService.ExecQuery _
 ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
 WScript.Echo VbCrLf & "Host Name: " & strComputer
For Each objNicConfig in colNicConfigs

  WScript.Echo VbCrLf & "  Network Adapter " & objNicConfig.Index & _
   "    " & objNicConfig.Description & VbCrLf & _
  "    Attempting to set NetBIOS over TCP/IP default."
  intNetBIOS = objNicConfig.SetTCPIPNetBIOS(ENABLE_NETBIOS_VIA_DHCP)
  If intNetBIOS = 0 Then
    WScript.Echo "    Successfully set NetBIOS over TCP/IP default."
  ElseIf intNetBIOS = 1 Then
    WScript.Echo "    Successfully set NetBIOS over TCP/IP default." & _
     VbCrLf & "    Must reboot."
  Else
    WScript.Echo "    Unable to set NetBIOS default."
  End If
Next

 WScript.Echo VbCrLf & String(80, "-")

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

 For Each objNicConfig In colNicConfigs
  WScript.Echo VbCrLf & _
   "  Network Adapter " & objNicConfig.Index & VbCrLf & _
   "    " & objNicConfig.Description
  intNetBIOS = objNicConfig.TcpipNetbiosOptions
  Select Case intNetBIOS
    Case 0 strNetBIOS = "Use NetBIOS setting from the DHCP server"
    Case 1 strNetBIOS = "Enable NetBIOS over TCP/IP"
    Case 2 strNetBIOS = "Disable NetBIOS over TCP/IP"
  End Select
  WScript.Echo "    NetBIOS Over TCP/IP: " & strNetBIOS
Next

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

C:\scripts>wins-enablenetbios.vbs

Host Name: .

Network Adapter 1 3Com 3C920 Integrated Fast Ethernet Controller (3C905C-TX

Compatible) - Packet Scheduler Miniport

Attempting to set NetBIOS over TCP/IP default.

Successfully set NetBIOS over TCP/IP default.

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

Network Adapter 1

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

Scheduler Miniport

NetBIOS Over TCP/IP: Enable NetBIOS over TCP/IP

Aktivieren von WINS

Wenn NetBIOS über DHCP aktiviert ist, brauchen Sie WINS nicht zu aktivieren oder WINS-Server manuell zuzuweisen, weil der Client diese Einstellungen vom DHCP-Server abruft. Wenn NetBIOS jedoch unabhängig von DHCP aktiviert ist, müssen Sie WINS aktivieren sowie IP-Adressen für einen primären Server und (optional) für einen sekundären WINS-Server zuweisen.

Die Klasse Win32_NetworkAdapterConfiguration stellt hierfür zwei Methoden bereit: Eine Methode aktiviert WINS und konfiguriert vier WINS-Einstellungen; eine andere Methode weist primäre und sekundäre WINS-Server zu.

Schritte zur Skripterstellung

caution.gifVorsicht
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 41 aktiviert WINS und legt vier Parameter fest, die an die EnableWINS-Methode übergeben werden. In Tabelle 22 werden die Parameter der EnableWINS-Methode beschrieben.

Tabelle 22 Parameter der "EnableWINS"-Methode

ParameterTypBeschreibung

DNSEnabledForWINSResolution

Boolean-Wert

Ein Wert, der angibt, ob DNS als Sicherungsmethode für die Namensauflösung aktiviert werden soll.

WINSEnableLMHostsLookup

Boolean-Wert

Ein Wert, der angibt, ob die Verwendung der LMHOSTS-Datei für die Zuordnung von NetBIOS-Namen zu IP-Adressen aktiviert werden soll.

WINSHostLookupFile

Zeichenfolge

Der Pfad zur LMHOSTS-Datei. Dieser Parameter ist optional und wird nur verwendet, wenn der vorherige Wert (WINSEnableLMHostsLookup) True lautet.

WINSScopeID

Zeichenfolge

Die Bereichskennung, die an den NetBIOS-Namen des Computers angehängt werden soll. Computer, die die gleiche Bereichskennung verwenden, können miteinander kommunizieren.

Der Name jedes Parameters ist auch der Name der Eigenschaft, die zum Abrufen des Wertes verwendet werden kann.

EnableWINS ist eine statische Methode, die für alle Instanzen der Klasse (in diesem Fall für alle Netzwerkadapter) gilt.

1.

Erstellen Sie eine Variable zur Angabe des Computernamens.

2.

Erstellen Sie Variablen zur Angabe der vier Parameter, die an die EnableWINS-Methode übergeben werden sollen.

3.

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

4.

Rufen Sie die Get-Methode für die Klasse Win32_NetworkAdapterConfiguration auf.

Damit wird ein Objektverweis auf die Klasse Win32_NetworkAdapterConfiguration selbst statt einer Auflistung der Klasseninstanzen zurückgegeben. Dieser Verweis auf die Klasse muss zum Aufrufen der statischen Methode EnableWINS verwendet werden.

5.

Zeigen Sie den Namen des Computers an.

6.

Rufen Sie die statische Methode EnableWINS von Win32_NetworkAdapterConfiguration auf, und übergeben Sie ihr die vorstehend definierten vier Parameter.

7.

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

8.

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

9.

Zeigen Sie die Einstellungen an, die mit der EnableWINS-Methode konfiguriert wurden.

Listing 41 Wins-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
On Error Resume Next

strComputer = "."
blnDNSEnabledForWINSResolution = True
blnWINSEnableLMHostsLookup = True
strWINSHostLookupFile = ""
strWINSScopeID = "WORKGROUP"

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

 WScript.Echo VbCrLf & "Host Name: " & strComputer & VbCrLf & _
 "  Attempting to enable WINS"
intEnableWINS = objNicConf.EnableWINS(blnDNSEnabledForWINSResolution, _
 blnWINSEnableLMHostsLookup, strWINSHostLookupFile, strWINSScopeID)
If intEnableWINS = 0 Then
  WScript.Echo "    Successfully enabled WINS on all network adapters."
ElseIf intEnableWINS = 1 Then
  WScript.Echo "    Successfully enabled WINS on all network adapters." & _
   VbCrLf & "    Must reboot."
Else
  WScript.Echo "    Unable to enable WINS."
End If

 WScript.Echo VbCrLf & String(80, "-")

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

 For Each objNicConfig In colNicConfigs
  WScript.Echo VbCrLf & _
   "  Network Adapter " & objNicConfig.Index & VbCrLf & _
   "    " & objNicConfig.Description
  WScript.Echo "    DNS Enabled For WINS Resolution: " & _
   objNicConfig.DNSEnabledForWINSResolution
  WScript.Echo "    WINS Enable LMHosts Lookup: " & _
   objNicConfig.WINSEnableLMHostsLookup
  WScript.Echo "    WINS Host Lookup File: " & _
   objNicConfig.WINSHostLookupFile
  WScript.Echo "    WINS Scope ID: " & objNicConfig.WINSScopeID
Next

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

C:\scripts>wins-enable.vbs

Host Name: .

Attempting to enable WINS

Successfully enabled WINS on all network adapters.

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

Network Adapter 1

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

Scheduler Miniport

DNS Enabled For WINS Resolution: True

WINS Enable LMHosts Lookup: True

WINS Host Lookup File:

WINS Scope ID: WORKGROUP

Festlegen von WINS-Servern für einen Client

Wenn NetBIOS unabhängig von DHCP aktiviert ist, müssen Sie IP-Adressen für einen primären Server und (optional) für einen sekundären WINS-Server zuweisen sowie WINS aktivieren.

Die Klasse Win32_NetworkAdapterConfiguration stellt die SetWINSServer-Methode zum Zuweisen von WINS-Servern zu einem Client bereit.

Schritte zur Skripterstellung

caution.gifVorsicht
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 42 weist einem Client primäre und sekundäre WINS-Server zu.

SetWINSServer ist eine statische Methode, die für alle Instanzen der Klasse (in diesem Fall für alle Netzwerkadapter) gilt.

1.

Erstellen Sie eine Variable zur Angabe des Computernamens.

2.

Erstellen Sie zwei Variablen zur Angabe der IP-Adressen des primären und sekundären WINS-Servers, die an die EnableWINS-Methode übergeben werden sollen.

3.

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

4.

Rufen Sie die Get-Methode für die Klasse Win32_NetworkAdapterConfiguration auf.

Damit wird ein Objektverweis auf die Klasse Win32_NetworkAdapterConfiguration selbst statt einer Auflistung der Klasseninstanzen zurückgegeben. Dieser Verweis auf die Klasse muss zum Aufrufen der statischen Methode SetWINSServer verwendet werden.

5.

Zeigen Sie den Namen des Computers an.

6.

Rufen Sie die statische Methode SetWINSServer der Klasse Win32_NetworkAdapterConfiguration auf, und übergeben Sie ihr die vorstehend definierten beiden Parameter.

7.

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

8.

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

9.

Zeigen Sie die IP-Adressen der WINS-Server an, die mit der SetWINSServer-Methode konfiguriert wurden.

Listing 42 Wins-setservers.vbs

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

 strComputer = "."
strWINSPrimaryServer = "192.168.0.1"
strWINSSecondaryServer = "192.168.0.2"

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

 WScript.Echo VbCrLf & "Host Name: " & strComputer & VbCrLf & _
 "  Attempting to set WINS primary and secondary servers ..."

 For Each objNicConfig In colNicConfigs
  WScript.Echo VbCrLf & _
   "  Network Adapter " & objNicConfig.Index & VbCrLf & _
   "    " & objNicConfig.Description
  intSetWINSServer = objNicConfig.SetWINSServer(strWINSPrimaryServer, _
   strWINSSecondaryServer)
  If intSetWINSServer = 0 Then
    WScript.Echo "    Successfully set WINS servers."
  ElseIf intSetWINSServer = 1 Then
    WScript.Echo "    Successfully set WINS servers." & _
     VbCrLf & "    Must reboot."
  Else
    WScript.Echo "    Unable to set WINS servers."
  End If
Next

 WScript.Echo VbCrLf & String(80, "-")

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

 For Each objNicConfig In colNicConfigs
  WScript.Echo VbCrLf & _
   "  Network Adapter " & objNicConfig.Index & VbCrLf & _
   "    " & objNicConfig.Description
  WScript.Echo "    Primary WINS Server: " & objNicConfig.WINSPrimaryServer
  WScript.Echo "    Secondary WINS Server: " & _
   objNicConfig.WINSSecondaryServer
Next

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

C:\scripts>wins-setservers.vbs

Host Name: .

Attempting to set WINS primary and secondary servers ...

Network Adapter 1

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

Scheduler Miniport

Successfully set WINS servers.

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

Network Adapter 1

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

Scheduler Miniport

Primary WINS Server: 192.168.0.1

Secondary WINS Server: 192.168.0.2

Szenario: Vorbereiten eines Clients für WINS

Wenn Sie WINS auf einem Client konfigurieren möchten, müssen Sie zuerst entscheiden, ob und wie NetBIOS aktiviert werden soll. Wenn NetBIOS deaktiviert ist, können Sie WINS nicht verwenden. Ist NetBIOS über DHCP aktiviert, kann der Client die korrekten Einstellungen vom DHCP-Server abrufen. Wenn NetBIOS jedoch unabhängig von DHCP aktiviert ist, müssen Sie WINS aktivieren sowie den primären und sekundären WINS-Server zuweisen.

Mithilfe der im Abschnitt "Skripterstellung für die Verwaltung von Remotenetzwerken" dieses Dokumentes beschriebenen Verfahren können Sie dieses Skript problemlos zur Ausführung für mehrere Clients erweitern.

Schritte zur Skripterstellung

caution.gifVorsicht
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 43 ermöglicht Ihnen das Konfigurieren von Einstellungen für NetBIOS und WINS in einem Änderungsblock am Anfang des Listings. Zunächst wird der Modus von NetBIOS über TCP/IP auf jedem Netzwerkadapter festgelegt. Wenn NetBIOS aktiviert ist (allerdings nicht über DHCP), aktiviert das Skript WINS, konfiguriert die WINS-Einstellungen und legt die IP-Adressen der WINS-Server für den zu verwendenden Client fest.

1.

Definieren Sie Konstanten zur Darstellung der drei möglichen Werte für die TcpipNetbiosOptions-Eigenschaft.

2.

Erstellen Sie eine Variable zur Angabe des Computernamens.

3.

Erstellen Sie Variablen zur Angabe der Parameter, die an die EnableWINS-Methode übergeben werden sollen.

4.

Erstellen Sie Variablen zur Angabe der IP-Adressen des primären und sekundären WINS-Servers, die an die EnableWINS-Methode übergeben werden sollen.

5.

Initialisieren Sie zwei Variablen mit dem Wert False.

6.

Stellen Sie eine Verbindung zum WMI-Dienst her.

7.

Rufen Sie die Unterroutine GetSettings auf, die die aktuellen NetBIOS- und WINS-Einstellungen abruft.

8.

Rufen Sie die SetNetbios-Funktion auf, die den Modus für NetBIOS über TCP/IP auf den Wert festlegt, der in der Variablen intNetbiosTcpipSet angegeben wird.

9.

Wenn die resultierende Einstellung für NetBIOS über TCP/IP TCP/IP ENABLE_NETBIOS lautet, rufen Sie die SetWins-Funktion auf.

Lautet die Einstellung ENABLE_NETBIOS_VIA_DHCP bzw. DISABLE_NETBIOS, konfiguriert das Skript die WINS-Einstellungen nicht.

10.

Nach Abschluss eventueller Änderungen an den NetBIOS- oder WINS-Einstellungen rufen Sie die Unterroutine GetSettings erneut auf.

11.

Die Unterroutine GetSettings ruft die Werte für alle NetBIOS- oder WINS-Einstellungen ab und zeigt sie an.

12.

Die SetNetbios-Funktion überprüft die aktuelle Einstellung der TcpipNetbiosOptions-Eigenschaft. Wenn diese Eigenschaft mit der in der Variablen intNetbiosTcpipSet angegebenen Einstellung nicht identisch ist, ändert SetNetbios die Einstellung auf den Wert von intNetbiosTcpipSet. Die Funktion gibt den Wert True zurück, wenn der Wert für NetBIOS over TCP/IP festgelegt wurde; wenn dieser Wert nicht festgelegt wurde, gibt sie False zurück.

13.

Die SetWins-Funktion ruft zuerst die EnableWINS-Methode auf und verwendet dazu die Parameter, die in den Variablen am Anfang des Skripts angegeben wurden. Anschließend ruft die Funktion die SetWINSServer-Methode mit Parametern auf, die die IP-Adressen des primären und sekundären WINS-Servers angeben. Die Funktion gibt den Wert True zurück, wenn sowohl EnableWINS als auch SetWINSServer den Wert 0 zurückgegeben haben; wenn eine der beiden Methoden einen anderen Wert als 0 zurückgegeben hat, gibt die Funktion False zurück.

Listing 43 Wins-client.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
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
On Error Resume Next
 
Const ENABLE_NETBIOS_VIA_DHCP = 0
Const ENABLE_NETBIOS = 1
Const DISABLE_NETBIOS = 2
 
strComputer = "."
blnDNSEnabledForWINSResolution = True
blnWINSEnableLMHostsLookup = True
strWINSHostLookupFile = ""
strWINSScopeID = "WORKGROUP"
strWINSPrimaryServer = "192.168.0.1"
strWINSSecondaryServer = "192.168.0.2"
intNetbiosTcpipSet = ENABLE_NETBIOS
blnNetbiosSet = False
blnWinsSet = False
 
Set objWMIService = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
 
WScript.Echo VbCrLf & "Host Name: " & strComputer
 
WScript.Echo VbCrLf & "NetBIOS and WINS settings before:"
 
GetSettings
 
WScript.Echo VbCrLf & String(80, "-")
 
blnNetbiosSet = SetNetbios
If blnNetbiosSet = True Then
  Select Case intNetbiosTcpipSet
    Case 0
      WScript.Echo VbCrLf & "  NetBIOS settings obtained from the DHCP " & _
       "server." & VbCrLf & "  WINS parameters not set."
    Case 1
      WScript.Echo VbCrLf & "  NetBIOS over TCP/IP enabled." & _
       VbCrLf & "  Setting WINS parameters ..."
      blnWinsSet = SetWins
      If blnWinsSet = True Then
        WScript.Echo VbCrLf & "  All WINS parameters set."
      Else
        WScript.Echo VbCrLf & "  Unable to set all WINS parameters."
      End If
    Case 2
      WScript.Echo VbCrLf & "  NetBIOS over TCP/IP disabled." & _
       VbCrLf & "  WINS parameters not set."
    Case Else
      WScript.Echo VbCrLf & "  Could not determine setting for NetBIOS " & _
       "Over TCP/IP." & VbCrLf & "  WINS parameters not set."
  End Select
Else
  WScript.Echo VbCrLf & "  NetBIOS Over TCP/IP could not be enabled" & _
   VbCrLf & "  WINS parameters not set."
End If
 
WScript.Echo VbCrLf & String(80, "-")
 
WScript.Echo VbCrLf & "NetBIOS and WINS settings after:"
 
GetSettings
 
'******************************************************************************
 
Sub GetSettings
 
  Set colNicConfigs = objWMIService.ExecQuery _
   ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
 
  For Each objNicConfig In colNicConfigs
    WScript.Echo VbCrLf & "  Network Adapter " & objNicConfig.Index & _
     VbCrLf & "    " & objNicConfig.Description
    intNetBIOS = objNicConfig.TcpipNetbiosOptions
    Select Case intNetBIOS
      Case 0 strNetBIOS = "Use NetBIOS setting from the DHCP server"
      Case 1 strNetBIOS = "Enable NetBIOS over TCP/IP"
      Case 2 strNetBIOS = "Disable NetBIOS over TCP/IP"
    End Select
    WScript.Echo "    NetBIOS Over TCP/IP: " & strNetBIOS
    WScript.Echo "    DNS Enabled For WINS Resolution: " & _
      objNicConfig.DNSEnabledForWINSResolution
    WScript.Echo "    WINS Enable LMHosts Lookup: " & _
      objNicConfig.WINSEnableLMHostsLookup
    WScript.Echo "    WINS Host Lookup File: " & _
      objNicConfig.WINSHostLookupFile
    WScript.Echo "    WINS Scope ID: " & objNicConfig.WINSScopeID
    WScript.Echo "    Primary WINS Server: " & objNicConfig.WINSPrimaryServer
    WScript.Echo "    Secondary WINS Server: " & _
      objNicConfig.WINSSecondaryServer
  Next
 
End Sub
 
'******************************************************************************
 
Function SetNetbios
 
Set colNicConfigs = objWMIService.ExecQuery _
 ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
 
For Each objNicConfig in colNicConfigs
  WScript.Echo VbCrLf & "  Network Adapter " & objNicConfig.Index
  intNetBIOS = objNicConfig.TcpipNetbiosOptions
  If intNetBIOS = intNetbiosTcpipSet Then
    WScript.Echo "    NetBIOS Over TCI/IP already set to desired value."
    SetNetbios = True
  Else
    WScript.Echo "    Attempting to set NetBIOS Over TCI/IP value."
    intNetBIOS = objNicConfig.SetTCPIPNetBIOS(intNetbiosTcpipSet)
    If intNetBIOS = 0 Then
      WScript.Echo "    Successfully set NetBIOS over TCP/IP value."
      SetNetbios = True
    ElseIf intNetBIOS = 1 Then
      WScript.Echo "    Successfully set NetBIOS over TCP/IP value." & _
       VbCrLf & "    Must reboot."
      SetNetbios = True
    Else
      WScript.Echo "    Unable to set NetBIOS Over TCI/IP value."
      SetNetbios = False
    End If
  End If
Next
 
End Function
 
'******************************************************************************
 
Function SetWins
 
WScript.Echo VbCrLf & "  Attempting to enable WINS ..."
 
Set objNicConf = objWMIService.Get("Win32_NetworkAdapterConfiguration")
 
intEnableWINS = objNicConf.EnableWINS(blnDNSEnabledForWINSResolution, _
 blnWINSEnableLMHostsLookup, strWINSHostLookupFile, strWINSScopeID)
If intEnableWINS = 0 Then
  WScript.Echo "    Successfully enabled WINS on all network adapters."
ElseIf intEnableWINS = 1 Then
  WScript.Echo "    Successfully enabled WINS on all network adapters." & _
   VbCrLf & "    Must reboot."
Else
  WScript.Echo "    Unable to enable WINS."
End If
 
WScript.Echo VbCrLf & "  Attempting to set WINS primary and secondary servers ..."
 
Set colNicConfigs = objWMIService.ExecQuery _
 ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
 
For Each objNicConfig in colNicConfigs
  WScript.Echo VbCrLf & "  Network Adapter " & objNicConfig.Index
  intSetWINSServers = objNicConfig.SetWINSServer(strWINSPrimaryServer, _
   strWINSSecondaryServer)
  intSetWINSServersSum =   intSetWINSServersSum +  intSetWINSServers 
  If intSetWINSServers = 0 Then
    WScript.Echo "    Successfully set WINS servers."
  ElseIf intSetWINSServers = 1 Then
    WScript.Echo "    Successfully set WINS servers." & _
     VbCrLf & "    Must reboot."
  Else
    WScript.Echo "    Unable to set WINS servers."
  End If
Next
 
If (intEnableWINS = 0) And (intSetWINSServersSum = 0) Then
  SetWins = True
Else
  SetWins = False
End If
 
End Function

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

C:\scripts>wins-client.vbs

Host Name: .

NetBIOS and WINS settings before:

Network Adapter 1

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

Scheduler Miniport

NetBIOS Over TCP/IP: Disable NetBIOS over TCP/IP

DNS Enabled For WINS Resolution: True

WINS Enable LMHosts Lookup: False

WINS Host Lookup File:

WINS Scope ID: WORKGROUP

Primary WINS Server:

Secondary WINS Server:

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

Network Adapter 1

Attempting to set NetBIOS Over TCI/IP value.

Successfully set NetBIOS over TCP/IP value.

NetBIOS over TCP/IP enabled.

Setting WINS parameters ...

Attempting to enable WINS ...

Successfully enabled WINS on all network adapters.

Attempting to set WINS primary and secondary servers ...

Network Adapter 1

Successfully set WINS servers.

All WINS parameters set.

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

NetBIOS and WINS settings after:

Network Adapter 1

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

Scheduler Miniport

NetBIOS Over TCP/IP: Enable NetBIOS over TCP/IP

DNS Enabled For WINS Resolution: True

WINS Enable LMHosts Lookup: True

WINS Host Lookup File:

WINS Scope ID: WORKGROUP

Primary WINS Server: 192.168.0.1

Secondary WINS Server: 192.168.0.2

Tools zur Skripterstellung für WINS auf Clients

In Tabelle 23 werden die verfügbaren Windows-Tools zur Skripterstellung für WINS auf Clients aufgeführt.

Tabelle 23 Tools zur Skripterstellung für WINS auf Clients

TechnologieToolRessource

Befehlszeilentools

Netsh.exe

Windows-Betriebssysteme1

Befehlszeilentools

NETWINSCONFIG.PL

Windows 2000 Resource Kit

Befehlszeilentools

Wins.dll: Netzwerkmonitor-Parser für die WINS-Replikation

Windows Server 2003-Supporttools

Befehlszeilentools

Winschk.exe

Windows 2000 Resource Kit

Befehlszeilentools

Winscl.exe: WINS-Verwaltungstool

Windows 2000 Resource Kit

WSH

Keines

 

WMI

Win32_NetworkAdapterConfiguration

 

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

In Tabelle 24 sind die verfügbaren Registrierungsunterschlüssel zur Skripterstellung für WINS auf Clients aufgeführt.

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

Tabelle 24 Registrierungsunterschlüssel zur Skripterstellung für WINS auf Clients

Registrierungsunterschlüssel

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

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

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBIOS

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters


**
**