Sdílet prostřednictvím


Úlohy rozhraní WMI: Sítě

Úlohy rozhraní WMI pro správu sítí a získávání informací o připojeních a IP adresách nebo adresÁCH MAC Další příklady najdete na webu TechNet ScriptCenter na https://www.microsoft.com/technet.

Příklady skriptů uvedené v tomto tématu získávají data pouze z místního počítače. Další informace o tom, jak pomocí skriptu získat data ze vzdálených počítačů, naleznete v tématu Připojení k rozhraní WMI na vzdáleném počítači.

Následující postup popisuje, jak spustit skript.

Spuštění skriptu

  1. Zkopírujte kód a uložte ho do souboru s příponou .vbs, například název_souboru.vbs. Ujistěte se, že textový editor nepřidá do souboru .txt příponu.
  2. Otevřete okno příkazového řádku a přejděte do adresáře, do kterého jste soubor uložili.
  3. Na příkazovém řádku zadejte cscript filename.vbs.
  4. Pokud nemáte přístup k protokolu událostí, zkontrolujte, jestli používáte příkazový řádek se zvýšenými oprávněními. Některé protokoly událostí, jako je protokol událostí zabezpečení, můžou být chráněné řízením uživatelských přístupů (UAC).

Poznámka

Ve výchozím nastavení cscript zobrazí výstup skriptu v okně příkazového řádku. Vzhledem k tomu, že skripty rozhraní WMI můžou vytvářet velké objemy výstupu, můžete chtít výstup přesměrovat na soubor. Na příkazovém řádku zadejte cscript filename.vbs > outfile.txt a přesměrujte výstup skriptu název_souboru.vbs do outfile.txt.

Následující tabulka uvádí příklady skriptů, které lze použít k získání různých typů dat z místního počítače.

Jak můžu... Třídy nebo metody služby WMI
... zakázat síťové připojení pomocí rozhraní WMI? Pokud používáte protokol DHCP, použijte Win32_NetworkAdapterConfiguration a metodu ReleaseDHCPLease k uvolnění IP adresy. Pokud nepoužíváte protokol DHCP, nemůžete k zakázání síťového připojení použít rozhraní WMI. Pokud chcete síťové připojení znovu povolit, použijte objNetCard.RenewDHCPLease. Všechny pronájmy DHCP můžete také uvolnit nebo prodloužit pomocí metod ReleaseDHCPLeaseAll a RenewDHCPLeaseAll.
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()
}
... zakázat nebo povolit síťovou kartu?

Použijte třídu Win32_NetworkAdapter a metody Disable nebo Enable.

... určete, která IP adresa byla přiřazena danému síťovému připojení?

K určení adresy MAC síťového připojení použijte třídu Win32_NetworkAdapter a vlastnost NetConnectionID. Potom pomocí třídy Win32_NetworkAdapterConfiguration vyhledejte IP adresu přidruženou k adrese MAC.

VB
              
              strComputer = "." Set objWMIService = GetObject(_ "winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery _ ("Select * From Win32_NetworkAdapter " _ & "Where NetConnectionID = " & _ "'Připojení k místní oblasti 2'") 

Pro každou položku v colItems strMACAddress = objItem.MACAddress Next

Set colItems = objWMIService.ExecQuery _ ("Vybrat * z 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
... určíte adresu MAC síťového adaptéru?

Použijte třídu Win32_NetworkAdapterConfiguration a zkontrolujte hodnotu vlastnosti MACAddress.

... určit IP adresu počítače?

Použijte třídu Win32_NetworkAdapterConfiguration a zkontrolujte hodnotu vlastnosti IPAddress. Vrátí se jako pole, takže k získání hodnoty použijte smyčku For-Each.

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"}
... nakonfigurujte počítač tak, aby začal získávat IP adresu prostřednictvím protokolu DHCP?

Použijte třídu Win32_NetworkAdapterConfiguration a metodu EnableDHCP.

Visual Basic
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
... přiřadit počítači statickou IP adresu?

Použijte třídu Win32_NetworkAdapterConfiguration a metodu EnableStatic.

Visual Basic
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
... Získat informace o síťových adaptérech bez zároveň načítání informací o připojeních, jako jsou RAS a VPN?

Použijte třídu Win32_NetworkAdapterConfiguration. V dotazu jazyka WQL použijte následující podmínku: 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
... jak pingnout počítač bez použití Ping.exe?

Použijte třídu Win32_PingStatus.

Win32_PingStatus může vracet data pro počítače, které mají adresy IPv4 i adresy IPv6.

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

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

úlohy rozhraní WMI pro skripty a aplikace

příklady aplikací jazyka WMI C++

TechNet ScriptCenter