Menyambungkan ke WMI Dari Jarak Jauh dengan PowerShell

Windows PowerShell menyediakan mekanisme sederhana untuk terhubung ke Windows Management Instrumentation (WMI) pada komputer jarak jauh. Koneksi jarak jauh di WMI dipengaruhi oleh Windows Firewall, pengaturan DCOM, dan Kontrol Akun Pengguna (UAC). Untuk informasi selengkapnya tentang mengonfigurasi koneksi jarak jauh, lihat Menyambungkan ke WMI Dari Jarak Jauh Dimulai dengan Windows Vista.

Contoh dalam topik ini didasarkan pada VBScripts dari Menyambungkan ke WMI di Komputer Jarak Jauh. Semua contoh dalam topik ini menggunakan cmdlet Get-WmiObject . Untuk informasi selengkapnya, lihat Get-WmiObject.

contoh Windows PowerShell

Saat membuat koneksi ke komputer jarak jauh, pengguna dapat menentukan informasi koneksi seperti nama komputer jarak jauh, kredensial, dan tingkat autentikasi untuk koneksi tersebut. Contoh berikut menggambarkan cara menyambungkan ke komputer jarak jauh dengan menggunakan set kredensial yang berbeda dan cara mengakses informasi WMI.

Contoh Windows PowerShell berikut menunjukkan pengaturan tingkat peniruan:


Get-WmiObject -Namespace "root\cimv2" -Class Win32_Process -Impersonation 3 -ComputerName Computer_B

Dalam contoh sebelumnya, pengguna tersambung ke komputer jarak jauh dengan menggunakan kredensial yang sama (domain dan nama pengguna) yang mereka gunakan untuk masuk. Pengguna juga meminta untuk menggunakan peniruan identitas. Tidak seperti contoh VBScript asli, string moniker tidak diperlukan karena tingkat peniruan diatur oleh properti "Peniruan". Secara default, tingkat peniruan diatur ke 3 (Meniru).

Contohnya mencantumkan semua instans kelas Win32_Process yang berjalan di komputer jarak jauh.

Catatan

Anda harus menentukan namespace WMI yang akan disambungkan pada komputer jarak jauh karena ada kemungkinan namespace default tidak sama pada komputer yang berbeda.

 

Contoh Windows PowerShell berikut menunjukkan cara menyambungkan ke komputer jarak jauh dengan kredensial yang berbeda dan untuk mengatur tingkat peniruan identitas ke 3, yaitu Meniru:


$Computer = "atl-dc-01"

Get-WmiObject -Namespace "root\cimv2" -Class Win32_Process -Impersonation 3 -Credential `
FABRIKAM\administrator -ComputerName $Computer

Dalam contoh sebelumnya, nama komputer ditetapkan ke variabel $Computer. Pengguna terhubung ke komputer jarak jauh dengan menggunakan kredensial tertentu (domain dan nama pengguna) dan meminta peniruan identitas untuk tingkat autentikasi.

Catatan

Karakter aksen kubur (') digunakan untuk menunjukkan pemutusan garis. Ini setara dengan karakter garis bawah (_) dalam VBScript.

 

Contoh Windows PowerShell berikut terhubung ke sekelompok komputer jarak jauh di domain yang sama dengan membuat array nama komputer jarak jauh lalu menampilkan nama perangkat Plug and Play—instans Win32_PnPEntity—di setiap komputer:

$ArrComputers = "Computer1", "Computer2", "Computer3"
foreach ($Computer in $ArrComputers) 
{
write-host ""
write-host "===================================="
write-host "Computer: $Computer"
write-host "===================================="

write-host "-----------------------------------"
write-host "Win32_PnPEntity instance"
write-host "-----------------------------------"

$ColItems = Get-WmiObject -Class Win32_PnPEntity -Namespace "root\cimv2" -Computer $Computer
$ColItems[0..47] | Format-List Name, Status
}

Catatan

Untuk menjalankan skrip Windows PowerShell sebelumnya, Anda harus menjadi administrator di komputer jarak jauh. Selain itu, berkaitan dengan contoh sebelumnya, perhatikan hal berikut:

 

  • Nama komputer dalam array harus diapit dalam tanda kutip karena merupakan string.
  • Objek yang dikembalikan oleh Get-WmiObject ditetapkan ke variabel $ColItems.
  • Operator rentang [] membatasi daftar perangkat Plug and Play hingga 48 instans. Untuk informasi selengkapnya, lihat About_Operators.
  • "|" adalah karakter alur. Objek yang dikembalikan oleh ColItems dikirim ke cmdlet Format-List .

Contoh Windows PowerShell berikut memungkinkan Anda menyambungkan ke komputer jarak jauh pada domain lain. Contoh ini juga menampilkan nama proses untuk instans Win32_Process di komputer jarak jauh.

$Computer = "FullComputerName" 
$Domain = "DOMAIN"
$Credential = Get-Credential
$ColItems = Get-WmiObject -Class Win32_Process -Authority "ntlmdomain:$Domain" `
-Credential $Credential -Locale "MS_409" -Namespace "root\cimv2"  -ComputerName $Computer

foreach ($ObjItem in $colItems) 
{
write-host "Process Name:" $ObjItem.name
}

Catatan

Untuk menjalankan skrip Windows PowerShell sebelumnya, Anda harus menjadi administrator di komputer jarak jauh.

 

Dalam contoh sebelumnya, pengguna terhubung ke komputer jarak jauh pada domain yang berbeda dan menentukan lokal pilihan. Perintah Get-Credential meminta kredensial pengguna dan menetapkan kredensial ke objek. Contoh ini juga mencantumkan nama instans kelas Win32_Process yang berjalan di komputer.

Menyambungkan ke WMI pada Komputer Jarak Jauh