Aracılığıyla paylaş


WMI Görevleri: Ağ

Ağ iletişimi için WMI görevleri, bağlantılar ve IP veya MAC adresleri hakkında bilgi yönetir ve alır. Diğer örnekler için, https://www.microsoft.com/technetkonumundaki TechNet ScriptCenter'ne bakın.

Bu konuda gösterilen betik örnekleri yalnızca yerel bilgisayardan veri alır. Uzak bilgisayarlardan veri almak için betiği nasıl kullanacağınız hakkında daha fazla bilgi için bkz. Uzak Bilgisayarda WMI'ye Bağlanma.

Aşağıdaki yordamda betiğin nasıl çalıştırıldığı açıklanmaktadır.

Betik çalıştırmak için

  1. Kodu kopyalayın ve filename.vbsgibi .vbs uzantısına sahip bir dosyaya kaydedin. Metin düzenleyicinizin dosyaya .txt uzantısı eklemediğinden emin olun.
  2. Bir komut istemi penceresi açın ve dosyayı kaydettiğiniz dizine gidin.
  3. Komut istemine cscript filename.vbs yazın.
  4. Olay günlüğüne erişemiyorsanız, Yükseltilmiş komut isteminden çalıştırıyor musunuz diye kontrol edin. Güvenlik Olay Günlüğü gibi bazı Olay Günlüğü, Kullanıcı Erişim Denetimleri (UAC) tarafından korunabilir.

Not

Varsayılan olarak, cscript komut istemi penceresinde bir betiğin çıktısını görüntüler. WMI betikleri büyük miktarda çıkış üretebileceğinden, çıkışı bir dosyaya yeniden yönlendirmek isteyebilirsiniz. filename.vbs betiğinin çıktısını outfile.txtyönlendirmek için komut istemine cscript filename.vbs > outfile.txt yazın.

Aşağıdaki tabloda, yerel bilgisayardan çeşitli veri türlerini almak için kullanılabilecek betik örnekleri listelenmiştir.

Nasıl yapabilirim... WMI sınıfları veya yöntemleri
... WMI kullanarak bir ağ bağlantısını devre dışı bırakmak istiyor musun? DHCP kullanıyorsanız IP adresini serbest bırakmak için Win32_NetworkAdapterConfiguration ve ReleaseDHCPLease yöntemini kullanın. DHCP kullanmıyorsanız, ağ bağlantısını devre dışı bırakmak için WMI kullanamazsınız. Ağ bağlantısını yeniden etkinleştirmek için objNetCard.RenewDHCPLeasekullanın. Ayrıca, ReleaseDHCPLeaseAll ve RenewDHCPLeaseAllyöntemlerinikullanarak tüm DHCP kiralarını serbest bırakabilir veya yenileyebilirsiniz.
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 devre dışı bırakılsın mı yoksa etkinleştirilsin mi?

Win32_NetworkAdapter sınıfını ve Disable veya Enable yöntemlerini kullanın.

... belirli bir ağ bağlantısına hangi IP adresinin atandığını belirleme

Ağ bağlantısının MAC adresini belirlemek için Win32_NetworkAdapter sınıfını ve NetConnectionID özelliğini kullanın. Ardından, MAC adresiyle ilişkilendirilmiş IP adresini bulmak için Win32_NetworkAdapterConfiguration sınıfını kullanın.

VB
              
              strComputer = "." objWMIService = GetObject(_ "winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery _ ("Select * From Win32_NetworkAdapter " _ & "Where NetConnectionID = " & _ "'Local Area Connection 2'") 

Her objItem için colItems'teki strMACAddress = objItem.MACAddress Sonraki

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
... ağ bağdaştırıcısının MAC adresini belirlemek mi istiyorsunuz?

Win32_NetworkAdapterConfiguration sınıfını kullanın ve MACAddress özelliğinin değerini denetleyin.

... bilgisayarın IP adresini belirlemek mi?

Win32_NetworkAdapterConfiguration sınıfını kullanın ve IPAddress özelliğinin değerini denetleyin. Bu bir dizi olarak döndürülür, bu nedenle değeri almak için bir For-Each döngüsü kullanın.

Visual Basic
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"}
Bir bilgisayarı IP adresini DHCP üzerinden almaya başlayacak şekilde yapılandırmak mı?

Win32_NetworkAdapterConfiguration sınıfını ve EnableDHCPyönteminikullanın.

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
... bilgisayara statik IP adresi atansın mı?

Win32_NetworkAdapterConfiguration sınıfını ve EnableStatic yöntemini kullanın.

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
... RAS ve VPN bağlantıları gibi konularda da bilgi almadan ağ bağdaştırıcıları hakkında bilgi almak mı istiyorsunuz?

Win32_NetworkAdapterConfiguration sınıfını kullanın. WQL sorgunuzda şu yan tümceyi kullanın: 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
... Ping.exekullanmadan bir bilgisayara ping işlemi gerçekleştirmek mümkün mü?

Win32_PingStatus sınıfını kullanın.

Win32_PingStatus hem IPv4 adresleri hem de IPv6 adresleri olan bilgisayarlar için veri döndürebilir.

VB
              
              strComputer = "." 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
  

Betikler ve Uygulamalar için WMI Görevlerini Oluşturma

WMI C++ Uygulama Örnekleri

TechNet ScriptCenter