Sekolah Geek Belajar Menggunakan Remoting di PowerShell
Salah satu ciri yang terbaik menawarkan PowerShell ialah keupayaan untuk menguruskan Pelayan anda dari jauh. Ia juga membolehkan anda menguruskan sekumpulan mereka sekaligus juga.
Pastikan anda membaca artikel sebelumnya dalam siri ini:
- Ketahui Bagaimana Mengotomatikkan Windows dengan PowerShell
- Belajar Menggunakan Cmdlets di PowerShell
- Belajar Cara Menggunakan Objek di PowerShell
- Pemformatan Pembelajaran, Penapisan dan Pembandingan di PowerShell
Dan tunggu selama siri sepanjang minggu.
Apakah Remoting?
Pengurusan pukal pelayan anda boleh membosankan, dan jika anda telah membuat perubahan konfigurasi IIS pada 50 pelayan web sebelum ini, anda akan tahu apa yang saya maksudkan. Ini adalah jenis situasi apabila PowerShell Remoting dan kebolehan skrip bahasa dapat diselamatkan. Menggunakan HTTP atau HTTPS yang lebih selamat, PowerShell Remoting membolehkan anda menghantar arahan ke mesin jauh di rangkaian anda. Mesin kemudian menjalankan arahan dan menghantar output kembali kepada anda, yang seterusnya dipaparkan pada skrin anda.
Mari Dapatkan Teknikal
Pada teras PowerShell Remoting terletak satu Perkhidmatan Windows, Pengurusan Jauh Windows, atau perkhidmatan WinRM, kerana ia telah diketahui. Menggunakan WinRM, anda boleh menubuhkan satu atau lebih konfigurasi sesi (juga dikenali sebagai titik akhir), yang pada dasarnya adalah fail yang mengandungi maklumat tentang pengalaman yang anda ingin berikan kepada orang yang menyambungkan kepada contoh PowerShell jauh anda. Secara lebih khusus, anda boleh menggunakan fail konfigurasi sesi untuk menentukan siapa yang boleh dan siapa yang tidak dapat menyambung kepada contohnya, apa cmdlet dan skrip yang dapat mereka jalankan, serta apa konteks keselamatan yang sesi harus dijalankan di bawah. Menggunakan Perkhidmatan WinRM, anda juga menyediakan "pendengar", yang mendengar permintaan PowerShell masuk. "Pendengar" ini boleh menjadi HTTP atau HTTPS dan boleh terikat pada satu alamat IP pada mesin anda. Apabila anda membuka sambungan PowerShell ke mesin lain (secara teknikalnya dilakukan dengan menggunakan protokol WS-MAN, yang berdasarkan HTTP), sambungan itu mengikat kepada salah satu "pendengar" ini. "Pendengar" kemudian bertanggungjawab untuk menghantar lalu lintas ke aplikasi yang berkaitan dengan fail konfigurasi sesi yang sesuai; aplikasi (biasanya PowerShell tetapi anda boleh mempunyai aplikasi hosting lain jika anda mahu) kemudian menjalankan arahan dan memberi suapan hasilnya kembali melalui "pendengar" di seluruh rangkaian dan kembali ke mesin anda.
Tunjukkan saya bagaimana
Perkara pertama yang perlu anda lakukan ialah membolehkan Remoting pada Mesin yang anda mahu sambungkan. Ini boleh dilakukan dengan menjalankan yang berikut:
Enable-PSRemoting
Anda perlu menjawab ya kepada semua arahan. Apabila anda menjalankan Enable-PSRemoting, beberapa perubahan dibuat ke PC anda:
- Perkhidmatan WinRM bermula.
- Perkhidmatan WinRM berubah dari mod permulaan Manual ke Automatik.
- Ia mewujudkan pendengar HTTP yang terikat kepada semua kad rangkaian anda.
- Ia juga mewujudkan pengecualian firewall masuk untuk protokol WS-MAN.
- Beberapa konfigurasi sesi lalai dibuat
Sekiranya anda menjalankan Windows 7 dan lokasi kad rangkaian anda ditetapkan kepada Awam, membolehkan PowerShell Remoting akan gagal. Untuk memperbaikinya, hanya beralih ke lokasi rangkaian Rumah atau Kerja. Sebagai alternatif, anda boleh melangkau cek rangkaian menggunakan yang berikut:
Enable-PSRemoting -SkipNetworkProfileCheck
Bagaimanapun, kami mengesyorkan supaya anda menukar lokasi rangkaian anda.
Terdapat dua cara untuk menyambung ke mesin lain menggunakan PowerShell. Terdapat satu hingga satu kaedah, yang sangat serupa dengan menggunakan SSH, dan kemudian ada satu dengan banyak kaedah.
Menggunakan Sesi PowerShell
Cara pertama menyambung ke mesin jauh menggunakan PowerShell menggunakan sesuatu yang dipanggil Sesi PowerShell. Sederhana meletakkan sesi membolehkan anda menjalankan arahan pada mesin jauh dengan cara interaktif yang sama seperti yang anda lakukan pada mesin anda sendiri. Untuk membuka sesi, cukup ketik perkara berikut:
Enter-PSSession -ComputerName "Darlah"
Gesaan akan mendapat awalan yang menandakan mesin yang anda menjalankan cmdlet terhadap.
Dari sini anda boleh benar-benar merawat dengan segera seolah-olah anda duduk di mesin jauh. Sebagai contoh, jika anda mahu melihat semua fail pada C: \ drive anda boleh melakukan yang mudah:
Get-ChildItem -Path C: \
Jika anda berasal dari latar belakang Linux, anda boleh memikirkan menggunakan satu hingga satu kaedah remoting sebagai alternatif PowerShell untuk SSH.
Menggunakan Invoke-Command
Cara kedua anda boleh menggunakan PowerShell pada mesin jauh adalah dengan menggunakan Invoke-Command. Kelebihan menggunakan Invoke-Command berasal dari fakta bahawa anda boleh melaksanakan perintah yang sama pada berbilang mesin pada masa yang sama. Seperti yang anda boleh bayangkan, ini amat berguna apabila anda ingin melakukan sesuatu seperti mengumpulkan log peristiwa dari pelayan anda. Invoke-Command mengikuti sintaks yang berikut:
Invoke-Command-ComputerCommerce Darlah, localhost -ScriptBlock Get-EventLog Application -Newest 2
Oleh kerana arahan dijalankan secara selari di semua mesin, anda memerlukan beberapa cara untuk melihat hasil PC mana yang diberikan. Anda boleh melakukan ini dengan melihat harta PSComputerName.
Apabila anda menggunakan Invoke-Command, anda tidak lagi mempunyai objek yang anda jangkakan dalam Paip. Anda lihat, agar PowerShell mendapatkan maklumat dari mesin jauh kembali ke mesin anda, mereka memerlukan beberapa cara untuk mewakili objek yang arahan yang anda jalankan pada output mesin jauh. Hari-hari ini nampaknya cara yang dipilih untuk mewakili struktur data hierarki adalah dengan menggunakan XML, yang bermaksud apabila anda mengeluarkan perintah menggunakan Invoke-Command, hasilnya pertama kali bersambung ke XML sebelum dihantar kembali ke mesin anda. Sebaik sahaja mereka kembali ke mesin anda, mereka akan menjadi deserialized kembali ke objek; gotcha di sini adalah bahawa apabila mereka terdesistis, semua kaedah, kecuali kaedah ToString (), objek yang telah dilucutkan darinya.
Nota: Terdapat beberapa pengecualian kepada peraturan ini, contohnya kebanyakan jenis primitif seperti bilangan bulat boleh diseronisasi dengan kaedahnya yang disertakan. Terdapat juga proses yang dipanggil Rehydration di mana beberapa kaedah boleh ditambah kembali ke objek yang disyorkan. Oleh itu, berhati-hati dan ingat Get-Ahli adalah rakan anda.
Kerja rumah
- Baca Rahsia PowerShell Remoting ebook oleh Don Jones.