Menyambungkan ke WMI pada Komputer Jarak Jauh
WMI dapat digunakan untuk mengelola dan mengakses data WMI di komputer jarak jauh. Sambungan jarak jauh di WMI dipengaruhi oleh pengaturan Windows Firewall dan DCOM. Kontrol Akun Pengguna (UAC) mungkin juga memerlukan perubahan pada beberapa pengaturan. Namun, setelah pengaturan Anda benar, panggilan ke sistem jarak jauh sangat mirip dengan panggilan WMI lokal. Namun, Anda dapat memilih untuk membuatnya lebih kompleks, dengan menggunakan kredensial yang berbeda, protokol autentikasi alternatif, dan fitur keamanan lainnya.
Mengonfigurasi Komputer untuk Sambungan Jarak Jauh
Sebelum Anda dapat mengakses sistem jarak jauh dengan WMI, Anda mungkin perlu memeriksa beberapa pengaturan keamanan untuk mengonfirmasi bahwa Anda memiliki akses. Khususnya:
Windows berisi sejumlah fitur keamanan yang dapat memblokir akses ke skrip pada sistem jarak jauh. Dengan demikian, Anda mungkin perlu mengubah pengaturan Active Directory dan Windows Firewall sistem Anda sebelum melakukan panggilan WMI. Untuk informasi selengkapnya, lihat Menyiapkan Koneksi WMI Jarak Jauh dan Memecahkan Masalah Koneksi WMI Jarak Jauh.
Pengaturan DCOM yang benar harus diaktifkan agar sambungan jarak jauh berfungsi. Mengubah pengaturan DCOM dapat mengizinkan akses pengguna hak rendah ke komputer untuk koneksi jarak jauh. Untuk informasi selengkapnya, lihat Mengamankan Koneksi WMI Jarak Jauh.
Selain itu, mungkin ada beberapa keadaan di mana Anda mungkin ingin menjalankan WMI melalui port tetap. Untuk melakukan ini, Anda juga perlu mengubah pengaturan Anda. Untuk informasi selengkapnya, lihat Menyiapkan Port Tetap untuk WMI.
Menyambungkan ke Komputer Jarak Jauh
Intinya, menyambungkan ke sistem jarak jauh dengan WMI terdiri dari memastikan bahwa Anda memiliki izin yang sesuai untuk mengakses sistem, dan bahwa koneksi Anda dikonfigurasi dengan benar. Setelah Anda memiliki dua elemen tersebut, koneksi itu sendiri relatif sederhana. Misalnya, jika Anda menggunakan kredensial keamanan default, Anda dapat mengakses WMI pada sistem jarak jauh menggunakan kode berikut:
-
Gunakan parameter -ComputerName umum untuk sebagian besar cmdlet WMI, seperti Get-WmiObject.
$strComputer = "Computer_B" $colSettings = Get-WmiObject Win32_OperatingSystem -ComputerName $strComputer
-
Gunakan moniker yang berisi nama sistem jarak jauh dalam panggilan ke GetObject.
strComputer = "Computer_B" Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colSettings = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
-
Untuk versi antarmuka terkelola WMI saat ini (Microsoft.Management.Infrastructure), gunakan objek CimSession untuk mewakili koneksi ke host jarak jauh.
using Microsoft.Management.Infrastructure; ... string Namespace = @"root\cimv2"; string OSQuery = "SELECT * FROM Win32_OperatingSystem"; CimSession mySession = CimSession.Create("Computer_B"); IEnumerable<CimInstance> queryInstance = mySession.QueryInstances(Namespace, "WQL", OSQuery);
-
Untuk versi v1 antarmuka terkelola WMI (System.Management), gunakan objek ManagementScope untuk mewakili koneksi ke host jarak jauh.
using System.Management; ... ManagementScope scope = new ManagementScope("\\\\Computer_B\\root\\cimv2"); scope.Connect(); ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_OperatingSystem"); ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
-
Gunakan metode IWbemLocator::ConnectServer untuk menentukan nama komputer jarak jauh dalam parameter strNetworkResource .
hres = pLoc->ConnectServer( _bstr_t(L"\\\\COMPUTER_B\\root\\cimv2"), _bstr_t(useToken?NULL:pszName), // User name _bstr_t(useToken?NULL:pszPwd), // User password NULL, // Locale NULL, // Security flags _bstr_t(useNTLM?NULL:pszAuthority),// Authority NULL, // Context object &pSvc // IWbemServices proxy );
Sampel kode sebelumnya bisa dibilang merupakan koneksi jarak jauh paling dasar yang dapat Anda lakukan dengan WMI. Secara khusus, sampel mengasumsikan hal berikut:
- Anda adalah administrator pada komputer jarak jauh. Karena Kontrol Akun Pengguna, akun pada sistem jarak jauh harus merupakan akun domain di grup Administrator. Untuk informasi selengkapnya, lihat Kontrol Akun Pengguna dan WMI.
- Kata sandi pada komputer lokal Anda saat ini tidak kosong. Ini pada dasarnya adalah persyaratan keamanan Windows bahwa Anda harus masuk ke sistem Anda dengan kata sandi.
- Komputer lokal dan jarak jauh Anda berada dalam domain yang sama. Jika Anda perlu melintasi batas domain, Anda harus memberikan informasi tambahan atau menggunakan model pemrograman yang sedikit berbeda.
- Anda menggunakan akun Anda sendiri untuk mengakses komputer jarak jauh. Jika Anda mencoba mengakses akun lain, Anda harus memberikan kredensial tambahan. (Perhatikan bahwa mencoba mengakses WMI secara lokal dengan kredensial yang berbeda dari akun Anda saat ini tidak diizinkan.)
- Kedua komputer menjalankan IPv6. WMI mendukung koneksi ke komputer yang menjalankan IPv6. Namun, komputer lokal Anda dan "Computer_B" harus menjalankan IPv6. Salah satu komputer mungkin juga menjalankan IPv4. Untuk informasi selengkapnya, lihat Dukungan IPv6 dan IPv4 di WMI.
- Skrip Anda tidak perlu mendelegasikan - yaitu, tidak perlu mengakses komputer jarak jauh tambahan melalui komputer jarak jauh yang ditargetkan. Untuk informasi selengkapnya, lihat Mendelegasikan dengan WMI.
- Anda mencoba melakukan panggilan tertentu, daripada membuat proses jarak jauh. Untuk informasi selengkapnya, lihat Membuat Proses dari Jarak Jauh menggunakan WMI.
Dengan mengingat pembatasan tersebut, panggilan WMI jarak jauh sangat mirip dengan panggilan WMI lokal - satu-satunya perbedaan adalah Anda harus menentukan nama sistem jarak jauh. Namun, Anda dapat memilih untuk mengubah banyak fitur tersebut: menggunakan kredensial yang berbeda, atau merutekan panggilan Anda melalui komputer pihak ke-3, atau mengakses domain yang berbeda.