Tugas WMI: Jaringan

Tugas WMI untuk jaringan mengelola dan mendapatkan informasi tentang koneksi dan alamat IP atau MAC. Untuk contoh lain, lihat TechNet ScriptCenter di https://www.microsoft.com/technet.

Contoh skrip yang ditampilkan dalam topik ini hanya mendapatkan data dari komputer lokal. Untuk informasi selengkapnya tentang cara menggunakan skrip untuk mendapatkan data dari komputer jarak jauh, lihat Menyambungkan ke WMI di Komputer Jarak Jauh.

Prosedur berikut menjelaskan cara menjalankan skrip.

Untuk menjalankan skrip

  1. Salin kode dan simpan dalam file dengan ekstensi .vbs, seperti filename.vbs. Pastikan editor teks Anda tidak menambahkan ekstensi .txt ke file.
  2. Buka jendela prompt perintah dan navigasikan ke direktori tempat Anda menyimpan file.
  3. Ketik filename.vbscscript pada prompt perintah.
  4. Jika Anda tidak dapat mengakses log peristiwa, periksa untuk melihat apakah Anda menjalankan dari prompt perintah Yang ditingkatkan. Beberapa Log Peristiwa, seperti Log Peristiwa Keamanan, dapat dilindungi oleh Kontrol Akses Pengguna (UAC).

Catatan

Secara default, cscript menampilkan output skrip di jendela prompt perintah. Karena skrip WMI dapat menghasilkan output dalam jumlah besar, Anda mungkin ingin mengalihkan output ke file. Ketik filename.vbs > cscript outfile.txt pada prompt perintah untuk mengalihkan output skrip filename.vbs ke outfile.txt.

Tabel berikut ini mencantumkan contoh skrip yang bisa digunakan untuk mendapatkan berbagai jenis data dari komputer lokal.

Bagaimana Caranya... Kelas atau metode WMI
... menonaktifkan koneksi jaringan menggunakan WMI? Jika Anda menggunakan DHCP, gunakan metode Win32_NetworkAdapterConfiguration dan ReleaseDHCPLease untuk merilis alamat IP. Jika Anda tidak menggunakan DHCP, Anda tidak dapat menggunakan WMI untuk menonaktifkan koneksi jaringan. Untuk mengaktifkan kembali koneksi jaringan, gunakan objNetCard.RenewDHCPLease. Anda juga dapat merilis atau memperbarui semua sewa DHCP menggunakan metode ReleaseDHCPLeaseAll dan 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()
}
... menonaktifkan atau mengaktifkan NIC?

Gunakan kelas Win32_NetworkAdapter dan metode Nonaktifkan atau Aktifkan .

... menentukan alamat IP mana yang telah ditetapkan ke koneksi jaringan tertentu?

Gunakan kelas Win32_NetworkAdapter dan properti NetConnectionID untuk menentukan alamat MAC koneksi jaringan. Kemudian, gunakan kelas Win32_NetworkAdapterConfiguration untuk menemukan alamat IP yang terkait dengan alamat MAC.

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

Untuk Setiap objItem di colItems strMACAddress = objItem.MACAddress Next

Atur colItems = objWMIService.ExecQuery _ ("Pilih * Dari 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
... menentukan alamat MAC adaptor jaringan?

Gunakan kelas Win32_NetworkAdapterConfiguration dan periksa nilai properti MACAddress .

... menentukan alamat IP komputer?

Gunakan kelas Win32_NetworkAdapterConfiguration dan periksa nilai properti IPAddress . Ini dikembalikan sebagai array, jadi gunakan perulangan For-Each untuk mendapatkan nilai.

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"}
... mengonfigurasi komputer untuk mulai mendapatkan alamat IP-nya melalui DHCP?

Gunakan kelas Win32_NetworkAdapterConfiguration dan metode EnableDHCP .

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
... menetapkan alamat IP statis pada komputer?

Gunakan kelas Win32_NetworkAdapterConfiguration dan metode EnableStatic .

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
... mendapatkan informasi tentang adaptor jaringan tanpa juga mengambil informasi tentang hal-hal seperti koneksi RAS dan VPN?

Gunakan kelas Win32_NetworkAdapterConfiguration . Dalam kueri WQL Anda, gunakan klausa ini: Di mana 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 komputer tanpa menggunakan Ping.exe?

Gunakan kelas Win32_PingStatus .

Win32_PingStatus dapat mengembalikan data untuk komputer yang memiliki alamat IPv4 dan alamat IPv6.

VB
strComputer = "." Atur objWMIService = GetObject(_ "winmgmts:\\" & strComputer & "\root\cimv2") Atur colPings = objWMIService.ExecQuery _ ("Pilih * Dari Win32_PingStatus di mana Alamat = '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
  

Tugas WMI untuk Skrip dan Aplikasi

Contoh Aplikasi WMI C++

TechNet ScriptCenter