Im Zentrum von TCP/IP-Netzwerken steht die Zuweisung von IP-Adressen. Wenn in Ihrem Netzwerk DHCP (Dynamic Host Configuration Protocol) eingesetzt wird, verwenden Sie bereits eine Form der Automatisierung zur Verwaltung dieser kritischen Funktion. In den Anfängen der TCP/IP-Netzwerke wurden IP-Adressen von den Administratoren manuell zugewiesen. Als die Netzwerke wuchsen und komplexer wurden, erwies sich diese Vorgehensweise zunehmend als unpraktisch. Bei den ersten Versuchen zur Automatisierung dieser Funktion, wie z. B. RARP (Reverse Address Resolution Protocol) und BOOTP (Bootstrap Protocol), war weiterhin ein erheblicher Umfang an manueller Konfiguration erforderlich. DHCP wurde als Ersatz für diese Protokolle entwickelt und sollte deren Funktionalität auf ein Client-/Serverprotokoll erweitern, mit dessen Hilfe ein IP-Adresspool und die zugehörigen Clientkonfigurationsparameter mit weit geringerem administrativem Eingriff verwaltet werden konnten. Heutzutage stellt DHCP bei den meisten Netzwerken beliebiger Größe das Standardautomatisierungsverfahren für die Verwaltung der IP-Adresskonfiguration dar. Doch selbst wenn in Ihrem Netzwerk DHCP eingesetzt wird, müssen Sie in bestimmten Fällen, z. B. bei Ausschlüssen, möglicherweise dennoch statische IP-Adressen verwenden. Außerdem werden in manchen kleineren oder älteren Netzwerken nur statische IP-Adressen verwendet. DHCP-Server und -Clients arbeiten auch mit anderen TCP/IP-Komponenten auf signifikante Art und Weise zusammen. Beispielsweise aktualisieren DHCP-Clients und -Server bei Verwendung der dynamischen DNS-Aktualisierung DNS-Server mit Änderungen der IP-Adressen, um sicherzustellen, dass die Namensauflösung unverändert erhalten bleibt, während IP-Adressleases freigegeben und erneuert werden. In diesem Fall können Sie – wie bei den meisten TCP/IP-Einstellungen – Änderungen auf einem lokalen Computer über die Windows-Benutzeroberfläche manuell vornehmen. Wie Abbildung 9 zeigt, können Sie DHCP-Einstellungen auf der Registerkarte IP-Einstellungen des Dialogfelds Erweiterte TCP/IP-Einstellungen konfigurieren.  Abbildung 9 Konfigurieren der DHCP-Einstellung über die Windows-Benutzeroberfläche Bild maximieren Wie weiter oben erwähnt, können Sie mithilfe des Befehlszeilentools Ipconfig.exe DHCP-Clienteinstellungen abrufen, Leases freigeben und erneuern und andere DHCP-Clientaufgaben ausführen. Im Zusammenhang mit Remoteclients und mehreren Clients sowie für komplexe lokale Aufgaben, bei denen manuelle Fehler möglich sind, kann die Skripterstellung jedoch eine effizientere Alternative darstellen. In diesem Abschnitt wird erläutert, wie Skripts für die Verwaltung der IP-Adresszuweisung mithilfe von DHCP- und statischer Adressierung erstellt werden. Dieses Dokument behandelt nur die Verfahren zum Konfigurieren von Clients, obwohl die Änderungen an Clients in manchen Fällen auch Änderungen an den DHCP-Servern erfordern. Die Verwaltung von DHCP-Servern wird in diesem Dokument nicht behandelt. Auf dieser SeiteVerwalten von DHCP auf ClientsObwohl es sich bei DHCP bereits um eine Form der Automatisierung handelt, können Sie die Konfiguration von Clientgruppen mithilfe von Skripts automatisieren, damit DHCP genutzt wird. Über die Eigenschaften und Methoden der WMI-Klasse Win32_NetworkAdapterConfiguration können Sie DHCP-Einstellungen auflisten, DHCP aktivieren oder deaktivieren und Leases erneuern oder freigeben. In Tabelle 9 werden die Win32_NetworkAdapterConfiguration-Eigenschaften beschrieben, die für die IP-Adresszuweisung verwendet werden können. Tabelle 9 "Win32_NetworkAdapterConfiguration"-Eigenschaften für die IP-Adresszuweisung DefaultIPGateway | Zeichenfolgenarray | Array von IP-Adressen der Standardgateways, die vom Computersystem verwendet werden. | DHCPEnabled | Boolean-Wert | TRUE gibt an, dass der DHCP-Server dem Computersystem beim Herstellen einer Netzwerkverbindung eine IP-Adresse automatisch zuweist. | DHCPLeaseExpires | DATETIME | Datum und Uhrzeit des Ablaufs für eine geleaste IP-Adresse, die dem Computer vom DHCP-Server zugewiesen wurde. | DHCPLeaseObtained | DATETIME | Datum und Uhrzeit, an bzw. zu dem die Lease für die IP-Adresse bezogen wurde, die dem Computer vom DHCP-Server zugewiesen wurde. | DHCPServer | Zeichenfolge | IP-Adresse des DHCP-Servers. | GatewayCostMetric | Uint16 | Array ganzer Zahlen zwischen 1 und 9999 für die Kostenmetrik zum Berechnen der schnellsten, zuverlässigsten oder kostengünstigsten Routen. Dieses Argument stimmt mit der DefaultIPGateway-Eigenschaft exakt überein. | IPConnectionMetric (Neu bei Windows XP) | Uint32 | Kosten für die Verwendung der konfigurierten Routen für den IP-Adapter und der gewichtete Wert für diese Routen in der IP-Routingtabelle. Wenn die IP-Routingtabelle mehrere Routen zu einem Ziel enthält, wird die Route mit der niedrigsten Metrik verwendet. Der Standardwert ist 1. | IPAddress | Zeichenfolge | Array aller IP-Adressen, die dem aktuellen Netzwerkadapter zugeordnet sind. | IPSubnet | Zeichenfolge | Array aller Subnetzmasken, die dem aktuellen Netzwerkadapter zugeordnet sind. |
Alle Eigenschaften in der vorstehenden Tabelle sind schreibgeschützt. Bei den Typen uint16 und uint32 handelt es sich um ganze Zahlen ohne Vorzeichen, die von stark typisierten Programmiersprachen verwendet werden; VBScript behandelt sie effektiv als ganze Zahlen. In Tabelle 10 werden die Win32_NetworkAdapterConfiguration-Methoden beschrieben, die für die IP-Adresszuweisung verwendet werden können. Tabelle 10 "Win32_NetworkAdapterConfiguration"-Methoden für die IP-Adresszuweisung EnableDHCP | Kein | Aktiviert DHCP für den Dienst im Zusammenhang mit dem Netzwerkadapter. DHCP ermöglicht die dynamische Zuweisung von IP-Adressen. | EnableStatic | IPAddress – Array von Zeichenfolgen SubnetMask – Array von Zeichenfolgen | Aktiviert die statische TCP/IP-Adressierung für den Zielnetzwerkadapter. Infolgedessen wird DHCP für diesen Netzwerkadapter deaktiviert. | ReleaseDHCPLease | Kein | Gibt die an einen bestimmten DHCP-Netzwerkadapter gebundene IP-Adresse frei. Vorsicht Wenn DHCP auf dem lokalen Computer aktiviert ist, wird TCP/IP auf dem spezifischen Netzwerkadapter durch diese Option deaktiviert. Dadurch geht jeglich TCP/IP-Kommunikation verloren – außer wenn es einen alternativen Pfad zum Zielsystem, d. h. einen anderen TCP/IP-Netzwerkadapter, gibt. | ReleaseDHCPLeaseAll | Kein | Statische Methode. Gibt die an alle DHCP-Netzwerkadapter gebundenen IP-Adressen frei. Vorsicht Wenn DHCP auf dem lokalen Computer aktiviert ist, werden alle DHCP TCP/IP-Verbindungen durch diese Option beendet. | RenewDHCPLease | Kein | Erneuert die IP-Adresse auf bestimmten DHCP-Netzwerkadaptern. Die Lease für die von einem DHCP-Server zugewiesene IP-Adresse hat ein Ablaufdatum, das vom Client erneuert werden muss, wenn diese Adresse weiterhin verwendet werden soll. | RenewDHCPLeaseAll | Kein | Statische Methode. Erneuert die IP-Adressen auf allen DHCP-Netzwerkadaptern. | SetGateways | DefaultIPGateway – Array von Zeichenfolgen GatewayCostMetric – unit16 | Gibt eine Liste von Gateways für das Routing von Paketen an ein anderes Subnetz als dasjenige an, mit dem der Netzwerkadapter verbunden ist. Diese Methode funktioniert nur, wenn sich der Netzwerkadapter im statischen IP-Modus befindet. |
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. |
Anzeigen von DHCP-ClientinformationenBeim Arbeiten mit einer Technologie wie DHCP besteht der erste Schritt der Skripterstellung normalerweise darin, die aktuelle Konfiguration der relevanten Einstellungen zu ermitteln. Dieser Ansatz wird im vorliegenden Abschnitt und den folgenden Abschnitten behandelt. Win32_NetworkAdapterConfiguration stellt Eigenschaften auf Adapterbasis bereit, die zeigen, ob DHCP aktiviert ist: die IP-Adresse des DHCP-Servers; das Datum und die Uhrzeit, an dem bzw. zu der die Lease bezogen wurde und abläuft; die Client-IP-Adressen und -Subnetzmasken (Netzwerkadapter können jeweils mehr als eine davon aufweisen). Weil WMI die Datums- und Uhrzeitwerte für die Lease in einem schwer lesbaren Format zurückgibt, müssen diese Daten für die Anzeige in ein benutzerfreundlicheres Format konvertiert werden. Das folgende Skript zeigt die IP-Adresszuweisungseinstellungen für einen Netzwerkclient an und verwendet dazu die folgenden Eigenschaften der Klasse Win32_NetworkAdapterConfiguration: DHCPEnabled, DHCPServer, DHCPLeaseObtained, DHCPLeaseExpires, IPAddress und IPSubnet. Die Einstellungen für DHCPServer, DHCPLeaseObtained und DHCPLeaseExpires werden nur angezeigt, wenn DHCP aktiviert ist. Statt die Einstellungen mithilfe der WSH WScript.Echo-Methode direkt anzuzeigen, weist sie das Skript einer Zeichenfolge zu und zeigt sie nach ihrer Erfassung an. Nachdem das Skript mit einer If ... Then-Bedingung überprüft hat, ob der Wert der DHCPEnabled-Eigenschaft True lautet, zeigt das Skript die untergeordneten Einstellungen an. Zwei der von Dhcpsettings.vbs angezeigten Einstellungen, DHCPLeaseObtained und DHCPLeaseExpires, werden als DATETIME-Wert zurückgegeben. Der angezeigte unformatierte Wert sieht folgendermaßen aus: 20021201000230.000000+000 Die ersten vier Ziffern stehen für das Jahr; die jeweils folgenden beiden Ziffern stehen für den Monat, den Tag, Stunden, Minuten, Sekunden usw. Sie können die Bedeutung herausfinden – obwohl dies u. U. einige Zeit in Anspruch nimmt. Unter Windows XP und Windows Server 2003 wurde ein neues SwbemDateTime-Objekt zur WMI-Skripterstellungs-API hinzugefügt. Dieses Objekt erleichtert die Analyse und Konvertierung von DATETIME-Werten, wenn auf allen Clients Windows XP und Windows Server 2003 ausgeführt wird. Falls diese Betriebssysteme jedoch nicht auf allen Netzwerkhosts ausgeführt werden, besteht eine praktischere, weniger komplizierte Lösung darin, DATETIME-Werte mithilfe der Zeichenfolgenverarbeitungsfunktionen von VBScript in ein lesbares Format zu konvertieren. Zum Konvertieren des DATETIME-Wertes in ein lesbareres Format ruft Dhcpsettings in diesem Skript die Funktion WMIDateToString() auf und übergibt ihr den Wert als Parameter. Die Funktion transformiert den Wert mithilfe der integrierten VBScript-Zeichenfolgenfunktionen Mid() und Left(). Anschließend ruft sie die VBScript-Funktion CDate() auf, um den Variantenwert (den Typ aller VBScript-Variablen) in den Datentyp Date umzuwandeln, und gibt das formatierte Datum an den Hauptteil des Skripts zurück. Weitere Informationen zum WMI-Format DATETIME finden Sie unter "Festlegen der Uhrzeit auf einem Computer mithilfe von WMI" weiter unten in diesem Dokument. Schritte zur Skripterstellung Das Skript in Listing 19 zeigt die DHCP-Einstellungen 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 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 auf dem angegebenen Computer, 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. | Rufen Sie die Get-Methode für die Klasse objWMIService auf, um einen Objektverweis auf die Instanz von Win32_NetworkAdapter zu erhalten, deren DeviceID-Eigenschaft gleich der Index-Eigenschaft der aktuellen Instanz von Win32_NetworkAdapterConfiguration ist. | 6. | Rufen Sie den Wert der DNSHostName-Eigenschaft von Win32_NetworkAdapterConfiguration auf, und weisen Sie diesen einer Variablen zu. | 7. | Rufen Sie den Wert der NetConnectionID-Eigenschaft der Klasse Win32_NetworkAdapter ab, und weisen Sie diesen einer Variablen zu. Wenn dies einen Fehler auslöst, verwenden Sie stattdessen die Index-Eigenschaft von Win32_NetworkAdapterConfiguration. | 8. | Rufen Sie die DHCPEnabled-Eigenschaft der Klasse Win32_NetworkAdapterConfiguration ab, und weisen Sie sie einer Variablen zu. | 9. | Wenn der Wert der DHCPEnabled-Eigenschaft True lautet (DHCP auf dem aktuellen Netzwerkadapter also aktiviert ist), rufen Sie die anderen Eigenschaften für die IP-Adresszuweisung ab, und weisen Sie sie Variablen zu. | 10. | Übergeben Sie die Werte der Eigenschaften DHCPLeaseObtained und DHCPLeaseExpires der Klasse Win32_NetworkAdapterConfiguration als Parameter an die WMIDateToString-Funktion. Diese Funktion konvertiert das von den beiden Eigenschaften zurückgegebene DATETIME-Format in lesbarere Zeichenfolgen. | 11. | Verketten Sie die Variablen zu einer langen Zeichenfolge, und zeigen Sie diese mit WScript.Echo an. |
Listing 19 Dhcpsettings.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 |
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
strIndex = objNicConfig.Index
strDescription = objNicConfig.Description
blnDHCPEnabled = objNicConfig.DHCPEnabled
If blnDHCPEnabled Then
strDHCPServer = objNicConfig.DHCPServer
dtmRawLeaseObtainedDate = objNicConfig.DHCPLeaseObtained
strDHCPLeaseObtained = WMIDateToString(dtmRawLeaseObtainedDate)
dtmRawLeaseExpiresDate = objNicConfig.DHCPLeaseExpires
strDHCPLeaseExpires = WMIDateToString(dtmRawLeaseExpiresDate)
End If
strDHCPSettings = strDHCPSettings & VbCrLf & VbCrLf & _
" Network Adapter " & strIndex & VbCrLf & _
" " & strDescription & VbCrLf & VbCrLf & _
" DHCP Enabled: " & blnDHCPEnabled
If blnDHCPEnabled Then
strDHCPSettings = strDHCPSettings & VbCrLf & _
" DHCP Server: " & strDHCPServer & VbCrLf & _
" DHCP Lease Obtained: " & strDHCPLeaseObtained & VbCrLf & _
" DHCP Lease Expires: " & strDHCPLeaseExpires
End If
Next
WScript.Echo VbCrLf & "DHCP Settings" & VbCrLf & VbCrLf & _
"Host Name: " & strDNSHostName & strDHCPSettings
'******************************************************************************
Function WMIDateToString(dtmDate)
WMIDateToString = CDate(Mid(dtmDate, 5, 2) & "/" & _
Mid(dtmDate, 7, 2) & "/" & _
Left(dtmDate, 4) & " " & _
Mid(dtmDate, 9, 2) & ":" & _
Mid(dtmDate, 11, 2) & ":" & _
Mid(dtmDate, 13, 2))
End Function |
Wenn Sie Cscript.exe zur Ausführung dieses Skripts verwenden, wird im Befehlsfenster eine ähnliche Ausgabe wie die folgende angezeigt: C:\scripts>dhcpsettings.vbs DHCP Settings Host Name: client1 Network Adapter 1 3Com 3C920 Integrated Fast Ethernet Controller (3C905C-TX Compatible) - Packet Scheduler Miniport DHCP Enabled: True DHCP Server: 192.168.0.1 DHCP Lease Obtained: 5/13/2004 6:34:24 PM DHCP Lease Expires: 5/23/2004 9:34:24 PM Aktivieren von DHCP auf einem ClientDas Automatisieren der Konfiguration von DHCP auf Clients kann sinnvoll sein, wenn ein Remoteclient oder eine Gruppe von Remoteclients von der Verwendung einer statischen IP-Adresse auf automatisches Beziehen der IP-Adresse konvertiert werden muss. Je nach Konfiguration der DHCP- und DNS-Server kann es dem Client durch das Aktivieren von DHCP auch ermöglicht werden, die Adressen für DNS-Server und Standardgateway vom DHCP-Server zu beziehen. Das folgende Skript zeigt die Verwendung der Win32_NetworkAdapterConfiguration-Methode EnableDHCP, die DHCP für den Dienst auf dem Netzwerkadapter eines Clients aktiviert. Die Methode verwendet keine Parameter. Bei einem Client mit mehreren Netzwerkadaptern, wie z. B. einem zweifach vernetzten Computer, können Sie das Skript so anpassen, dass nur ein bestimmter Adapter aktiviert 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 20 aktiviert DHCP für jede Netzwerkadapterkonfiguration auf einem Computer. 1. | Verwenden Sie einen GetObject-Aufruf zum Herstellen einer Verbindung zum WMI-Namespace root\cimv2 auf dem angegebenen Computer, und legen Sie den Parameter "impersonationLevel" auf "impersonate" fest. | 2. | 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. | 3. | Führen Sie für jede Netzwerkadapterkonfiguration in der Auflistung die folgenden Aufgaben aus. | 4. | Zeigen Sie die Indexnummer und Beschreibung für den Netzwerkadapter an. | 5. | Überprüfen Sie, ob DHCP bereits aktiviert ist. | 6. | Falls DHCP nicht aktiviert ist, rufen Sie die EnableDHCP-Methode der Klasse Win32_NetworkAdapterConfiguration auf. | 7. | Wenn die EnableDHCP-Methode | • | den Wert 0 zurückgibt, zeigen Sie eine Erfolgsnachricht an. | | • | einen anderen Wert als 0 zurückgibt zeigen Sie eine Fehlermeldung an. |
| 8. | Falls DHCP bereits aktiviert ist, zeigen Sie eine entsprechende Meldung mit der IP-Adresse des DHCP-Servers an. |
Listing 20 Dhcp-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 |
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
WScript.Echo VbCrLf & " Network Adapter " & objNicConfig.Index & _
VbCrLf & " " & objNicConfig.Description & VbCrLf
If Not objNicConfig.DHCPEnabled Then
WScript.Echo " Enabling DHCP ..."
intReturn = objNicConfig.EnableDHCP
If intReturn = 0 Then
strSuccess = " DHCP enabled."
Else
strSuccess = " Unable to enable DHCP."
End If
WScript.Echo VbCrLf & strSuccess
Else
WScript.Echo " DHCP already enabled" & VbCrLf & _
" DHCP Server: " & objNicConfig.DHCPServer
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\netcli>dhcp-enable.vbs Network Adapter 1 3Com 3C920 Integrated Fast Ethernet Controller (3C905C-TX Compatible) - Packet Scheduler Miniport Enabling DHCP ... DHCP enabled. Verwalten von DHCP-LeasesDHCP weist IP-Adressen in der Regel nur für bestimmte Zeiträume zu. Diese temporäre Adresszuweisung wird als Lease bezeichnet. Die Administratoren eines DHCP-Servers können die Standarddauer für eine Lease konfigurieren, die von Faktoren wie der Häufigkeit des Hinzufügens oder Entfernens von Netzwerkclients oder der Anzahl von Adressen und Clients in einem Subnetz abhängig ist. DHCP-Clients und -Server sind so konzipiert, dass sie Leases vor deren Ablauf automatisch erneut aushandeln. Sie können Leases aber auch manuell oder programmgesteuert freigeben oder erneuern. Zu diesem Zweck stellt beispielsweise das Befehlszeilentool Ipconfig.exe Parameter bereit. Die Klasse Win32_NetworkAdapterConfiguration enthält vier Methoden auf Adapterbasis, die Ihnen die Verwaltung von DHCP-Leases für die Klasseninstanzen ermöglichen: ReleaseDHCPLease, ReleaseDHCPLeaseAll, RenewDHCPLease und RenewDHCPLeaseAll. Sie können alle Leases auch auf einfache Weise freigeben oder erneuern, indem Sie eine Iteration durch die Auflistung von Netzwerkadapterkonfigurationen durchführen und dabei jeweils ReleaseDHCPLease bzw. RenewDHCPLease verwenden. Freigeben von DHCP-LeasesDurch die Freigabe einer DHCP-Lease für einen Netzwerkadapter wird dieser vom Netzwerk getrennt und die IP-Adresse für die Zuweisung an andere Hosts freigegeben. Der Befehl ipconfig.exe/release führt diese Aufgabe auf allen Netzwerkadaptern oder auf einem bestimmten Adapter aus. Eine Situation, in der eine DHCP-Lease auf einem Client möglicherweise freigegeben werden soll, ist die Reservierung eines Bereichs (von IP-Adressen) auf einem DHCP-Server für permanente Leasezuweisung. Einige der im Bereich reservierten Adressen werden eventuell bereits von vorhandenen Clients verwendet, die in diesen Bereich nicht einbezogen werden. Durch das Hinzufügen einer IP-Adresse zu einem Bereich auf dem DHCP-Server wird die Adresse auf dem Client, in dem sie momentan enthalten ist, noch nicht automatisch freigegeben. Das folgende Skript zeigt eine Möglichkeit zur Behebung dieses Problems. Es führt eine Iteration durch die Auflistung von Netzwerkadapterkonfigurationen durch und verwendet die ReleaseDHCPLease-Methode, um die Lease für jede der Konfigurationen freizugeben. Sie können dieses Skript für die Freigabe der Lease auf einem Remoteclient problemlos anpassen, indem Sie die folgende Zeile ändern:
strComputer = "."
Ersetzen Sie den lokalen Computer (".") durch die IP-Adresse, die für die Reservierung freigegeben werden muss, beispielsweise:
strComputer = "192.168.0.135"
Wie bei allen WMI-Remotevorgängen muss der Benutzer über die entsprechenden Administratorrechte auf dem Remotecomputer verfügen. 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 21 zeigt zunächst die DHCP-Einstellungen für die einzelnen Netzwerkadapter an. Anschließend überprüft es bei jedem Netzwerkadapter, ob DHCP aktiviert ist. Wenn dies zutrifft, gibt es die DHCP-Lease frei. 1. | Verwenden Sie einen GetObject-Aufruf zum Herstellen einer Verbindung zum WMI-Namespace root\cimv2 auf dem angegebenen Computer, und legen Sie den Parameter "impersonationLevel" auf "impersonate" fest. | 2. | 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. | 3. | Zeigen Sie den Text "Settings before releasing lease" an. | 4. | Führen Sie für jede Netzwerkadapterkonfiguration in der Auflistung die folgenden Schritte aus. | 5. | Zeigen Sie die Indexnummer, die Beschreibung und die Mitteilung an, ob DHCP für jeden Adapter aktiviert ist. | 6. | Wenn DHCP aktiviert ist, rufen Sie die Daten ab, an denen die DHCP-Lease bezogen wurde und an denen sie ablaufen wird. Konvertieren Sie diese Daten in ein lesbares Format, indem Sie die WMIDateToString-Funktion aufrufen. Zeigen Sie die IP-Adresse des DHCP-Servers und die Leasedaten an. | 7. | Rufen Sie die ReleaseDHCPLease-Methode der Klasse Win32_NetworkAdapterConfiguration auf, und warten Sie dann 5 Sekunden, bis der Freigabeprozess beendet ist. Wichtig Wenn ein Client eine IP-Adresse über DHCP bezieht, wird er durch die Freigabe der Lease möglicherweise vom Netzwerk getrennt.
| 8. | Abhängig von Rückgabewert der ReleaseDHCP-Methode machen Sie folgende Ausgaben: | • | 0 – zeigen Sie eine Meldung an, dass die Lease freigegeben wurde. | | • | 1 – zeigen Sie eine Meldung an, dass die Lease freigegeben wurde und der Computer neu gestartet werden muss. | | • | Einen Wert größer als 1 – zeigen Sie eine Meldung an, dass die Lease nicht freigegeben werden kann. |
| 9. | Fragen Sie die Klasse Win32_NetworkAdapterConfiguration erneut ab, und filtern Sie sie erneut nur nach IP-Adaptern. Diese erneute Abfrage ist erforderlich, weil jede Abfrage einen Snapshot der bestehenden Einstellungen zum Zeitpunkt ihrer Ausführung zurückgibt und nicht automatisch aktualisiert wird, wenn die Einstellungen anschließend geändert werden. | 10. | Zeigen Sie die gleichen DHCP-Einstellungen wie zuvor erneut an. | 11. | Die WMIDateToString-Funktion verwendet einen Wert im WMI-Format DATETIME und konvertiert ihn in eine Zeichenfolge, die Datum und Uhrzeit in einem lesbareren Format darstellt. |
Listing 21 Dhcp-releaselease.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 |
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 & "Settings before releasing lease"
For Each objNicConfig In colNicConfigs
blnDHCPEnabled = objNicConfig.DHCPEnabled
WScript.Echo VbCrLf & _
" Network Adapter " & objNicConfig.Index & VbCrLf & _
" " & objNicConfig.Description & VbCrLf & VbCrLf & _
" DHCP Enabled: " & blnDHCPEnabled
If blnDHCPEnabled Then
dtmLeaseObtainedDate = objNicConfig.DHCPLeaseObtained
strDHCPLeaseObtained = WMIDateToString(dtmLeaseObtainedDate)
dtmLeaseExpiresDate = objNicConfig.DHCPLeaseExpires
strDHCPLeaseExpires = WMIDateToString(dtmLeaseExpiresDate)
WScript.Echo " DHCP Server: " & objNicConfig.DHCPServer & _
VbCrLf & " DHCP Lease Obtained: " & strDHCPLeaseObtained & _
VbCrLf & " DHCP Lease Expires: " & strDHCPLeaseExpires
intReleaseReturn = objNicConfig.ReleaseDHCPLease
WScript.Sleep 5000
If (intReleaseReturn = 0 Or intReleaseReturn = 1) Then
strSuccess = " DHCP lease released."
If intReleaseReturn = 1 Then
strSuccess = strSuccess & " Must reboot machine."
End If
Else
strSuccess = " Unable to release DHCP lease."
End If
WScript.Echo VbCrLf & strSuccess
End If
Next
Set colNicConfigs = objWMIService.ExecQuery _
("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
WScript.Echo VbCrLf & "Settings after releasing lease"
For Each objNicConfig In colNicConfigs
blnDHCPEnabled = objNicConfig.DHCPEnabled
WScript.Echo VbCrLf & _
" Network Adapter " & objNicConfig.Index & VbCrLf & _
" " & objNicConfig.Description & VbCrLf & VbCrLf & _
" DHCP Enabled: " & blnDHCPEnabled
If blnDHCPEnabled Then
dtmLeaseObtainedDate = objNicConfig.DHCPLeaseObtained
strDHCPLeaseObtained = WMIDateToString(dtmLeaseObtainedDate)
dtmLeaseExpiresDate = objNicConfig.DHCPLeaseExpires
strDHCPLeaseExpires = WMIDateToString(dtmLeaseExpiresDate)
WScript.Echo " DHCP Server: " & objNicConfig.DHCPServer & _
VbCrLf & " DHCP Lease Obtained: " & strDHCPLeaseObtained & _
VbCrLf & " DHCP Lease Expires: " & strDHCPLeaseExpires
End If
Next
'******************************************************************************
' Function: WMIDateToString(dtmDate)
' Converts WMI date to string.
'******************************************************************************
Function WMIDateToString(dtmDate)
WMIDateToString = CDate(Mid(dtmDate, 5, 2) & "/" & _
Mid(dtmDate, 7, 2) & "/" & _
Left(dtmDate, 4) & " " & _
Mid(dtmDate, 9, 2) & ":" & _
Mid(dtmDate, 11, 2) & ":" & _
Mid(dtmDate, 13, 2))
End Function |
Wenn Sie Cscript.exe zur Ausführung dieses Skripts verwenden, wird im Befehlsfenster eine ähnliche Ausgabe wie die folgende angezeigt: C:\scripts>dhcp-releaselease.vbs Settings before releasing lease Network Adapter 1 3Com 3C920 Integrated Fast Ethernet Controller (3C905C-TX Compatible) - Packet Scheduler Miniport DHCP Enabled: True DHCP Server: 192.168.0.1 DHCP Lease Obtained: 5/30/2004 8:41:23 PM DHCP Lease Expires: 6/9/2004 11:41:23 PM DHCP lease released. Settings after releasing lease Network Adapter 1 3Com 3C920 Integrated Fast Ethernet Controller (3C905C-TX Compatible) - Packet Scheduler Miniport DHCP Enabled: True DHCP Server: 255.255.255.255 DHCP Lease Obtained: 6/1/2004 2:15:08 PM DHCP Lease Expires: 6/1/2004 3:15:08 PM Erneuern von DHCP-LeasesDHCP ermöglicht es auch, dass Leases auf dem Client manuell oder programmgesteuert erneuert werden, indem der normale Prozess des erneuten Aushandelns zwischen Client und Server umgangen wird. Der Befehl ipconfig.exe/renew führt diese Aufgabe für alle Netzwerkadapter oder einen bestimmten Adapter aus. Das folgende Skript führt eine Iteration durch die Auflistung von Netzwerkadapterkonfigurationen durch und verwendet die RenewDHCPLease-Methode, um die Lease für jede der Konfigurationen zu erneuern. 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 22 zeigt zunächst die DHCP-Einstellungen für die einzelnen Netzwerkadapter an, und überprüft dann bei jedem Adapter, ob DHCP aktiviert ist. Wenn dies zutrifft, wird die DHCP-Lease erneuert. Führen Sie dazu die folgenden Schritte im Skript aus: 1. | Verwenden Sie einen GetObject-Aufruf zum Herstellen einer Verbindung zum WMI-Namespace root\cimv2 auf dem angegebenen Computer, und legen Sie den Parameter "impersonationLevel" auf "impersonate" fest. | 2. | 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. | 3. | Zeigen Sie den Text "Settings before renewing lease" an. | 4. | Führen Sie für jede Netzwerkadapterkonfiguration in der Auflistung die folgenden Schritte aus. | 5. | Zeigen Sie die Indexnummer, die Beschreibung und die Mitteilung an, ob DHCP für jeden Adapter aktiviert ist. | 6. | Wenn DHCP aktiviert ist, rufen Sie die Daten ab, an denen die DHCP-Lease bezogen wurde und an denen sie ablaufen wird. Konvertieren Sie diese Daten in ein lesbares Format, indem Sie die WMIDateToString-Funktion aufrufen. Zeigen Sie die IP-Adresse des DHCP-Servers und die Daten an, an denen die Lease bezogen wurde und ablaufen wird. | 7. | Rufen Sie die RenewDHCPLease-Methode der Klasse Win32_NetworkAdapterConfiguration auf, und warten Sie dann 5 Sekunden, bis der Erneuerungsprozess beendet ist. | 8. | Nehmen Sie abhängig vom Rückgabewert der RenewDHCP-Methode eine entsprechende Ausgabe vor: | • | 0 – zeigen Sie eine Meldung an, dass die Lease erneuert wurde. | | • | 1 – zeigen Sie eine Meldung an, dass die Lease erneuert wurde und der Computer neu gestartet werden muss. | | • | Einen Wert größer als 1 – zeigen Sie eine Meldung an, dass die Lease nicht erneuert werden kann. |
| 9. | Fragen Sie die Klasse Win32_NetworkAdapterConfiguration erneut ab, und filtern Sie sie erneut nur nach IP-Adaptern. Diese erneute Abfrage ist erforderlich, weil jede Abfrage einen Snapshot der bestehenden Einstellungen zum Zeitpunkt ihrer Ausführung zurückgibt und nicht automatisch aktualisiert wird, wenn die Einstellungen anschließend geändert werden. | 10. | Zeigen Sie die gleichen DHCP-Einstellungen wie zuvor erneut an. | 11. | Die WMIDateToString-Funktion verwendet einen Wert im WMI-Format DATETIME und konvertiert ihn in eine Zeichenfolge, die Datum und Uhrzeit in einem lesbareren Format darstellt. |
Listing 22 Dhcp-renewlease.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 |
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 & "Settings before renewing lease"
For Each objNicConfig In colNicConfigs
blnDHCPEnabled = objNicConfig.DHCPEnabled
WScript.Echo VbCrLf & _
" Network Adapter " & objNicConfig.Index & VbCrLf & _
" " & objNicConfig.Description & VbCrLf & VbCrLf & _
" DHCP Enabled: " & blnDHCPEnabled
If blnDHCPEnabled Then
dtmLeaseObtainedDate = objNicConfig.DHCPLeaseObtained
strDHCPLeaseObtained = WMIDateToString(dtmLeaseObtainedDate)
dtmLeaseExpiresDate = objNicConfig.DHCPLeaseExpires
strDHCPLeaseExpires = WMIDateToString(dtmLeaseExpiresDate)
WScript.Echo " DHCP Server: " & objNicConfig.DHCPServer & _
VbCrLf & " DHCP Lease Obtained: " & strDHCPLeaseObtained & _
VbCrLf & " DHCP Lease Expires: " & strDHCPLeaseExpires
intRenewReturn = objNicConfig.RenewDHCPLease
WScript.Sleep 5000
If (intRenewReturn = 0 Or intRenewReturn = 1) Then
strSuccess = " DHCP lease renewed."
If intRenewReturn = 1 Then
strSuccess = strSuccess & " Must reboot machine."
End If
Else
strSuccess = " Unable to renew DHCP lease."
End If
WScript.Echo VbCrLf & strSuccess
End If
Next
Set colNicConfigs = objWMIService.ExecQuery _
("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
WScript.Echo VbCrLf & "Settings after renewing lease"
For Each objNicConfig In colNicConfigs
blnDHCPEnabled = objNicConfig.DHCPEnabled
WScript.Echo VbCrLf & _
" Network Adapter " & objNicConfig.Index & VbCrLf & _
" " & objNicConfig.Description & VbCrLf & VbCrLf & _
" DHCP Enabled: " & blnDHCPEnabled
If blnDHCPEnabled Then
dtmLeaseObtainedDate = objNicConfig.DHCPLeaseObtained
strDHCPLeaseObtained = WMIDateToString(dtmLeaseObtainedDate)
dtmLeaseExpiresDate = objNicConfig.DHCPLeaseExpires
strDHCPLeaseExpires = WMIDateToString(dtmLeaseExpiresDate)
WScript.Echo " DHCP Server: " & objNicConfig.DHCPServer & _
VbCrLf & " DHCP Lease Obtained: " & strDHCPLeaseObtained & _
VbCrLf & " DHCP Lease Expires: " & strDHCPLeaseExpires
End If
Next
'******************************************************************************
' Function: WMIDateToString(dtmDate)
' Converts WMI date to string.
'******************************************************************************
Function WMIDateToString(dtmDate)
WMIDateToString = CDate(Mid(dtmDate, 5, 2) & "/" & _
Mid(dtmDate, 7, 2) & "/" & _
Left(dtmDate, 4) & " " & _
Mid(dtmDate, 9, 2) & ":" & _
Mid(dtmDate, 11, 2) & ":" & _
Mid(dtmDate, 13, 2))
End Function
|
Wenn Sie Cscript.exe zur Ausführung dieses Skripts verwenden, wird im Befehlsfenster eine ähnliche Ausgabe wie die folgende angezeigt: C:\scripts>dhcp-renewlease.vbs Settings before renewing lease Network Adapter 1 3Com 3C920 Integrated Fast Ethernet Controller (3C905C-TX Compatible) - Packet Scheduler Miniport DHCP Enabled: True DHCP Server: 255.255.255.255 DHCP Lease Obtained: 6/1/2004 2:15:08 PM DHCP Lease Expires: 6/1/2004 3:15:08 PM DHCP lease renewed. Settings after renewing lease Network Adapter 1 3Com 3C920 Integrated Fast Ethernet Controller (3C905C-TX Compatible) - Packet Scheduler Miniport DHCP Enabled: True DHCP Server: 192.168.0.1 DHCP Lease Obtained: 6/1/2004 2:15:56 PM DHCP Lease Expires: 6/11/2004 5:15:56 PM Verwalten statischer IP-AdressenBei sehr kleinen Netzwerken kann DHCP des Guten zu viel sein. Deshalb verwalten Sie die IP-Adresszuweisung möglicherweise, indem Sie allen Clients statische IP-Adressen zuweisen. Sogar bei größeren und komplexeren Netzwerken können manche Hosts – wie Netzwerkserver und Domänencontroller – DHCP nicht verwenden, so dass ihnen statische IP-Adressen zugewiesen werden müssen. Diese Adressen müssen außerdem der Ausschlussliste für den Bereich auf dem DHCP-Server hinzugefügt werden. Wie bei den meisten anderen Bereichen der Netzwerkclientkonfiguration stellt die WMI-Klasse Win32_NetworkAdapterConfiguration Methoden zum programmgesteuerten Lesen und Schreiben dieser Einstellungen bereit. Konfigurieren einer statischen IP-AdresseDas Skript in diesem Abschnitt, Staticip-enable.vbs, verwendet die EnableStatic()-Methode der Klasse Win32_NetworkAdapterConfiguration, um die IP-Adressen und Subnetzmasken des Netzwerkadapters festzulegen. Diese werden über die Eigenschaften IPAddress und IPSubnet bereitgestellt. Weil diese Einstellungen mehr als einen Wert aufweisen können, handelt es sich bei den Datentypen der beiden Eigenschaften um ein Zeichenfolgenarray. Die EnableStatic()-Methode deaktiviert außerdem DHCP. Das Skript enthält den grundlegenden Code für diese Aufgabe. Einem Client, dem eine statische IP-Adresse zugewiesen wird, muss jedoch außerdem ein Standardgateway und ein DNS-Server zugewiesen werden, bevor er die Netzwerkkonnektivität erneut herstellen kann. Das Skript im nächsten Abschnitt, Staticip-enableex.vbs, zeigt, wie die Skripterstellung für diese Reihe von Aufgaben erfolgen muss. Beide Skripts weisen keine neue statische IP-Adresse zu, wenn bereits eine statische Adresse aktiviert ist. Falls Sie jedoch eine neue statische IP-Adresse zuweisen müssen, wenn eine andere statische Adresse bereits konfiguriert wurde, können Sie das Skript problemlos anpassen, indem Sie die folgenden Zeilen löschen:
If objNicConfig.DHCPEnabled Then
...
Else
WScript.Echo " Static IP address already enabled."
End If 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 23 überprüft bei jedem Netzwerkadapter, ob DHCP aktiviert ist. Wenn dies zutrifft, aktiviert das Skript die statische IP-Adressierung, indem es eine IP-Adresse und eine Subnetzmaske zuweist und DHCP auf dem Client deaktiviert. Möglicherweise müssen die Konfigurationsänderungen auch an den DHCP-Server übertragen werden, damit die von DHCP geleaste alte IP-Adresse freigegeben und die neue statische IP-Adresse registriert wird. Das in diesem Skript gezeigte Verfahren selbst reicht nicht aus, um die Netzwerkkonnektivität mit einer statischen IP-Adresse erneut herzustellen. Das Standardgateway und die DNS-Server müssen ebenfalls festgelegt werden, wie es mithilfe des nächsten Skripts geschieht. Bei diesem Skript müssten Sie Standardgateway und DNS-Server manuell festlegen. Um DHCP zu deaktivieren und eine statische IP-Adresse und Subnetzmaske einem Client zuzuweisen, müssen Sie im Skript die folgenden Schritte ausführen: 1. | Erstellen Sie zwei Arrays mit jeweils einem Element: Das erste Array enthält die zuzuweisende statische IP-Adresse; das zweite Array enthält die Subnetzmaske. | 2. | Verwenden Sie einen GetObject-Aufruf zum Herstellen einer Verbindung zum WMI-Namespace root\cimv2 auf dem angegebenen Computer, 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. | Durchlaufen Sie jede Netzwerkadapterkonfiguration in der Auflistung in einer Schleife, und führen Sie dabei jeweils die folgenden Schritte aus. | 5. | Zeigen Sie die Indexnummer und Beschreibung für den Netzwerkadapter an. | 6. | Falls DHCP auf dem Adapter aktiviert ist, rufen Sie die EnableStatic-Methode der Klasse Win32_NetworkAdapterConfiguration auf, und übergeben Sie ihr die beiden Arrayvariablen, die bereits mit den benötigten IP-Adressen und Subnetzmasken initialisiert wurden. | 7. | Nehmen Sie abhängig vom Rückgabewert der Methode EnableStatic folgende Ausgaben vor: | • | 0 (= erfolgreich) – zeigen Sie die neuen IP-Adressen und Subnetzmasken an. | | • | 1 – zeigen Sie eine Erfolgsnachricht mit dem Hinweis an, dass der Computer neu gestartet werden muss, und inkrementieren Sie den Neustartzähler. | | • | Einen anderen Wert als 0 (= Fehler) – zeigen Sie eine entsprechende Fehlermeldung an. |
| 8. | Falls DHCP nicht aktiviert ist, zeigen Sie eine Meldung an, dass die statische IP-Adressierung bereits aktiviert ist. | 9. | Wenn ein Neustart erforderlich ist, lautete der Rückgabewert von EnableStatic bei mindestens einem Netzwerkadapter 1. Zeigen Sie eine Meldung an, dass der Computer neu gestartet werden muss, bevor die Änderungen wirksam werden. |
Listing 23 Staticip-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 |
On Error Resume Next
strComputer = "."
arrIPAddresses = Array("192.168.0.12")
arrSubnetMasks = Array("255.255.255.0")
intReboot = 0
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
WScript.Echo VbCrLf & " Network Adapter " & objNicConfig.Index & _
VbCrLf & " " & objNicConfig.Description & VbCrLf
If objNicConfig.DHCPEnabled Then
WScript.Echo " Disabling DHCP, enabling static IP address..."
intReturn = objNicConfig.EnableStatic(arrIPAddresses, arrSubnetMasks)
If intReturn = 0 Then
strIPAddresses = Join(arrIPAddresses, ",")
strSubnetMasks = Join(arrSubnetMasks, ",")
WScript.Echo " DHCP disabled, static IP address enabled." & _
VbCrLf & " IP Addresses: " & strIPAddresses & VbCrLf & _
" Subnet Masks: " & strSubnetMasks
ElseIf intReturn = 1 Then
intReboot = intReboot + 1
WScript.Echo " DHCP disabled, static IP address enabled. " & _
VbCrLf & " Reboot required."
Else
WScript.Echo " Unable to enable static IP address."
End If
Else
WScript.Echo " Static IP address already enabled."
End If
Next
If (intReboot > 0) Then
WScript.Echo VbCrLf & "You must reboot this machine before changes " & _
"will take effect."
End If |
Wenn Sie Cscript.exe zur Ausführung dieses Skripts verwenden, wird im Befehlsfenster eine ähnliche Ausgabe wie die folgende angezeigt: C:\scripts>staticip-enable.vbs Network Adapter 1 3Com 3C918 Integrated Fast Ethernet Controller (3C905B-TX Compatible) Disabling DHCP, enabling static IP ... DHCP disabled, static IP address enabled. Reboot required. You must reboot this machine before changes will take effect. Konfigurieren von Gateways, DNS und WINS für statische IP-AdressenWenn Sie die Netzwerkkonnektivität bei einem Client erneut herstellen möchten, nachdem Sie die statische IP-Adressierung aktiviert sowie eine IP-Adresse und Subnetzmaske zugewiesen haben, müssen Sie auch neue Standardgateways, die Suchreihenfolge für DNS-Server und die WINS-Server festlegen (falls WINS im Netzwerk eingesetzt wird). Das Skript sollte die zweite Reihe von Aufgaben aber nur dann ausführen, wenn eine statische IP-Adresse und ein Subnetz erfolgreich zugewiesen wurden. Aus diesem Grund muss das Script bei dieser Aufgabe zwei verschiedene Bedingungen überprüfen. 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 24 überprüft bei jedem Netzwerkadapter, ob DHCP aktiviert ist. Wenn dies zutrifft, aktiviert das Skript eine statische IP-Adresse, indem es die Adresse und Subnetzmaske zuweist und DHCP deaktiviert. Nach erfolgreichem Abschluss dieser Aufgaben weist das Skript ein Standardgateway sowie DNS- und WINS-Server zu. 1. | Erstellen Sie Variablen zur Angabe aller erforderlichen Parameter. | 2. | Verwenden Sie einen GetObject-Aufruf zum Herstellen einer Verbindung zum WMI-Namespace root\cimv2 auf dem angegebenen Computer, 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. | Durchlaufen Sie jede Netzwerkadapterkonfiguration in der Auflistung in einer Schleife, und führen Sie dabei jeweils die folgenden Schritte aus. | 5. | Zeigen Sie die Indexnummer und Beschreibung für den Netzwerkadapter an. | 6. | Falls DHCP auf dem Adapter aktiviert ist, rufen Sie die EnableStatic-Methode der Klasse Win32_NetworkAdapterConfiguration auf, und übergeben Sie ihr die beiden Arrayvariablen, die bereits mit den gewünschten IP-Adressen und Subnetzmasken initialisiert wurden. | 7. | Wenn EnableStatic den Wert 0 (= erfolgreich) zurückgibt, rufen Sie die Get-Methode der Klasse Win32_NetworkAdapterConfiguration auf, um nur die aktuelle Instanz zurückzugeben. Filtern Sie dabei mit der Index-Eigenschaft, über die WMI die Instanz eindeutig identifiziert. | 8. | Rufen Sie die Methoden SetGateways, SetDNSServerSearchOrder und SetWINSServer für die aktuelle Instanz des Netzwerkadapters auf, und übergeben Sie ihnen die entsprechenden Variablen als Parameter. | 9. | Überprüfen Sie die Rückgabewerte für die einzelnen Methoden, und zeigen Sie jeweils eine Erfolgsnachricht oder eine Fehlermeldung an. | 10. | Führen Sie abhängig vom Rückgabewert der Methode EnableStatic folgende Ausgaben durch: | • | 1 – zeigen Sie eine Erfolgsnachricht mit dem Hinweis an, dass der Computer neu gestartet werden muss, und inkrementieren Sie den Neustartzähler. | | • | Einen anderen Wert als 0 oder 1 (= Fehler) – zeigen Sie eine entsprechende Fehlermeldung an. |
| 11. | Falls DHCP nicht aktiviert ist, zeigen Sie eine Meldung an, dass die statische IP-Adressierung bereits aktiviert ist. | 12. | Unter Umständen ist ein Neustart erforderlich: | • | Wenn EnableStatic Für mindestens einen Netzwerkadapter den Wert 1 zurückgibt zeigen Sie eine Meldung an, dass der Computer neu gestartet werden muss, bevor die Änderungen wirksam werden können. Danach beenden Sie das Skript. | | • | Beim Wert 0 – fragen Sie die Klasse Win32_NetworkAdapterConfiguration erneut ab, und zeigen Sie die neuen Einstellungen für die einzelnen Netzwerkadapter mit allen vorgenommenen Änderungen an. |
|
Listing 24 Staticip-enableex.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 |
On Error Resume Next
strComputer = "."
arrIPAddresses = Array("192.168.0.12")
arrSubnetMasks = Array("255.255.255.0")
arrDefaultGateways = Array("192.168.0.1")
arrGatewayCostMetrics = Array(1) ' uint16
arrDNSServers = Array("192.168.0.1")
strWINSPrimaryServer = "192.168.0.1"
strWINSSecondaryServer = "192.168.0.2"
intReboot = 0
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
WScript.Echo VbCrLf & "Settings before:"
For Each objNicConfig In colNicConfigs
WScript.Echo VbCrLf & _
" Network Adapter " & objNicConfig.Index & VbCrLf & _
" " & objNicConfig.Description & VbCrLf
If objNicConfig.DHCPEnabled Then
WScript.Echo " Disabling DHCP, enabling static IP ..."
intStaticReturn = objNicConfig.EnableStatic(arrIPAddresses, arrSubnetMasks)
If intStaticReturn = 0 Then
WScript.Echo " DHCP disabled, static IP address enabled."
Set objNicChanged = objWMIService.Get _
("Win32_NetworkAdapterConfiguration.Index=" & objNicConfig.Index)
intGatewaysReturn = objNicChanged.SetGateways(arrDefaultGateways, _
arrGatewayCostMetrics)
If intGatewaysReturn <> 0 Then
WScript.Echo " Unable to assign default gateways."
Else
WScript.Echo " Assigned new default gateways."
End If
intDNSServers = objNicChanged.SetDNSServerSearchOrder(arrDNSServers)
If intDNSServers <> 0 Then
WScript.Echo " Unable to assign DNS servers."
Else
WScript.Echo " Assigned new DNS servers."
End If
intWINSServers = objNicConfig.SetWINSServer(strWINSPrimaryServer, _
strWINSSecondaryServer)
If intWINSServers <> 0 Then
WScript.Echo " Unable to assign WINS servers."
Else
WScript.Echo " Assigned new WINS servers."
End If
ElseIf intStaticReturn = 1 Then
intReboot = intReboot + 1
WScript.Echo " DHCP disabled, static IP address enabled. " & _
VbCrLf & "Reboot required."
Else
WScript.Echo " Unable to enable static IP address."
End If
Else
WScript.Echo " Static IP address already enabled."
End If
Next
If (intReboot > 0) Then
WScript.Echo VbCrLf & "You must reboot this machine before changes " & _
"will take effect."
WScript.Quit
Else
Set colNicConfigs = objWMIService.ExecQuery("SELECT * FROM " & _
"Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
WScript.Echo VbCrLf & "Settings after"
For Each objNicConfig In colNicConfigs
WScript.Echo VbCrLf & _
" Network Adapter " & objNicConfig.Index & VbCrLf & _
" " & objNicConfig.Description & VbCrLf & VbCrLf & _
" DHCP Enabled: " & objNicConfig.DHCPEnabled
strIPAddresses = ""
If Not IsNull(objNicConfig.IPAddress) Then
For Each strIPAddress In objNicConfig.IPAddress
strIPAddresses = strIPAddresses & VbCrLf & _
" " & strIPAddress
Next
End If
WScript.Echo " IP Addresses: " & strIPAddresses
strIPSubnets = ""
If Not IsNull(objNicConfig.IPSubnet) Then
For Each strIPSubnet In objNicConfig.IPSubnet
strIPSubnets = strIPSubnets & VbCrLf & _
" " & strIPSubnet
Next
End If
WScript.Echo " Subnet Masks: " & strIPSubnets
strDefaultIPGateways = ""
If Not IsNull(objNicConfig.DefaultIPGateway) Then
For Each strDefaultIPGateway In objNicConfig.DefaultIPGateway
strDefaultIPGateways = strDefaultIPGateways & VbCrLf & _
" " & strDefaultIPGateway
Next
End If
WScript.Echo " Default Gateways: " & strDefaultIPGateways
strGatewayCostMetrics = ""
If Not IsNull(objNicConfig.GatewayCostMetric) Then
For Each strGatewayCostMetric In objNicConfig.GatewayCostMetric
strGatewayCostMetrics = strGatewayCostMetrics & VbCrLf & _
" " & strGatewayCostMetric
Next
End If
WScript.Echo " Gateway Cost Metrics: " & strGatewayCostMetrics
strDNSServerSearchOrder = ""
If Not IsNull(objNicConfig.DNSServerSearchOrder) Then
For Each strDNSServer In objNicConfig.DNSServerSearchOrder
strDNSServerSearchOrder = strDNSServerSearchOrder & VbCrLf & _
" " & strDNSServer
Next
End If
WScript.Echo " DNS Server Search Order: " & strDNSServerSearchOrder
WScript.Echo " WINS Primary Server: " & _
objNicConfig.WINSPrimaryServer
WScript.Echo " WINS Secondary Server: " & _
objNicConfig.WINSSecondaryServer
Next
End If |
Wenn Sie Cscript.exe zur Ausführung dieses Skripts verwenden, wird im Befehlsfenster eine ähnliche Ausgabe wie die folgende angezeigt: C:\scripts>staticip-enableex.vbs Host Name: . Settings before: Network Adapter 1 3Com 3C918 Integrated Fast Ethernet Controller (3C905B-TX Compatible) Disabling DHCP, enabling static IP ... DHCP disabled, static IP address enabled. Reboot required. You must reboot this machine before changes will take effect. Szenario: Zuweisen von IP-Adressen in einem SubnetzDieses Szenario zeigt, wie IP-Adressen für Reservierungen und Ausschlüsse verwaltet werden. DHCP muss in einem Subnetz oder einem anderen Bereich von IP-Adressen aktiviert sein, während anderen Clients statische IP-Adressen aus demselben Pool zugewiesen werden, damit jedem Client immer nur eine IP-Adresse zugewiesen wird. Zur Ausführung dieser Aufgabe müssen die entsprechenden Änderungen auch auf dem DHCP-Server vorgenommen werden. Die Beschreibung der erforderlichen Verfahren zur Verwaltung des DHCP-Servers würde den Rahmen dieses Dokumentes jedoch überschreiten. Ein Ansatz zum Automatisieren dieses Szenarios besteht in der Verwendung von zwei Skripts: | • | Dhcp-enable-subnet.vbs Aktiviert DHCP für Clients mit einem Bereich von IP-Adressen, der vom Administrator festgelegt wird. Wenn DHCP auf einem Client bereits aktiviert ist, erneuert das Skript die Lease, um sicherzustellen, dass die DHCP-Einstellungen des Clients korrekt sind. | | • | Staticip-enable-excl.vbs Gibt DHCP-Leases auf Clients für eine Liste von IP-Adressen frei, die für Ausschlüsse auf dem DHCP-Server verwendet werden sollen. Aktiviert die statische IP-Adressierung auf diesen Clients und weist jedem Client eine IP-Adresse, eine Subnetzmaske, ein Standardgateway sowie einen DNS-Server zu. |
Der Administrator muss den Bereich auf dem DHCP-Server separat konfigurieren, wobei er die entsprechenden Adressen reserviert und ausschließt. Die Beschreibungen der Reservierungen und Ausschlüsse auf dem DHCP-Server würden den Rahmen dieses Dokumentes jedoch überschreiten. Da WMI über keinen DHCP-Dienstanbieter verfügt, sind die Skripterstellungsmöglichkeiten auf dem Server begrenzt. Mithilfe von Befehlszeilentools wie Netsh.exe können Sie einige Aufgaben auf dem DHCP-Server ausführen. Szenario Teil 1: Konfigurieren von DHCP in einem SubnetzZum Automatisieren der ersten Reihe von Aufgaben in diesem Szenario stellt das erste Skript sicher, dass Clients innerhalb des korrekten Bereichs von IP-Adressen (festgelegt in den drei Variablen am Skriptanfang) innerhalb des Bereichs auf dem DHCP-Server für DHCP aktiviert sind. Falls dies nicht zutrifft, aktiviert das Skript DHCP auf den Clients. Wenn DHCP auf einem Client aber bereits aktiviert ist, erneuert das Skript die DHCP-Lease, um sicherzustellen, dass aktuelle Einstellungen vom Server abgerufen werden. 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 25 führt eine Iteration durch einen Bereich von IP-Adressen durch und überprüft bei jedem Computer die einzelnen Netzwerkadapter, um festzustellen, ob DHCP aktiviert ist. Wenn dies nicht zutrifft, aktiviert es DHCP. Sie müssen den ersten Teil der IP-Adresse sowie die erste und letzte IP-Adresse des Bereichs angeben. Bevor das Skript versucht, diese Änderungen an mehreren Netzwerkhosts vorzunehmen, führt es zwei Fehlerprüfungen durch: Das Skript pingt zunächst den Host an, um sicherzustellen, dass darauf zugegriffen werden kann. Anschließend überprüft es, ob beim Herstellen der Verbindung zu WMI ein Fehler aufgetreten ist, um sicherzustellen, dass der WMI-Dienst auf dem Host ausgeführt wird (unter älteren Betriebssystemen wird er möglicherweise nicht ausgeführt). 1. | Erstellen Sie Variablen zur Angabe von Parametern für das Präfix der IP-Adressen sowie für die Anfangs- und Endwerte des Suffixes, das zur Bildung vollständiger IP-Adressen anzuhängen ist. | 2. | Verwenden Sie eine For-Schleife, um die Aufgaben für jedes Suffix im Bereich einmal zu durchlaufen. | 3. | Führen Sie bei jedem Suffix (im Wesentlichen für jede IP-Adresse) die folgenden Aufgaben aus. | 4. | Verketten Sie das Präfix mit dem aktuellen Wert des Zählers, um eine IP-Adresse zu bilden. | 5. | Pingen Sie diese IP-Adresse an, indem Sie Ping.exe mithilfe der Exec-Methode des WshShell-Objekts ausführen. Die dazu angegebenen Parameter legen zwei Versuche und ein Zeitlimit von 1 Sekunde fest. | 6. | Wenn der Host auf die Ping-Anforderung antwortet, verwenden Sie einen GetObject-Aufruf zum Herstellen einer Verbindung zum WMI-Namespace root\cimv2 auf dem angegebenen Computer, und legen Sie den Parameter "impersonationLevel" auf "impersonate" fest. | 7. | Überprüfen Sie, ob beim Binden mit WMI ein Fehler aufgetreten ist. | 8. | Wenn eine Verbindung zu WMI hergestellt wurde, 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 für jede Netzwerkadapterkonfiguration in der Auflistung die folgenden Aufgaben aus. | 10. | Zeigen Sie die Indexnummer und Beschreibung für den Netzwerkadapter an. | 11. | Überprüfen Sie, ob DHCP bereits aktiviert ist. | 12. | Falls DHCP nicht aktiviert ist, rufen Sie die EnableDHCP-Methode der Klasse Win32_NetworkAdapterConfiguration auf. | 13. | Abhängig vom Rückgabewert der EnableDHCP-Methode nehmen Sie folgende Ausgaben vor: | • | 0 – zeigen Sie eine Erfolgsnachricht an. | | • | Einen anderen Wert – zeigen Sie eine Fehlermeldung an. |
| 14. | Falls DHCP bereits aktiviert ist, zeigen Sie eine entsprechende Meldung an, und rufen Sie die RenewDHCPLease-Methode der Klasse Win32_NetworkAdapterConfiguration auf. | 15. | Abhängig vom Rückgabewert der RenewDHCPLease-Methode nehmen Sie folgende Ausgaben vor: | • | 0 – zeigen Sie eine Erfolgsnachricht an. | | • | Einen anderen Wert – zeigen Sie eine Fehlermeldung an. |
| 16. | Wenn beim Binden mit WMI ein Fehler aufgetreten ist, zeigen Sie eine Fehlermeldung an. | 17. | Wenn der Host auf die Ping-Anforderung nicht reagiert, zeigen Sie eine Fehlermeldung an. |
Listing 25 Dhcp-enable-subnet.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 |
On Error Resume Next
strSubnetPrefix = "192.168.0."
intBeginSubnet = 10
intEndSubnet = 12
For i = intBeginSubnet To intEndSubnet
strComputer = strSubnetPrefix & i
' Ping remote computer. If inaccessible, display error message.
Set objShell = CreateObject("WScript.Shell")
Set objScriptExec = objShell.Exec("ping -n 2 -w 1000 " & strComputer)
strPingResults = LCase(objScriptExec.StdOut.ReadAll)
If InStr(strPingResults, "reply from") Then
WScript.Echo VbCrLf & "Host Name " & strComputer
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
' Test for success in binding to WMI.
If Err = 0 Then
arrIPAddresses = Array(strComputer)
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 & VbCrLf
If Not objNicConfig.DHCPEnabled Then
WScript.Echo " Enabling DHCP ..."
intEnableReturn = objNicConfig.EnableDHCP
If intEnableReturn = 0 Then
WScript.Echo VbCrLf & " DHCP enabled."
Else
WScript.Echo VbCrLf & " Unable to enable DHCP."
End If
Else
WScript.Echo " DHCP already enabled" & VbCrLf & _
" DHCP Server: " & objNicConfig.DHCPServer & _
VbCrLf & " Renewing DHCP lease ..."
intRenewReturn = objNicConfig.RenewDHCPLease
If intRenewReturn = 0 Then
WScript.Echo VbCrLf & " DHCP lease renewed."
Else
WScript.Echo VbCrLf & " Unable to renew DHCP lease."
End If
End If
Next
Else
Wscript.Echo " Error: Unable to connect to WMI."
Err.Clear
End If
Else
WScript.Echo VbCrLf & "Host Name: " & strComputer & VbCrLf & _
" Unable to connect."
End If
Next |
Wenn Sie Cscript.exe zur Ausführung dieses Skripts verwenden, wird im Befehlsfenster eine ähnliche Ausgabe wie die folgende angezeigt: C:\scripts>dhcp-enable-subnet.vbs Host Name 192.168.0.10 Network Adapter 1 3Com 3C918 Integrated Fast Ethernet Controller (3C905B-TX Compatible) DHCP already enabled DHCP Server: 192.168.0.1 Renewing DHCP lease ... DHCP lease renewed. Host Name 192.168.0.11 Network Adapter 1 3Com 3C918 Integrated Fast Ethernet Controller (3C905B-TX Compatible) DHCP already enabled DHCP Server: 192.168.0.1 Renewing DHCP lease ... DHCP lease renewed. Host Name 192.168.0.12 Unable to connect. Szenario Teil 2: Aktivieren statischer IP-Adressen für AusschlüsseZum Automatisieren der zweiten Reihe von Aufgaben in diesem Szenario gibt das zweite Skript DHCP-Leases frei und aktiviert statische IP-Adressen auf denjenigen Clients, die vom Subnetz ausgeschlossen sind. Nach dem erfolgreichen Abschluss dieser Aufgabe weist das Skript den Clients Standardgateways und DNS-Server zu, damit sie erneut eine Verbindung zum Netzwerk herstellen können. 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 26 führt eine Iteration durch einen Bereich von Hostnamen durch und überprüft bei jedem Computer die einzelnen Netzwerkadapter, um festzustellen, ob DHCP aktiviert ist. Wenn dies zutrifft, gibt das Skript die Lease frei und weist dann eine statische IP-Adresse und eine Subnetzmaske zu. Nach dem erfolgreichen Aktivieren der statischen IP-Adressierung weisen Sie dem Netzwerkadapter ein Standardgateway und einen DNS-Server zu. 1. | Erstellen Sie Variablen zur Angabe aller erforderlichen Parameter. Diese umfassen die Liste der Computer für die Ausführung sowie die IP-Adressen und andere Einstellungen, die bei aktivierter statischer IP-Adressierung den einzelnen Computern zuzuweisen sind. | 2. | Initialisieren Sie einen Schleifenzähler zum Auswählen der korrekten IP-Adresse aus dem Array für jeden Computer mit dem Wert 0. | 3. | Führen Sie eine Iteration durch jeden Hostnamen in der Liste der Computer durch, auf denen die statische IP-Adressierung konfiguriert werden soll. | 4. | Pingen Sie diesen Hostnamen an, indem Sie Ping.exe mithilfe der Exec-Methode des WshShell-Objekts ausführen. Die dazu angegebenen Parameter legen zwei Versuche und ein Zeitlimit von 1 Sekunde fest. | 5. | Wenn der Host auf die Ping-Anforderung reagiert, wählen Sie die IP-Adresse aus dem Array aus, dessen Index gleich dem aktuellen Wert des Schleifenzählers ist. Weisen Sie diese IP-Adresse einem neuen Array von einem Element zu, das wiederum diesem Host zugewiesen wird, wenn die statische IP-Adressierung aktiviert ist. Denken Sie daran, dass es sich bei dem Wert der IPAddress-Eigenschaft um ein Array von Zeichenfolgen handelt. | 6. | Verwenden Sie einen GetObject-Aufruf zum Herstellen einer Verbindung zum WMI-Namespace root\cimv2 auf dem angegebenen Computer, und legen Sie den Parameter "impersonationLevel" auf "impersonate" fest. | 7. | Überprüfen Sie, ob beim Binden mit WMI ein Fehler aufgetreten ist. | 8. | Wenn eine Verbindung zu WMI hergestellt wurde, 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 für jede Netzwerkadapterkonfiguration in der Auflistung die folgenden Aufgaben aus. | 10. | Zeigen Sie die Indexnummer und Beschreibung für den Netzwerkadapter an. | 11. | Überprüfen Sie, ob DHCP bereits aktiviert ist. | 12. | Verwenden Sie einen GetObject-Aufruf zum Herstellen einer Verbindung zum WMI-Namespace root\cimv2 auf dem angegebenen Computer, und legen Sie den Parameter "impersonationLevel" auf "impersonate" fest. | 13. | 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. | 14. | Führen Sie für jede Netzwerkadapterkonfiguration in der Auflistung die folgenden Aufgaben aus. | 15. | Rufen Sie die ReleaseDHCPLease-Methode der Klasse Win32_NetworkAdapterConfiguration auf, um die DHCP-Lease freizugeben, und zeigen Sie je nach dem Rückgabewert eine Erfolgsnachricht oder eine Fehlermeldung an. | 16. | Rufen Sie die EnableStatic-Methode von Win32_NetworkAdapterConfiguration auf, und übergeben Sie ihr das Array von einem Element der IP-Adressen für diesen Host sowie das Array von einem Element der Subnetzmasken (das für alle Hosts identisch ist). | 17. | Bei erfolgreicher Ausführung der EnableStatic-Methode rufen Sie die Get-Methode auf, um einen neuen Verweis auf die aktuelle Instanz der Klasse Win32_NetworkAdapterConfiguration abzurufen. Damit werden die Eigenschaften dieses Objekts aktualisiert, so dass weitere Änderungen vorgenommen werden können. | 18. | Rufen Sie die Methoden SetGateways und SetDNSServerSearchOrder der Klasse Win32_NetworkAdapterConfiguration auf, und übergeben Sie ihnen die entsprechenden Variablen als Parameter. | 19. | Überprüfen Sie den Rückgabewert für beide Methoden, und zeigen Sie jeweils eine Erfolgsnachricht oder eine Fehlermeldung an. | 20. | Wenn eine statische IP-Adresse nicht zugewiesen werden kann, zeigen Sie eine Fehlermeldung an. | 21. | Falls DHCP nicht aktiviert ist, zeigen Sie eine Meldung an, dass die statische IP-Adressierung bereits aktiviert ist. | 22. | Fragen Sie die Klasse Win32_NetworkAdapterConfiguration erneut nach IP-Adaptern ab, um alle neuen Werte mit den soeben vorgenommenen Änderungen abzurufen, und zeigen Sie die entsprechenden Eigenschaften an. | 23. | Wenn beim Binden mit WMI ein Fehler aufgetreten ist, zeigen Sie eine Fehlermeldung an. | 24. | Wenn der Host auf die Ping-Anforderung nicht reagiert, zeigen Sie eine Fehlermeldung an. | 25. | Inkrementieren Sie den Schleifenzähler zum Auswählen der IP-Adresse aus dem Array. |
Listing 26 Staticip-enable-excl.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 | On Error Resume Next
arrComputers = Array("client1", "client2", "client3")
' There must be one IP in arrStaticIPs for each host in arrComputers.
arrStaticIPs = Array("192.168.0.240","192.168.0.243","192.168.0.250")
arrSubnetMasks = Array("255.255.255.0")
arrDefaultGateways = Array("192.168.0.1")
arrGatewayCostMetrics = Array(1)
arrDNSServers = Array("192.168.0.1")
intCount = 0
For Each strComputer In arrComputers
' Ping remote computer. If inaccessible, display error message.
Set objShell = CreateObject("WScript.Shell")
Set objScriptExec = objShell.Exec("ping -n 2 -w 1000 " & strComputer)
strPingResults = LCase(objScriptExec.StdOut.ReadAll)
If InStr(strPingResults, "reply from") Then
WScript.Echo VbCrLf & "Host Name: " & strComputer
arrIPAddresses = Array(arrStaticIPs(intCount))
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\root\cimv2")
' Test for success in binding to WMI.
If Err = 0 Then
Set colNicConfigs = objWMIService.ExecQuery _
("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE " & _
"IPEnabled = True")
For Each objNicConfig In colNicConfigs
WScript.Echo VbCrLf & " Network Adapter " & _
objNicConfig.Index & VbCrLf & " " & _
objNicConfig.Description & VbCrLf
If objNicConfig.DHCPEnabled Then
intStaticReturn = objNicConfig.EnableStatic(arrIPAddresses, _
arrSubnetMasks)
If intStaticReturn = 0 Then
WScript.Echo " DHCP disabled, static IP address enabled."
Set objNicChanged = objWMIService.Get _
("Win32_NetworkAdapterConfiguration.Index=" & objNicConfig.Index)
intGatewaysReturn = objNicChanged.SetGateways _
(arrDefaultGateways, arrGatewayCostMetrics)
If intGatewaysReturn = 0 Then
WScript.Echo " Assigned new default gateways."
Else
WScript.Echo " Unable to assign default gateways."
End If
intDNSServersReturn = objNicChanged.SetDNSServerSearchOrder _
(arrDNSServers)
If intDNSServersReturn = 0 Then
WScript.Echo " Assigned new DNS servers."
Else
WScript.Echo " Unable to assign DNS servers."
End If
Else
WScript.Echo " Unable to enable static IP address."
End If
Else
WScript.Echo " Static IP address already enabled."
End If
Next
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 & VbCrLf & _
" DHCP Enabled: " & objNicConfig.DHCPEnabled
strIPAddresses = ""
If Not IsNull(objNicConfig.IPAddress) Then
For Each strIPAddress In objNicConfig.IPAddress
strIPAddresses = strIPAddresses & VbCrLf & _
" " & strIPAddress
Next
End If
WScript.Echo " IP Addresses: " & strIPAddresses
strIPSubnets = ""
If Not IsNull(objNicConfig.IPSubnet) Then
For Each strIPSubnet In objNicConfig.IPSubnet
strIPSubnets = strIPSubnets & VbCrLf & _
" " & strIPSubnet
Next
End If
WScript.Echo " Subnet Masks: " & strIPSubnets
strDefaultIPGateways = ""
If Not IsNull(objNicConfig.DefaultIPGateway) Then
For Each strDefaultIPGateway In objNicConfig.DefaultIPGateway
strDefaultIPGateways = strDefaultIPGateways & VbCrLf & _
" " & strDefaultIPGateway
Next
End If
WScript.Echo " Default Gateways: " & strDefaultIPGateways
strGatewayCostMetrics = ""
If Not IsNull(objNicConfig.GatewayCostMetric) Then
For Each strGatewayCostMetric In objNicConfig.GatewayCostMetric
strGatewayCostMetrics = strGatewayCostMetrics & VbCrLf & _
" " & strGatewayCostMetric
Next
End If
strDNSServerSearchOrder = ""
WScript.Echo " Gateway Cost Metrics: " & strGatewayCostMetrics
If Not IsNull(objNicConfig.DNSServerSearchOrder) Then
For Each strDNSServer In objNicConfig.DNSServerSearchOrder
strDNSServerSearchOrder = strDNSServerSearchOrder & VbCrLf & _
" " & strDNSServer
Next
End If
WScript.Echo " DNS Server Search Order: " & strDNSServerSearchOrder
Next
Else
Wscript.Echo " Error: Unable to connect to WMI."
Err.Clear
End If
Else
WScript.Echo VbCrLf & "Host Name: " & strComputer & VbCrLf & _
" Unable to connect." & VbCrLf
End If
intCount = intCount + 1
Next |
Wenn Sie Cscript.exe zur Ausführung dieses Skripts verwenden, wird im Befehlsfenster eine ähnliche Ausgabe wie die folgende angezeigt: C:\scripts>staticip-enable-excl.vbs Host Name: client1 Unable to connect. Host Name: client2 Network Adapter 1 3Com 3C918 Integrated Fast Ethernet Controller (3C905B-TX Compatible) Releasing DHCPlease ... DHCP lease released. Disabling DHCP, enabling static IP address ... DHCP disabled, static IP address enabled. Assigned new default gateways. Assigned new DNS servers. Network Adapter 1 3Com 3C918 Integrated Fast Ethernet Controller (3C905B-TX Compatible) DHCP Enabled: False IP Addresses: 192.168.0.243 Subnet Masks: 255.255.255.0 Default Gateways: 192.168.0.1 Gateway Cost Metrics: 20 DNS Server Search Order: 192.168.0.1 Host Name: client3 Error: Unable to connect to WMI. Szenario: Wechseln zwischen einer statischen Adresse und DHCPIn diesem Szenario muss ein Reisender eine Verbindung von seinem Laptop zum Firmennetzwerk in anderen Zweigstellen herstellen. In einigen Fällen erfordert es das Netzwerk, dass Clients DHCP verwenden; in anderen Fällen muss der Computer eine statische IP-Adresse (zusammen mit Subnetzmaske, Standardgateway, DNS- und WINS-Server) verwenden. Zur Ausführung dieses Skripts gibt der Benutzer den Skriptnamen ein, gefolgt von einem Leerzeichen und dem Namen der aktuellen Zweigstelle, in der sich der Computer befindet. Je nach Standort weist das Skript eine der beiden Adresszuweisungsmethoden zu: statisch in Miami und Dogpatch; DHCP in Seattle und Boston. 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 27 ermöglicht es dem Benutzer, auf einem tragbaren Computer zwischen DHCP und statischer IP-Adressierung zu wechseln. Dazu verwendet er ein Befehlszeilenargument, das den aktuellen Standort bezeichnet. Das Skript ist in Unterroutinen aufgeteilt. Dadurch wird es modularer und lässt sich einfacher lesen, debuggen und ändern. Es verwendet die WScript.Arguments-Eigenschaft, die ein Bestandteil von Windows Script Host ist. Das Skript gibt eine Auflistung aller Argumente zurück, die in die Befehlszeile nach dem Skriptnamen eingegeben wurden. Weitere Informationen zur Verwendung dieser Eigenschaft finden Sie unter " /germany/technet/datenbank/articles/600359.mspx#E02Y0AA im Abschnitt "Verwenden von Kommandozeilenargumenten" in Kapitel 3 des Windows 2000 Scripting-Handbuches. 1. | Verwenden Sie die WScript.Arguments-Auflistung zum Abrufen des Befehlszeilenarguments nach dem Skriptnamen. Dieses Skript verwendet nur ein Argument: den Namen der Zweigstelle, in dem der Benutzer eine Verbindung zum lokalen Netzwerk herstellen möchte. Alle anderen Argumente werden ignoriert. | 2. | Weisen Sie das erste Argument, colArgs(0), der Variablen strOffice zu. | 3. | Verwenden Sie eine Select Case-Anweisung, um blnDHCP einen booleschen Wert, True oder False, zuzuweisen. Dies hängt vom Namen der Zweigstelle ab, der als Befehlszeilenargument eingegeben wurde. Wenn es sich bei dem Argument um keinen der vier gültigen Namen handelt, zeigt das Skript eine Fehlermeldung an und wird beendet. | 4. | Verwenden Sie einen GetObject-Aufruf zum Herstellen einer Verbindung zum WMI-Namespace root\cimv2 auf dem lokalen Computer, und legen Sie den Parameter "impersonationLevel" auf "impersonate" fest. | 5. | 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. | 6. | Wenn die Zweigstelle, deren Name als Argument übergeben wurde, DHCP verwendet, rufen Sie die Unterroutine SetDHCP auf. | 7. | Wenn die Zweigstelle DHCP nicht verwendet, rufen Sie die Unterroutine SetStaticIP auf. | 8. | Die Unterroutine SetDHCP überprüft die DHCPEnabled-Eigenschaft. Falls DHCP nicht aktiviert ist, ruft sie die EnableDHCP-Methode auf. Falls DHCP bereits aktiviert ist, zeigt SetDHCP eine entsprechende Meldung und die IP-Adresse des DHCP-Servers an. Vor ihrer Beendigung ruft SetDHCP die Unterroutine GetSettings auf. Wenn DHCP bereits aktiviert ist, könnten Sie Code zu der Unterroutine hinzufügen, die die Lease erneuert. Im vorhergehenden Szenario bietet Dhcp-enable-subnet.vbs ein Beispiel für die dazu erforderliche Vorgehensweise. Obwohl der DHCP-Client den lokalen DHCP-Server finden und die lokale Konfiguration abrufen sollte, kann dieser Prozess in einigen Netzwerkumgebungen durch Erneuern der Lease beschleunigt werden. | 9. | Die Unterroutine SetStaticIP beginnt mit hardcodierten Variablen, die die erforderlichen Einstellungen für statische IP-Adressierung zuweisen (ein komplexeres Skript könnte diese Einstellungen aus einer externen Quelle abrufen). Anschließend überprüft SetStaticIP die DHCPEnabled-Eigenschaft. Wenn DHCP aktiviert ist, ruft sie die EnableStatic-Methode auf. Wenn EnableStatic erfolgreich ausgeführt wurde, ruft SetStaticIP die Methoden SetGateways und SetDNSServerSearchOrder auf, um die statische IP-Konfiguration abzuschließen. Wenn DHCP bereits aktiviert ist, zeigt SetDHCP eine entsprechende Meldung und die IP-Adresse des DHCP-Servers an. Vor ihrer Beendigung ruft SetStaticIP die Unterroutine GetSettings auf. | 10. | Die sowohl von SetDHCP als auch von SetStaticIP aufgerufene Unterroutine GetSettings fragt Win32_NetworkAdapterConfiguration erneut ab, um alle Änderungen abzurufen, die von den vorherigen Unterroutinen vorgenommen wurden. Danach zeigt GetSettings die relevanten Einstellungen für die auf dem Computer momentan bestehenden IP-Adresszuweisungen an. |
Listing 27 Dhcp-staticip-switch.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 | On Error Resume Next
' Get argument to find out what office we're in and set a switch based on it.
Set colArgs = WScript.Arguments
strOffice = LCase(colArgs(0))
Select Case strOffice
Case "boston" blnDHCP = True
Case "miami" blnDHCP = False
Case "seattle" blnDHCP = True
Case "dogpatch" blnDHCP = False
Case Else WScript.Echo "Please enter the script name followed by a " & _
"space and the name of a branch office." & _
VbCrLf & "Valid names are: Boston, Miami, Seattle and Dogpatch." _
: WScript.Quit
End Select
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colNicConfigs = objWMIService.ExecQuery _
("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
' If the office uses DHCP, call SetDHCP.
If blnDHCP = True Then
WScript.Echo "You are in the " & colArgs(0) & " branch office." & _
VbCrLf & "Enabling DHCP on all network adapters ..."
SetDHCP
' If the office uses static IP, call SetStaticIP.
Else
WScript.Echo "You are in the " & colArgs(0) & " branch office." & _
VbCrLf & "Enabling static IP addressing on all network adapters ..."
SetStaticIP
End If
'******************************************************************************
Sub SetDHCP
For Each objNicConfig In colNicConfigs
WScript.Echo VbCrLf & "Network Adapter " & objNicConfig.Index & _
VbCrLf & " " & objNicConfig.Description & VbCrLf
If Not objNicConfig.DHCPEnabled Then
WScript.Echo " Attempting to enable DHCP ..."
intReturn = objNicConfig.EnableDHCP
If intReturn = 0 Then
WScript.Echo " DHCP enabled."
Else
WScript.Echo " Unable to enable DHCP."
End If
Err.Clear
Else
WScript.Echo " DHCP already enabled" & VbCrLf & _
" DHCP Server: " & objNicConfig.DHCPServer
Err.Clear
End If
Next
GetSettings
End Sub
'******************************************************************************
Sub SetStaticIP
arrIPAddresses = Array("192.168.0.12")
arrSubnetMasks = Array("255.255.255.0")
arrDefaultGateways = Array("192.168.0.1")
arrGatewayCostMetrics = Array(1)
arrDNSServers = Array("192.168.0.1")
For Each objNicConfig In colNicConfigs
WScript.Echo VbCrLf & "Network Adapter " & objNicConfig.Index & VbCrLf & _
" " & objNicConfig.Description & VbCrLf
If objNicConfig.DHCPEnabled Then
WScript.Echo " Attempting to disable DHCP and enable static IP ..."
intStaticReturn = objNicConfig.EnableStatic(arrIPAddresses, arrSubnetMasks)
If intStaticReturn = 0 Then
WScript.Echo " DHCP disabled, static IP address enabled."
Set objNicChanged = objWMIService.Get _
("Win32_NetworkAdapterConfiguration.Index=" & objNicConfig.Index)
intGatewaysReturn = objNicChanged.SetGateways(arrDefaultGateways, _
arrGatewayCostMetrics)
intDNSServers = objNicChanged.SetDNSServerSearchOrder(arrDNSServers)
If intGatewaysReturn = 0 Then
WScript.Echo " Assigned new default gateways."
Else
WScript.Echo " Unable to assign default gateways."
End If
If intDNSServers = 0 Then
WScript.Echo " Assigned new DNS servers."
Else
WScript.Echo " Unable to assign DNS servers."
End If
Err.Clear
Else
WScript.Echo " Unable to enable static IP address."
Err.Clear
End If
Else
WScript.Echo " Static IP address already enabled."
End If
Next
GetSettings
End Sub
'******************************************************************************
Sub GetSettings
Set colNicConfigs = objWMIService.ExecQuery("SELECT * FROM " & _
"Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
WScript.Echo VbCrLf & "Settings after operation:"
For Each objNicConfig In colNicConfigs
WScript.Echo VbCrLf & _
"Network Adapter " & objNicConfig.Index & VbCrLf & _
" " & objNicConfig.Description & VbCrLf & VbCrLf & _
" DHCP Enabled: " & objNicConfig.DHCPEnabled
strIPAddresses = ""
If Not IsNull(objNicConfig.IPAddress) Then
For Each strIPAddress In objNicConfig.IPAddress
strIPAddresses = strIPAddresses & VbCrLf & _
" " & strIPAddress
Next
End If
WScript.Echo " IP Addresses: " & strIPAddresses
strIPSubnets = ""
If Not IsNull(objNicConfig.IPSubnet) Then
For Each strIPSubnet In objNicConfig.IPSubnet
strIPSubnets = strIPSubnets & VbCrLf & _
" " & strIPSubnet
Next
End If
WScript.Echo " Subnet Masks: " & strIPSubnets
strDefaultIPGateways = ""
If Not IsNull(objNicConfig.DefaultIPGateway) Then
For Each strDefaultIPGateway In objNicConfig.DefaultIPGateway
strDefaultIPGateways = strDefaultIPGateways & VbCrLf & _
" " & strDefaultIPGateway
Next
End If
WScript.Echo " Default Gateways: " & strDefaultIPGateways
strGatewayCostMetrics = ""
If Not IsNull(objNicConfig.GatewayCostMetric) Then
For Each strGatewayCostMetric In objNicConfig.GatewayCostMetric
strGatewayCostMetrics = strGatewayCostMetrics & VbCrLf & _
" " & strGatewayCostMetric
Next
End If
WScript.Echo " Gateway Cost Metrics: " & strGatewayCostMetrics
strDNSServerSearchOrder = ""
If Not IsNull(objNicConfig.DNSServerSearchOrder) Then
For Each strDNSServer In objNicConfig.DNSServerSearchOrder
strDNSServerSearchOrder = strDNSServerSearchOrder & VbCrLf & _
" " & strDNSServer
Next
End If
WScript.Echo " DNS Server Search Order: " & strDNSServerSearchOrder
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>dhcp-staticip-switch.vbs Boston You are in the Boston branch office. Enabling DHCP on all network adapters ... Network Adapter 1 3Com 3C920 Integrated Fast Ethernet Controller (3C905C-TX Compatible) - Packet Scheduler Miniport DHCP already enabled DHCP Server: 192.168.0.1 Settings after operation: Network Adapter 1 3Com 3C920 Integrated Fast Ethernet Controller (3C905C-TX Compatible) - Packet Scheduler Miniport DHCP Enabled: True IP Addresses: 192.168.0.21 Subnet Masks: 255.255.255.0 Default Gateways: 192.168.0.1 Gateway Cost Metrics: 20 DNS Server Search Order: 192.168.0.1 C:\scripts\netcli>dhcp-staticip-switch.vbs Miami You are in the Miami branch office. Enabling static IP addressing on all network adapters ... Network Adapter 1 3Com 3C920 Integrated Fast Ethernet Controller (3C905C-TX Compatible) - Packet Scheduler Miniport Attempting to disable DHCP and enable static IP ... DHCP disabled, static IP address enabled. Assigned new default gateways. Assigned new DNS servers. Settings after operation: Network Adapter 1 3Com 3C920 Integrated Fast Ethernet Controller (3C905C-TX Compatible) - Packet Scheduler Miniport DHCP Enabled: False IP Addresses: 192.168.0.12 Subnet Masks: 255.255.255.0 Default Gateways: 192.168.0.1 Gateway Cost Metrics: 1 DNS Server Search Order: 192.168.0.1 Tools zur IP-Adresszuweisung auf ClientsIn Tabelle 11 werden die verfügbaren Windows-Tools zur Skripterstellung für die IP-Adresszuweisung auf Clients aufgeführt. Tabelle 11 Tools zur IP-Adresszuweisung auf Clients Befehlszeilentools | Dhcploc.exe: Locatordienstprogramm für DHCP-Server | Windows Server 2003-Supporttools | Befehlszeilentools | Enabledhcp.vbs | Windows 2000 Resource Kit | Befehlszeilentools | Netsh.exe | Windows-Betriebssysteme1 | WSH | Keines | | WMI | Win32_NetworkAdapterConfiguration | |
In Tabelle 12 werden die verfügbaren Registrierungsschlüssel zur Skripterstellung für die IP-Adresszuweisung 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 12 Registrierungsunterschlüssel zur Skripterstellung für die IP-Adresszuweisung auf Clients HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces \ {AdapterIdentifier} | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dhcp\Parameters |
| |