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.  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" 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" 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-ClientinformationenBeim 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 NetBIOSWeil 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 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 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 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 WINSWenn 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 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 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 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 ClientWenn 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 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 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 WINSWenn 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 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 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 ClientsIn 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 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 | |
In Tabelle 24 sind die verfügbaren Registrierungsunterschlüssel zur Skripterstellung für WINS auf Clients aufgeführt. 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 24 Registrierungsunterschlüssel zur Skripterstellung für WINS auf Clients 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 |
|