WMI-Aufgaben: Netzwerk

WMI-Aufgaben für Netzwerkverwaltung und Abrufen von Informationen zu Verbindungen und IP- oder MAC-Adressen. Weitere Beispiele finden Sie im TechNet ScriptCenter unter https://www.microsoft.com/technet.

In den in diesem Artikel enthaltenen Skriptbeispielen werden nur Daten vom lokalen Computer abgerufen. Weitere Informationen zum Verwenden des Skripts zum Abrufen von Daten von Remotecomputern finden Sie unter Herstellen einer Verbindung mit WMI auf einem Remotecomputer.

Nachstehend wird die Skriptausführung näher beschrieben.

So führen Sie ein Skript aus

  1. Kopieren Sie den Code, und speichern Sie ihn in einer Datei mit VBS-Erweiterung, z. B. filename.vbs. Stellen Sie sicher, dass der Text-Editor der Datei keine TXT-Erweiterung hinzufügt.
  2. Öffnen Sie ein Eingabeaufforderungsfenster, und navigieren Sie zu dem Verzeichnis, in dem Sie die Datei gespeichert haben.
  3. Geben Sie cscript filename.vbs in die Eingabeaufforderung ein.
  4. Wenn Sie nicht auf ein Ereignisprotokoll zugreifen können, überprüfen Sie, ob Sie eine Eingabeaufforderung mit erhöhten Rechten verwenden. Einige Ereignisprotokolle, z. B. das Sicherheitsereignisprotokoll, können durch die Benutzerkontensteuerung (User Account Control, UAC) geschützt sein.

Hinweis

Standardmäßig zeigt cscript die Ausgabe eines Skripts im Eingabeaufforderungsfenster an. Da WMI-Skripts sehr viele Ausgabedaten erzeugen können, sollten Sie die Ausgabe in eine Datei umleiten. Geben Sie cscript filename.vbs > outfile.txt in die Eingabeaufforderung ein, um die Ausgabe des Skripts filename.vbs an outfile.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? Wenn Sie DHCP verwenden, verwenden Sie die Win32_NetworkAdapterConfiguration und die ReleaseDHCPLease-Methode, um die IP-Adresse freizugeben. Wenn Sie DHCP nicht verwenden, können Sie WMI nicht verwenden, um eine Netzwerkverbindung zu deaktivieren. Verwenden Sie objNetCard.RenewDHCPLease, um die Netzwerkverbindung erneut zu aktivieren. Sie können auch alle DHCP-Leases mit den ReleaseDHCPLeaseAll- und RenewDHCPLeaseAll-Methoden freigeben oder verlängern.
VB
strComputer = "."
Set objWMIService = GetObject( _
    "winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetCards = objWMIService.ExecQuery _
    ("Select * From Win32_NetworkAdapterConfiguration " _
        & "Where IPEnabled = True")
For Each objNetCard in colNetCards
    objNetCard.ReleaseDHCPLease()
Next
PowerShell
$Computer = "."
$net = Get-WMIObject -class Win32_NetworkAdapterConfiguration -ComputerName $computer
$netenabled = $net | where {$_.IPenabled}
foreach ($NetCard in $netenabled) {
    "Releasing lease on: {0}" -f $netcard.caption
 $netcard.ReleaseDHCPLease()
}
... Eine NIC deaktivieren oder aktivieren?

Verwenden Sie die Win32_NetworkAdapter-Klasse und die Disable-Methode oder Enable-Methode.

... 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 ermitteln. Verwenden Sie dann die Win32_NetworkAdapterConfiguration-Klasse, um die IP-Adresse zu finden, die der MAC-Adresse zugeordnet ist.

VB
strComputer = "." Legen Sie objWMIService = GetObject(_ "winmgmts:\\" & strComputer & "\root\cimv2") fest Legen Sie colItems = objWMIService.ExecQuery _ fest ("Wählen Sie * aus Win32_NetworkAdapter " _ & "Where NetConnectionID = " & _ "'Local Area Connection 2'") 

Für jedes objItem in colItems strMACAddress = objItem.MACAddress Next

Legen Sie colItems = objWMIService.ExecQuery _ fest ("Wählen Sie * aus 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
... Die MAC-Adresse eines Netzwerkadapters ermitteln?

Verwenden Sie die Win32_NetworkAdapterConfiguration-Klasse, und überprüfen Sie den Wert der Eigenschaft MACAddress .

... Die IP-Adresse eines Computers ermitteln?

Verwenden Sie die Win32_NetworkAdapterConfiguration-Klasse, und überprüfen Sie den Wert der Eigenschaft IPAddress. Dies wird als Array zurückgegeben. Verwenden Sie daher 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"}
... Einen Computer so konfigurieren, dass er seine IP-Adresse über DHCP erhält?

Verwenden Sie die Win32_NetworkAdapterConfiguration-Klasse und die EnableDHCP-Methode.

VB
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
... Einem Computer eine statische IP-Adresse zuweisen?

Verwenden Sie die Win32_NetworkAdapterConfiguration-Klasse und die EnableStatic-Methode .

VB
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 erhalten, ohne auch Informationen zu z. B. RAS- und VPN-Verbindungen abzurufen?

Verwenden Sie die Win32_NetworkAdapterConfiguration-Klasse. Verwenden Sie in Ihrer WQL-Abfrage die folgende 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
... Einen Computer pingen, ohne Ping.exe zu verwenden?

Verwenden Sie die Win32_PingStatus-Klasse.

Win32_PingStatus kann Daten für Computer zurückgeben, die sowohl über IPv4-Adressen als auch über IPv6-Adressen verfügen.

VB
strComputer = "." Legen Sie objWMIService = GetObject(_ "winmgmts:\\" & strComputer & "\root\cimv2") fest Legen Sie colPings = objWMIService.ExecQuery _ fest ("Wählen Sie * aus Win32_PingStatus, wobei Adresse = '192.168.1.1' ist") 

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
  

WMI-Aufgaben für Skripts und Anwendungen

WMI-C++-Anwendungsbeispiele

TechNet ScriptCenter