WMI-Aufgaben: Netzwerk

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

  1. 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.
  2. Öffnen Sie ein Eingabeaufforderungsfenster, und navigieren Sie zu dem Verzeichnis, in dem Sie die Datei gespeichert haben.
  3. Geben Sie an der Eingabeaufforderung cscript filename.vbs ein.
  4. 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? 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 mithilfe der Methoden ReleaseDHCPLeaseAll und RenewDHCPLeaseAll freigeben oder erneuern.
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()
}
... NIC deaktivieren oder aktivieren?

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

... 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?

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
... Weisen Sie einem Computer eine statische IP-Adresse zu?

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 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
  

WMI-Aufgaben für Skripts und Anwendungen

WMI C++-Anwendungsbeispiele

TechNet ScriptCenter