Geek School Learning Cara Menggunakan Objek di PowerShell
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 sana hari ini.
Pastikan untuk membaca artikel sebelumnya dalam seri ini:
- Pelajari Cara Mengotomatiskan Windows dengan PowerShell
- Belajar Menggunakan Cmdlet di PowerShell
Dan tetap disini selama sisa seri sepanjang minggu.
Benda
Pernahkah Anda bertanya-tanya apa yang membedakan PowerShell dari shell Linux tradisional seperti Bash, atau bahkan command prompt legacy? Jawabannya sangat sederhana: teks keluaran kerang tradisional, yang membuatnya sulit untuk melakukan hal-hal seperti memformat dan memfilter. Tentu saja, ada alat untuk membantu Anda menyelesaikan pekerjaan (sed dan grep datang ke pikiran), tetapi pada akhirnya, jika Anda ingin melakukan segala jenis penguraian teks yang berat, Anda perlu mengetahui ekspresi reguler seperti punggung tanganmu.
PowerShell mengambil keuntungan dari framework .Net yang mendasarinya dan mengambil pendekatan yang berbeda, menggunakan objek alih-alih teks. Objek hanyalah representasi dari sesuatu. Mereka adalah kumpulan bagian dan tindakan untuk menggunakannya. Mari kita lihat bagian-bagian sepeda dan bagaimana kita menggunakannya.
Objek di .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 pantas untuk menggambarkannya menggunakan tiga properti: Nama Layanan, Negara, dan Deskripsi. Kita juga perlu berinteraksi dengan layanan, jadi kita dapat memberikan objek metode Mulai, Berhenti dan Jeda.
Anda bisa melihat properti dan metode objek dengan meneruskannya ke cmdlet Get-Member. Objek yang dihasilkan PowerShell cmdlet sebagian besar adalah tipe mendasar dari .Net framework, tetapi Anda bisa membuat objek sendiri jika Anda perlu menggunakan bahasa seperti C # atau menggunakan tipe PSObject.
Pipeline
Ada banyak kerang Linux dengan pipeline, memungkinkan Anda untuk mengirim teks yang satu perintah output sebagai input ke perintah berikutnya dalam pipeline. PowerShell mengambil ini ke tingkat berikutnya dengan memungkinkan Anda untuk mengambil objek yang dihasilkan oleh satu cmdlet dan meneruskannya sebagai input ke cmdlet berikutnya dalam pipa. Triknya adalah mengetahui jenis objek apa yang dikembalikan cmdlet, yang benar-benar mudah saat menggunakan cmdlet Get-Member.
Dapatkan Layanan | Dapatkan Anggota
Untuk alasan di luar ruang lingkup artikel ini, properti dan metode secara bersama-sama 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 informasi penting lainnya, tipe objek yang mendasarinya. Pada tangkapan layar di atas, kita dapat melihat bahwa Get-Service mengembalikan objek jenis:
System.ServiceProcess.ServiceController
Karena PowerShell berurusan 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 bernama InputObject, ia akan menerima input 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:
- Dapatkan-Layanan 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, kami dapat melakukan hal berikut:
Dapatkan-Layanan -Nama 'Perangkat Seluler Apple' | Stop-Service
Itu saja untuk saat ini, kawan. Lain kali kita melihat bagaimana kita bisa memformat, memfilter, dan membandingkan objek di Pipeline.
Pekerjaan rumah
- Baca di Object Pipeline
Jika Anda memiliki pertanyaan, Anda dapat men-tweet saya @taybgibb, atau tinggalkan komentar.