Geek School: Bekerja dengan Koleksi dalam PowerShell

Isi kandungan:

Geek School: Bekerja dengan Koleksi dalam PowerShell
Geek School: Bekerja dengan Koleksi dalam PowerShell
Anonim

Jika anda melihat baris terakhir kod dalam bahagian sintaks, anda boleh melihat bahawa parameter InputObject menerima objek jenis Process dan apabila anda melihat jenis diikuti oleh dua kurungan segi empat sama itu ia bermakna bahawa parameter menerima satu atau lebih daripada jenis sebelumnya. Dalam kes ini, ia menerima satu atau lebih objek proses. Secara teknikal, kami akan mengatakan bahawa cmdlet InputObject menerima proses array Setiap kali anda mempunyai cmdlet yang menyokong operasi kelompok dengan cara ini, gunakannya. Ini adalah pilihan nombor satu.

Menggunakan WMI

Walaupun WMI bukanlah teknologi terbaik untuk dihantar daripada Ibu Pejabat Microsoft, ia berada di tempat kedua dalam senarai cara bekerja dengan koleksi objek. Kami boleh mendapatkan senarai proses yang sedang berjalan dengan mudah daripada kelas Win32_Process seperti:

Imej
Imej

Memandangkan pertanyaan WMI mengembalikan jenis objeknya sendiri, anda perlu mencari kaedah yang boleh menghentikan proses, jadi biarkan ia dihantar kepada Dapatkan-Ahli.

Imej
Imej

Nampaknya perkara yang paling hampir untuk dihentikan ialah kaedah penamatan, jadi itulah yang mesti dilakukan. Untuk memanggil kaedah pada Objek WMI, anda hanya paipkannya ke Invoke-WmiMethod dan nyatakan nama kaedah tersebut.

Imej
Imej

Bagus, itu berjaya. Setiap kali anda mendapat ReturnValue sebanyak 0 dalam WMI, cuma ingat bahawa arahan itu berjaya dilaksanakan.

Enumeration

Menggagalkan dua kaedah lain, jika anda perlu melakukan sesuatu pada sekumpulan objek, anda boleh menghitung keseluruhan objek dan bertindak pada setiap objek individu. Mula-mula anda perlu mencari kaedah yang akan anda gunakan untuk menghentikan satu proses.

Imej
Imej

Sempurna, nampaknya kita boleh menggunakan kaedah Kill dan kemudian paip ke ForEach-Object untuk membunuh mereka semua.

Imej
Imej

Di sini kami mengambil semua objek proses yang dipulangkan oleh Get-Process dan menyerahkannya ke cmdlet ForEach-Object. Sama seperti cmdlet Where-Object, kami mewakili setiap objek dalam saluran paip dengan $_ yang kami boleh panggil ke kaedah Kill() pada. Dengan semua yang dikatakan dan dilakukan, menyenaraikan koleksi adalah lebih perlahan daripada kaedah di atas dan hanya boleh digunakan sebagai hasil terakhir.

Ringkasan

PilihanSatu

Pilihan Dua

Pilihan Tiga

Itu sahaja untuk kali ini kawan-kawan, jumpa minggu depan untuk lebih banyak keseronokan PowerShell.

Topik popular.