Pembelajaran Sekolah Geek Cara Menggunakan Objek di PowerShell
Memahami objek adalah salah satu konsep asas untuk "mendapatkan" PowerShell. Sertai kami semasa kami meneroka objek dan bagaimana mereka membuat PowerShell lebih baik daripada mana-mana shell lain di luar sana hari ini.
Pastikan anda membaca artikel sebelumnya dalam siri ini:
- Ketahui Bagaimana Mengotomatikkan Windows dengan PowerShell
- Belajar Menggunakan Cmdlets di PowerShell
Dan tunggu selama siri sepanjang minggu.
Objek
Pernahkah anda tertanya-tanya apa yang menetapkan PowerShell selain daripada shell Linux tradisional seperti Bash, atau pun arahan arahan legasi? Jawapannya benar-benar mudah: teks keluaran tradisional shell, yang menjadikannya sukar untuk melakukan perkara-perkara seperti pemformatan dan penapisan. Sudah tentu, ada alat untuk membantu anda menyelesaikan tugas (sed dan grep), tetapi pada akhir hari, jika anda ingin melakukan apa-apa jenis parsing teks berat, anda perlu mengetahui ungkapan biasa seperti belakang tangan awak.
PowerShell mengambil kesempatan daripada kerangka kerja .Net asas dan mengambil pendekatan yang berbeza, menggunakan objek dan bukan teks. Objek hanyalah representasi sesuatu. Mereka adalah koleksi bahagian dan tindakan untuk menggunakannya. Mari kita lihat bahagian-bahagian basikal dan bagaimana kita boleh menggunakannya.
Objek dalam .Net adalah sama tetapi kecuali dua perbezaan kecil: "Bahagian" dipanggil hartanah dan "Arahan" dipanggil kaedah. Jika kami ingin mewakili Perkhidmatan Windows sebagai objek, kami mungkin memutuskan bahawa adalah sesuai untuk menggambarkannya menggunakan tiga sifat: Nama Perkhidmatan, Negeri dan Penerangan. Kami juga perlu berinteraksi dengan perkhidmatan tersebut, jadi kami mungkin memberikan objek Start, Stop dan Pause.
Anda boleh melihat sifat dan kaedah objek dengan menyampaikannya ke cmdlet Get-Ahli. Objek yang output cmdlet PowerShell adalah sebahagian besarnya daripada jenis rangka kerja. Net tetapi anda boleh membuat objek anda sendiri jika anda perlu menggunakan bahasa seperti C # atau menggunakan jenis PSObject.
Paip
Terdapat banyak kerangka Linux dengan saluran paip, yang membolehkan anda menghantar teks yang satu arahan output sebagai masukan ke perintah seterusnya dalam perancangan. PowerShell membawa ini ke tahap seterusnya dengan membolehkan anda mengambil objek yang satu output cmdlet dan lulusnya sebagai input ke cmdlet seterusnya dalam perancangan. Caranya ialah mengetahui apa jenis objek pulangan cmdlet, yang sangat mudah apabila menggunakan cmdlet Get-Ahli.
Get-Service | Dapatkan Ahli
Atas sebab-sebab di luar skop artikel ini, sifat dan kaedah dipanggil bersama ahli kelas, yang menjelaskan mengapa anda menggunakan cmdlet Get-Ahli untuk mendapatkan senarai semua kaedah dan sifat objek yang ada. Walau bagaimanapun, cmdlet Get-Ahli juga mengembalikan satu lagi maklumat penting, jenis objek asas. Dalam tangkapan skrin di atas, kita dapat melihat bahawa Get-Service mengembalikan objek jenis:
System.ServiceProcess.ServiceController
Oleh kerana PowerShell berurusan dengan objek dan bukan teks, tidak semua cmdlet boleh dikaitkan bersama menggunakan saluran paip [1]. Ini bermakna kita perlu mencari cmdlet yang ingin menerima objek System.ServiceProcess.ServiceController dari saluran paip.
Get-Command -ParameterType System.ServiceProcess.ServiceController
Perhatikan bahawa ada cmdlet yang disebut Stop-Service; mari kita lihat bantuan untuknya.
Get-Help -Name Stop-Service
Nampaknya parameter InputObject mengambil pelbagai objek ServiceController sebagai input. Biasanya, jika anda melihat parameter yang dipanggil InputObject, ia akan menerima input dari Paip, tetapi hanya untuk memastikan mari lihat bantuan penuh untuk parameter itu.
Get-Help -Name Stop-Service-Full
Suspek kami adalah betul. Jadi pada ketika ini kita tahu perkara berikut:
- Get-Service mengembalikan objek ServiceController
- Stop-Service mempunyai parameter yang disebut InputObject yang menerima satu atau lebih ServiceControllers sebagai input.
- Parameter InputObject menerima input saluran paip.
Menggunakan maklumat ini, kami boleh melakukan perkara berikut:
Get-Service -Name 'Apple Mobile Device' | Stop-Service
Itu semua buat kali ini. Kali seterusnya kita melihat bagaimana kita boleh memformat, menapis dan membandingkan objek dalam Paip.
Kerja rumah
- Baca di Talian Paip Objek
Jika anda mempunyai sebarang soalan, anda boleh tweet saya @taybgibb, atau tinggalkan komen.