Salah satu fitur terbaik yang ditawarkan PowerShell adalah kemampuan untuk mengelola Server Anda dari jarak jauh. Bahkan memungkinkan Anda mengelola banyak dari mereka sekaligus juga.
Pastikan untuk membaca artikel sebelumnya dalam rangkaian:
Dan nantikan terus sisa serial ini sepanjang minggu.
Pengelolaan massal server Anda bisa 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 ketika PowerShell Remoting dan kemampuan scripting bahasa bisa datang untuk menyelamatkan. Menggunakan HTTP atau HTTPS yang lebih aman, PowerShell Remoting memungkinkan Anda mengirim perintah ke mesin remote pada jaringan Anda. Mesin kemudian menjalankan perintah dan mengirim kembali hasilnya kepada Anda, yang pada gilirannya ditampilkan di layar Anda.
Inti dari PowerShell Remoting terletak pada satu Layanan Windows, Windows Remote Management, atau layanan WinRM, karena telah diketahui. Dengan menggunakan WinRM, Anda dapat mengatur satu atau beberapa konfigurasi sesi (juga dikenal sebagai endpoint), 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-file konfigurasi sesi untuk menentukan siapa yang dapat dan siapa yang tidak dapat terhubung ke instance, apa cmdlet dan skrip yang dapat mereka jalankan, serta konteks keamanan apa sesi harus dijalankan di bawah. Menggunakan Layanan WinRM, Anda juga mengatur "pendengar", yang mendengarkan permintaan PowerShell yang masuk. "Pendengar" ini bisa berupa HTTP atau HTTPS dan dapat terikat ke satu alamat IP di komputer Anda. Ketika Anda membuka koneksi PowerShell ke komputer lain (secara teknis ini dilakukan menggunakan protokol WS-MAN, yang didasarkan pada HTTP), koneksi akan terhubung ke salah satu "pendengar" ini. The "pendengar" kemudian bertanggung jawab 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 memberi umpan balik melalui "pendengar" di seluruh jaringan dan kembali ke komputer Anda.
Hal pertama yang perlu Anda lakukan adalah mengaktifkan Remoting pada Mesin yang ingin Anda sambungkan. Ini dapat dilakukan dengan menjalankan yang berikut:
Aktifkan-PSRemoting
Anda harus menjawab ya untuk semua petunjuknya. Ketika Anda menjalankan Enable-PSRemoting, beberapa perubahan dilakukan ke PC Anda:
Jika Anda menjalankan Windows 7 dan lokasi kartu jaringan Anda diatur ke Publik, mengaktifkan PowerShell Remoting akan gagal. Untuk memperbaikinya, cukup beralih ke lokasi jaringan Rumah atau Kantor. Atau, Anda dapat melewati pemeriksaan jaringan menggunakan berikut ini:
Aktifkan-PSRemoting -SkipNetworkProfileCheck
Namun, kami sarankan Anda untuk mengubah lokasi jaringan Anda.
Ada dua cara menghubungkan ke komputer lain menggunakan PowerShell. Ada metode 1-1, yang sangat mirip dengan menggunakan SSH, dan kemudian ada metode satu ke banyak.
Cara pertama menghubungkan ke mesin remote menggunakan PowerShell adalah menggunakan sesuatu yang disebut Sesi PowerShell. Sederhananya, suatu sesi memungkinkan Anda menjalankan perintah pada mesin jarak jauh dengan cara yang interaktif, sama seperti yang Anda lakukan pada komputer Anda sendiri. Untuk membuka sesi cukup ketik yang berikut:
Masukkan-PSSession -ComputerName "Darlah"
Prompt akan mendapatkan awalan yang menandakan mesin yang Anda jalankan dengan cmdlet.
Dari sini Anda dapat benar-benar memperlakukan prompt seolah-olah Anda sedang duduk di mesin jarak jauh. Misalnya, jika Anda ingin melihat semua file di C: \ drive Anda dapat melakukan yang sederhana:
Dapatkan-ChildItem -Path C: \
Jika Anda berasal dari latar belakang Linux, Anda dapat berpikir untuk menggunakan metode remoting satu ke satu ini sebagai alternatif PowerShell untuk SSH.
Cara kedua Anda dapat menggunakan PowerShell di mesin remote adalah dengan menggunakan Invoke-Command. Keuntungan menggunakan Invoke-Command berasal dari fakta bahwa Anda dapat menjalankan perintah yang sama pada beberapa mesin secara bersamaan. Seperti yang 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 Aplikasi -Baru 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 Command-Invoke, Anda tidak lagi memiliki objek yang mungkin Anda harapkan di Pipeline. Anda lihat, agar PowerShell mendapatkan informasi dari mesin remote kembali ke mesin Anda, mereka membutuhkan beberapa cara untuk merepresentasikan objek yang Anda jalankan pada output mesin remote. Hari-hari ini tampaknya cara yang dipilih untuk mewakili struktur data hirarkis adalah dengan menggunakan XML, yang berarti ketika Anda mengeluarkan perintah menggunakan Invoke-Command, hasilnya adalah serial pertama ke XML sebelum dikirim kembali ke komputer 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 jenis yang paling primitif seperti bilangan bulat dapat dihilangkan 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.