Geek School Belajar Menggunakan Remoting di PowerShell
Salah satu fitur terbaik yang ditawarkan PowerShell adalah kemampuan mengelola Server Anda dari jarak jauh. Bahkan memungkinkan Anda mengelola banyak dari mereka sekaligus.
Pastikan untuk membaca artikel sebelumnya dalam seri ini:
- Pelajari Cara Mengotomatiskan Windows dengan PowerShell
- Belajar Menggunakan Cmdlet di PowerShell
- Mempelajari Cara Menggunakan Objek di PowerShell
- Belajar Memformat, Memfilter, dan Membandingkan di PowerShell
Dan tetap disini selama sisa seri sepanjang minggu.
Apa itu Remoting??
Manajemen massal server Anda bisa jadi membosankan, dan jika Anda harus membuat perubahan konfigurasi IIS pada 50 server web sebelumnya, Anda akan tahu apa yang saya maksud. Ini adalah jenis situasi di mana PowerShell Remoting dan kemampuan penulisan bahasa dapat membantu. Menggunakan HTTP atau HTTPS yang lebih aman, PowerShell Remoting memungkinkan Anda mengirim perintah ke mesin jarak jauh di jaringan Anda. Mesin kemudian menjalankan perintah dan mengirimkan hasilnya kembali kepada Anda, yang pada gilirannya ditampilkan di layar Anda.
Ayo Dapatkan Teknis
Inti dari PowerShell Remoting terletak Layanan Windows tunggal, Windows Remote Management, atau layanan WinRM, seperti yang telah dikenal. Menggunakan WinRM, Anda dapat mengatur satu atau lebih konfigurasi sesi (juga dikenal sebagai titik akhir), yang pada dasarnya adalah file yang berisi informasi tentang pengalaman yang ingin Anda berikan kepada orang yang terhubung ke instance PowerShell jarak jauh Anda. Lebih khusus lagi, Anda dapat menggunakan file konfigurasi sesi untuk menentukan siapa yang dapat dan siapa yang tidak dapat terhubung ke instance, cmdlet dan skrip apa yang dapat mereka jalankan, serta konteks keamanan apa yang harus dijalankan oleh sesi tersebut. Menggunakan Layanan WinRM, Anda juga mengatur "pendengar", yang mendengarkan permintaan PowerShell yang masuk. "Pendengar" ini bisa berupa HTTP atau HTTPS dan dapat diikat ke satu alamat IP pada mesin Anda. Ketika Anda membuka koneksi PowerShell ke komputer lain (secara teknis ini dilakukan dengan menggunakan protokol WS-MAN, yang didasarkan pada HTTP), koneksi mengikat ke salah satu "pendengar" ini. "Pendengar" kemudian bertugas mengirim lalu lintas ke aplikasi yang terkait dengan file konfigurasi sesi yang sesuai; aplikasi (biasanya PowerShell tetapi Anda dapat memiliki aplikasi hosting lain jika Anda mau) kemudian menjalankan perintah dan memasukkan hasilnya kembali melalui "pendengar" di seluruh jaringan dan kembali ke mesin Anda.
Tunjukkan padaku bagaimana caranya
Hal pertama yang perlu Anda lakukan adalah mengaktifkan Remoting pada Mesin yang ingin Anda sambungkan. Ini dapat dilakukan dengan menjalankan yang berikut ini:
Aktifkan-PSRemoting
Anda harus menjawab ya untuk semua petunjuk. Ketika Anda menjalankan Enable-PSRemoting, beberapa perubahan dibuat untuk PC Anda:
- Layanan WinRM dimulai.
- Layanan WinRM berubah dari mode startup Manual ke Otomatis.
- Ini menciptakan pendengar HTTP yang terikat ke semua kartu jaringan Anda.
- Ini juga menciptakan pengecualian firewall masuk untuk protokol WS-MAN.
- Beberapa konfigurasi sesi standar dibuat
Jika Anda menjalankan Windows 7 dan lokasi kartu jaringan Anda diatur ke Publik, mengaktifkan PowerShell Remoting akan gagal. Untuk memperbaikinya, cukup pindah ke lokasi jaringan Rumah atau Kerja. Atau, Anda dapat melewati pemeriksaan jaringan menggunakan yang berikut ini:
Aktifkan-PSRemoting -SkipNetworkProfileCheck
Namun, kami sarankan Anda lebih suka mengubah lokasi jaringan Anda.
Ada dua cara menghubungkan ke mesin lain menggunakan PowerShell. Ada metode satu ke satu, yang sangat mirip dengan menggunakan SSH, dan kemudian ada metode satu ke banyak.
Menggunakan Sesi PowerShell
Cara pertama menghubungkan ke mesin jarak jauh menggunakan PowerShell menggunakan sesuatu yang disebut Sesi PowerShell. Sederhananya sesi memungkinkan Anda untuk menjalankan perintah pada mesin jarak jauh dengan cara yang interaktif sama seperti yang Anda lakukan pada mesin Anda sendiri. Untuk membuka sesi cukup ketik berikut ini:
Masukkan-PSSession -ComputerName "Darlah"
Prompt akan mendapatkan awalan yang menandakan mesin yang Anda jalankan cmdlet melawan.
Dari sini Anda benar-benar dapat memperlakukan prompt seolah-olah Anda sedang duduk di mesin jarak jauh. Misalnya, jika Anda ingin melihat semua file di drive C: \ Anda dapat melakukan yang sederhana:
Dapatkan-ChildItem -Path C: \
Jika Anda berasal dari latar belakang Linux, Anda dapat menganggap menggunakan metode remoting satu ke satu ini sebagai alternatif PowerShell untuk SSH.
Menggunakan Invoke-Command
Cara kedua Anda dapat menggunakan PowerShell pada mesin jarak jauh adalah dengan menggunakan Invoke-Command. Keuntungan menggunakan Invoke-Command berasal dari fakta bahwa Anda dapat menjalankan perintah yang sama pada banyak mesin secara bersamaan. Seperti yang dapat Anda bayangkan, ini sangat berguna ketika Anda ingin melakukan sesuatu seperti mengumpulkan log peristiwa dari server Anda. Invoke-Command mengikuti sintaks berikut:
Invoke-Command -ComputerName Darlah, localhost -ScriptBlock Dapatkan-EventLog Application -Newest 2
Karena perintah dijalankan secara paralel di semua mesin, Anda akan memerlukan beberapa cara untuk melihat PC mana dari hasil yang diberikan. Anda dapat melakukan ini dengan melihat properti PSComputerName.
Saat Anda menggunakan Invoke-Command, Anda tidak lagi memiliki objek yang mungkin Anda harapkan di Pipeline. Anda lihat, agar PowerShell mendapatkan informasi dari mesin jarak jauh kembali ke mesin Anda, mereka memerlukan beberapa cara untuk mewakili objek yang perintah Anda jalankan pada output mesin jarak jauh. Saat ini tampaknya cara yang dipilih untuk mewakili struktur data hierarkis adalah dengan menggunakan XML, yang berarti ketika Anda mengeluarkan perintah menggunakan Invoke-Command, hasilnya terlebih dahulu diserialisasi ke XML sebelum dikirim kembali ke mesin Anda. Begitu mereka kembali ke mesin Anda, mereka deserialized kembali menjadi objek; Gotcha di sini adalah bahwa ketika mereka deserialized, semua metode, kecuali metode ToString (), bahwa objek telah dilucuti darinya.
Catatan: Ada beberapa pengecualian untuk aturan ini, misalnya sebagian besar tipe primitif seperti bilangan bulat dapat dideserialisasi dengan metode yang disertakan. Ada juga proses yang disebut Rehidrasi di mana beberapa metode dapat ditambahkan kembali ke objek deserialized. Jadi berhati-hatilah dan ingat Get-Member adalah teman Anda.
Pekerjaan rumah
- Baca Rahasia PowerShell Remoting ebook oleh Don Jones.