If-Koubou

Sekolah Geek: Mempelajari Cara Menggunakan Objek di PowerShell

Sekolah Geek: Mempelajari Cara Menggunakan Objek di PowerShell (Bagaimana caranya)

Memahami objek adalah salah satu konsep dasar untuk "mendapatkan" PowerShell. Bergabunglah dengan kami saat kami menjelajahi objek dan bagaimana mereka membuat PowerShell lebih baik daripada shell lain di luar sana hari ini.

Pastikan untuk membaca artikel sebelumnya dalam rangkaian:

  • Pelajari Cara Mengotomatiskan Windows dengan PowerShell
  • Belajar Menggunakan Cmdlet di PowerShell

Dan nantikan terus sisa serial ini sepanjang minggu.

Objek

Pernahkah Anda bertanya-tanya apa yang membedakan PowerShell dari shell Linux tradisional seperti Bash, atau bahkan command prompt legacy? Jawabannya sangat sederhana: teks output cangkang tradisional, yang membuatnya sulit melakukan hal-hal seperti memformat dan memfilter. Tentu saja, ada alat untuk membantu Anda menyelesaikan pekerjaan (sed dan grep datang ke pikiran), tetapi pada akhir hari, jika Anda ingin melakukan jenis parsing teks berat, Anda perlu tahu ekspresi reguler seperti punggung tanganmu.

PowerShell mengambil keuntungan dari framework .Net yang mendasari dan mengambil pendekatan yang berbeda, menggunakan objek bukan teks. Objek hanyalah representasi dari sesuatu. Mereka adalah kumpulan bagian dan tindakan untuk menggunakannya. Mari kita lihat bagian-bagian sepeda dan bagaimana kita bisa menggunakannya.

Objek dalam .Net hampir sama kecuali untuk dua perbedaan kecil: "Bagian" dipanggil properti dan "Instruksi" dipanggil metode. Jika kami ingin mewakili Layanan Windows sebagai objek, kami mungkin memutuskan bahwa itu tepat untuk menggambarkannya menggunakan tiga properti: Nama Layanan, Negara dan Deskripsi. Kami juga perlu berinteraksi dengan layanan, jadi kami mungkin memberikan objek metode Mulai, Berhenti, dan Jeda.

Anda dapat melihat properti dan metode objek dengan meneruskannya ke cmdlet Get-Member. Objek-objek yang output cmdlet PowerShell sebagian besar jenis yang mendasari dari. Net framework, tetapi Anda dapat membuat objek Anda sendiri jika Anda perlu menggunakan bahasa seperti C # atau menggunakan jenis PSObject.

Pipeline

Ada banyak shell Linux dengan pipeline, memungkinkan Anda untuk mengirim teks yang satu perintah output sebagai masukan ke perintah berikutnya di dalam pipa. PowerShell membawa ini ke tingkat berikutnya dengan memungkinkan Anda untuk mengambil objek yang satu cmdlet output dan meneruskannya sebagai masukan ke cmdlet berikutnya di dalam pipa. Triknya adalah mengetahui apa jenis objek pengembalian cmdlet, yang benar-benar mudah ketika menggunakan cmdlet Get-Member.

Dapatkan-Layanan | Dapatkan-Anggota

Untuk alasan di luar cakupan artikel ini, properti dan metode secara bersama disebut anggota kelas, yang menjelaskan mengapa Anda menggunakan cmdlet Get-Member untuk mendapatkan daftar semua metode dan properti yang dimiliki objek. Namun, cmdlet Get-Member juga mengembalikan bagian informasi penting lainnya, jenis objek yang mendasarinya. Di screenshot di atas, kita dapat melihat bahwa Get-Service mengembalikan objek dari jenis:

System.ServiceProcess.ServiceController

Karena PowerShell berhubungan dengan objek dan bukan teks, tidak semua cmdlet dapat dihubungkan bersama menggunakan pipeline [1]. Itu berarti kita perlu menemukan cmdlet yang ingin menerima objek System.ServiceProcess.ServiceController dari pipeline.

Get-Command -ParameterType System.ServiceProcess.ServiceController

Perhatikan bahwa ada cmdlet yang disebut Stop-Service; mari kita lihat bantuan untuk itu.

Get-Help -Name Stop-Service

Sepertinya parameter InputObject mengambil array objek ServiceController sebagai input. Biasanya, jika Anda melihat parameter yang disebut InputObject, itu akan menerima masukan dari Pipeline, tetapi hanya untuk memastikan mari kita lihat bantuan penuh untuk parameter itu.

Get-Help -Name Stop-Service -Full

Kecurigaan kami benar. Jadi pada titik ini kita tahu yang berikut:

  • Get-Service mengembalikan objek ServiceController
  • Stop-Service memiliki parameter yang disebut InputObject yang menerima satu atau lebih ServiceControllers sebagai input.
  • Parameter InputObject menerima input pipa.

Dengan menggunakan informasi ini kita bisa melakukan hal-hal berikut:

Dapatkan-Layanan -Name 'Apple Mobile Device' | Stop-Service

Itu saja untuk orang-orang kali ini. Lain kali kita melihat bagaimana kita dapat memformat, menyaring, dan membandingkan objek di dalam Saluran Pipa.

Pekerjaan rumah

  • Baca di Pipeline Objek

Jika Anda memiliki pertanyaan, Anda dapat mengirim tweet saya @taybgibb, atau tinggalkan komentar.