WMI-Aufgaben für Netzwerke verwalten und erhalten Informationen zu Verbindungen und IP- oder MAC-Adressen. Weitere Beispiele finden Sie im TechNet ScriptCenter unter https://www.microsoft.com/technet .
Die in diesem Thema gezeigten Skriptbeispiele rufen Daten nur vom lokalen Computer ab. Weitere Informationen zur Verwendung des Skripts zum Abrufen von Daten von Remotecomputern finden Sie unter Herstellen einer Verbindung mit WMI auf einem Remotecomputer.
Im folgenden Verfahren wird beschrieben, wie Ein Skript ausgeführt wird.
So führen Sie ein Skript aus
Kopieren Sie den Code, und speichern Sie ihn in einer Datei mit der Erweiterung .vbs, z. B.filename.vbs. Stellen Sie sicher, dass ihr Text-Editor der Datei keine .txt Erweiterung hinzufüg.
Öffnen Sie ein Eingabeaufforderungsfenster, und navigieren Sie zu dem Verzeichnis, in dem Sie die Datei gespeichert haben.
Geben Sie an der Eingabeaufforderung cscript filename.vbs ein.
Wenn Sie nicht auf ein Ereignisprotokoll zugreifen können, überprüfen Sie, ob Sie über eine Eingabeaufforderung mit erhöhten Rechten ausführen. Einige Ereignisprotokolle, z. B. das Sicherheitsereignisprotokoll, können durch Benutzerzugriffssteuerungen (User Access Controls, UAC) geschützt werden.
Hinweis
Standardmäßig zeigt cscript die Ausgabe eines Skripts im Eingabeaufforderungsfenster an. Da WMI-Skripts große Mengen von Ausgaben erzeugen können, sollten Sie die Ausgabe an eine Datei umleiten. Geben Sie cscript filename.vbs > outfile.txt an der Eingabeaufforderung ein, um die Ausgabe des filename.vbs Skripts anoutfile.txt umzuleiten.
In der folgenden Tabelle sind Skriptbeispiele aufgeführt, die zum Abrufen verschiedener Datentypen vom lokalen Computer verwendet werden können.
Vorgehensweisen
WMI-Klassen oder -Methoden
... Eine Netzwerkverbindung mithilfe von WMI deaktivieren?
... ermitteln, welche IP-Adresse einer bestimmten Netzwerkverbindung zugewiesen wurde?
Verwenden Sie die Win32_NetworkAdapter-Klasse und die NetConnectionID-Eigenschaft, um die MAC-Adresse der Netzwerkverbindung zu bestimmen. Verwenden Sie dann die Win32_NetworkAdapterConfiguration-Klasse, um die IP-Adresse zu suchen, die der MAC-Adresse zugeordnet ist.
VB
strComputer = "."
Set objWMIService = GetObject(_
"winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapter " _
& "Where NetConnectionID = " & _
"'Local Area Connection 2'")
For Each objItem in colItems
strMACAddress = objItem.MACAddress
Next
Set colItems = objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapterConfiguration")
For Each objItem in colItems
If objItem.MACAddress = strMACAddress Then
For Each strIPAddress in objItem.IPAddress
Wscript.Echo "IP Address: " & strIPAddress
Next
End If
Next
VB
strComputer = "."
Set objWMIService = GetObject( _
"winmgmts:\\" & strComputer & "\root\cimv2")
Set colNics = objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapter " _
& "Where NetConnectionID = " & _
"'Local Area Connection'")
For Each objNic in colNics
Set colNicConfigs = objWMIService.ExecQuery _
("ASSOCIATORS OF " _
& "{Win32_NetworkAdapter.DeviceID='" & _
objNic.DeviceID & "'}" & _
" WHERE AssocClass=Win32_NetworkAdapterSetting")
For Each objNicConfig In colNicConfigs
For Each strIPAddress in objNicConfig.IPAddress
Wscript.Echo "IP Address: " & strIPAddress
Next
Next
Next
... ermitteln Sie die MAC-Adresse eines Netzwerkadapters?
Verwenden Sie die Win32_NetworkAdapterConfiguration-Klasse, und überprüfen Sie den Wert der MACAddress-Eigenschaft.
... ermitteln Sie die IP-Adresse eines Computers?
Verwenden Sie die Win32_NetworkAdapterConfiguration-Klasse, und überprüfen Sie den Wert der IPAddress-Eigenschaft. Dies wird als Array zurückgegeben. Verwenden Sie also eine For-Each-Schleife, um den Wert abzurufen.
VB
strComputer = "."
Set objWMIService = GetObject( _
"winmgmts:\\" & strComputer & "\root\cimv2")
Set IPConfigSet = objWMIService.ExecQuery _
("Select IPAddress from Win32_NetworkAdapterConfiguration ")
For Each IPConfig in IPConfigSet
If Not IsNull(IPConfig.IPAddress) Then
For i=LBound(IPConfig.IPAddress) _
to UBound(IPConfig.IPAddress)
WScript.Echo IPConfig.IPAddress(i)
Next
End If
Next
PowerShell
$Computer = "."
$IPconfigset = Get-WmiObject Win32_NetworkAdapterConfiguration
# Iterate and get IP address
$count = 0
foreach ($IPConfig in $IPConfigSet) {
if ($Ipconfig.IPaddress) {
foreach ($addr in $Ipconfig.Ipaddress) {
"IP Address : {0}" -f $addr;
$count++
}
}
}
if ($count -eq 0) {"No IP addresses found"}
else {"$Count IP addresses found on this system"}
...config, dass ein Computer seine IP-Adresse über DHCP abrufen kann?
strComputer = "."
Set objWMIService = GetObject(_
"winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration " _
& "where IPEnabled=TRUE")
For Each objNetAdapter In colNetAdapters
errEnable = objNetAdapter.EnableDHCP()
Next
... Weisen Sie einem Computer eine statische IP-Adresse zu?
strComputer = "."
Set objWMIService = GetObject( _
"winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration " _
& "where IPEnabled=TRUE")
strIPAddress = Array("192.168.1.141")
strSubnetMask = Array("255.255.255.0")
strGateway = Array("192.168.1.100")
strGatewayMetric = Array(1)
For Each objNetAdapter in colNetAdapters
errEnable = objNetAdapter.EnableStatic( _
strIPAddress, strSubnetMask)
errGateways = objNetAdapter.SetGateways(_
strGateway, strGatewaymetric)
Next
... Informationen zu Netzwerkadaptern abrufen, ohne auch Informationen zu Ras- und VPN-Verbindungen abzurufen?
Verwenden Sie die Win32_NetworkAdapterConfiguration-Klasse. Verwenden Sie in Ihrer WQL-Abfrage diese Klausel: Where IPEnabled = True.
VB
strComputer = "."
Set objWMIService = GetObject( _
"winmgmts:\\" & strComputer & "\root\cimv2")
Set IPConfigSet = objWMIService.ExecQuery _
("Select IPAddress from Win32_NetworkAdapterConfiguration" _
& " where IPEnabled=TRUE")
For Each IPConfig in IPConfigSet
If Not IsNull(IPConfig.IPAddress) Then
For i=LBound(IPConfig.IPAddress) _
to UBound(IPConfig.IPAddress)
WScript.Echo IPConfig.IPAddress(i)
Next
End If
Next
... Pingen Sie einen Computer, ohne Ping.exe zu verwenden?
Verwenden Sie die Win32_PingStatus-Klasse.
Win32_PingStatus können Daten für Computer zurückgeben, die sowohl IPv4-Adressen als auch IPv6-Adressen aufweisen.
VB
strComputer = "."
Set objWMIService = GetObject(_
"winmgmts:\\" & strComputer & "\root\cimv2")
Set colPings = objWMIService.ExecQuery _
("Select * From Win32_PingStatus where Address = '192.168.1.1'")
For Each objStatus in colPings
If IsNull(objStatus.StatusCode) _
or objStatus.StatusCode<>0 Then
WScript.Echo "Computer did not respond."
Else
Wscript.Echo "Computer responded."
End If
Next
VB
strComputer = "client1"
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
If InStr(strPingResults, "destination net unreachable") Then
WScript.Echo strComputer & "did not respond to ping."
Else
WScript.Echo strComputer & " responded to ping."
End If
Else
WScript.Echo strComputer & " did not respond to ping."
End If