- Pemindahan jauh menggunakan WinRM/WS-Man (HTTP/HTTPS) dan membenarkan sesi 1-ke-1, 1-ke-banyak dan berterusan dengan kawalan keselamatan.
- Enable-PSRemoting mengkonfigurasi perkhidmatan, pendengar dan tembok api; HTTPS memerlukan sijil yang sah dan padanan CN/SAN.
- Hasilnya dikembalikan tanpa seri; kaedah digunakan dalam blok skrip jauh dan titik akhir tersuai digunakan untuk delegasi yang terperinci.
Anda mungkin sudah mengautomasikan banyak tugas dengan PowerShell secara tempatan, tetapi di manakah anda sebenarnya PowerShell Remoting membuat perbezaan Ia adalah apabila anda menjalankan arahan pada mesin jauh, sama ada beberapa atau ratusan, secara interaktif atau selari. Teknologi ini, tersedia sejak Windows PowerShell 2.0 dan dipertingkatkan sejak 3.0, adalah berdasarkan WS-Management (WinRM) dan menukar PowerShell dalam saluran pengurusan jauh yang teguh, berskala dan selamat.
Pertama sekali, adalah penting untuk memahami dua idea utama: cmdlet dengan -Parameter Nama Komputer (cth., Get-Process atau Get-Service) bukanlah laluan jangka panjang yang disyorkan oleh Microsoft dan PowerShell Remoting tidak berfungsi sebagai "penggodaman". sebenarnya, menguatkuasakan pengesahan bersama, log audit dan menghormati kebenaran biasa anda, tanpa menyimpan bukti kelayakan atau menjalankan apa-apa secara ajaib dengan keistimewaan super.
Apakah PowerShell Remoting dan mengapa menggunakannya?
dengan Pemulihan PowerShell anda boleh laksanakan hampir semua arahan dari jauh yang boleh anda lancarkan dalam sesi setempat, daripada perkhidmatan pertanyaan kepada menggunakan konfigurasi, dan berbuat demikian pada ratusan komputer sekaligus. Tidak seperti cmdlet yang menerima -ComputerName (banyak menggunakan DCOM/RPC), Remoting bergerak melalui WS-Man (HTTP/HTTPS), yang lebih mesra tembok api, membenarkan keselarian dan pemunggahan berfungsi kepada hos jauh, bukan pelanggan.
Ini diterjemahkan kepada tiga kelebihan praktikal: prestasi yang lebih baik dalam pelaksanaan besar-besaran, kurang geseran dalam rangkaian dengan peraturan ketat dan model keselamatan yang konsisten dengan Kerberos/HTTPS. Tambahan pula, dengan tidak bergantung pada setiap cmdlet untuk melaksanakan alat kawalan jauhnya sendiri, Remoting Ia berfungsi untuk mana-mana skrip atau peranan yang tersedia di destinasi.
Secara lalai, Pelayan Windows baru-baru ini disertakan dengan Remoting didayakan; dalam Windows 10/11 anda mengaktifkannya dengan satu cmdlet. Dan ya, anda boleh menggunakan bukti kelayakan ganti, sesi berterusan, titik akhir tersuai dan banyak lagi.
Nota: Pemindahan jauh tidak sinonim dengan membuka segala-galanya. Secara lalai, hanya pentadbir Mereka boleh berhubung, dan tindakan dilaksanakan di bawah identiti mereka. Jika anda memerlukan delegasi yang terperinci, titik akhir tersuai membolehkan anda mendedahkan hanya arahan penting.

Cara ia berfungsi di dalam: WinRM, WS-Man dan port
PowerShell Remoting berfungsi dalam model pelayan pelanggan. Pelanggan menghantar permintaan WS-Management melalui HTTP (5985/TCP) atau HTTPS (5986/TCP). Pada sasaran, perkhidmatan Pengurusan Jauh Windows (WinRM) mendengar, menyelesaikan titik akhir (konfigurasi sesi) dan menjadi tuan rumah sesi PowerShell di latar belakang (proses wsmprovhost.exe), mengembalikan hasil bersiri kepada pelanggan dalam XML melalui SOAP.
Kali pertama anda mendayakan Remoting, pendengar dikonfigurasikan, pengecualian tembok api yang sesuai dibuka dan konfigurasi sesi dibuat. Daripada PowerShell 6+, berbilang edisi wujud bersama dan Dayakan-PSRemoting Mendaftarkan titik akhir dengan nama yang mencerminkan versi (contohnya, PowerShell.7 dan PowerShell.7.xy).
Jika anda hanya membenarkan HTTPS dalam persekitaran anda, anda boleh membuat a pendengar selamat dengan sijil yang dikeluarkan oleh CA yang dipercayai (disyorkan). Sebagai alternatif, alternatif lain ialah menggunakan TrustedHosts dalam cara yang terhad dan menyedari risiko, untuk senario kumpulan kerja atau komputer bukan domain.
Ambil perhatian bahawa Powershell Remoting boleh wujud bersama cmdlet dengan -ComputerName, tetapi Microsoft menolak WS-Man sebagai cara piawai dan kalis masa hadapan untuk pentadbiran jauh.
Mendayakan PowerShell Remoting dan Parameter Berguna
Pada Windows, cuma buka PowerShell sebagai pentadbir dan jalankan Dayakan-PSRemoting. Sistem memulakan WinRM, mengkonfigurasi autostart, membolehkan pendengar, dan mencipta peraturan firewall yang sesuai. Pada pelanggan dengan profil rangkaian awam, anda boleh dengan sengaja membenarkan ini dengan -SkipNetworkProfileCheck (dan kemudian menguatkan dengan peraturan tertentu):
Enable-PSRemoting
Enable-PSRemoting -Force
Enable-PSRemoting -SkipNetworkProfileCheck -Force
Sintaks juga membolehkan, -Sahkan y -Bagaimana Jika untuk kawalan perubahan. Ingat: Ia hanya tersedia pada Windows, dan anda mesti menjalankan konsol dinaikkan. Peraturan yang dibuat berbeza antara edisi Pelayan dan Pelanggan, terutamanya pada rangkaian awam, di mana secara lalai ia terhad kepada subnet tempatan melainkan anda mengembangkan skop (contohnya, dengan Set-NetFirewallRule).
Untuk menyenaraikan konfigurasi sesi yang telah direkodkan dan mengesahkan bahawa semuanya sudah sedia, gunakan Dapatkan-PSSessionConfigurationJika titik akhir PowerShell.x dan Aliran Kerja muncul, rangka kerja Pemindahan akan beroperasi.

Mod penggunaan: 1 hingga 1, 1 hingga banyak dan sesi berterusan
Apabila anda memerlukan konsol interaktif pada satu komputer, beralih ke Masukkan PSSessionGesaan akan muncul, dan semua yang anda laksanakan akan pergi ke hos jauh. Anda boleh menggunakan semula bukti kelayakan dengan Get-Credential untuk mengelak daripada memasukkan semula secara berterusan:
$cred = Get-Credential
Enter-PSSession -ComputerName dc01 -Credential $cred
Exit-PSSession
Jika apa yang anda cari adalah untuk menghantar arahan ke beberapa komputer sekaligus, alat itu adalah Memohon-perintah dengan blok skrip. Secara lalai, ia melancarkan sehingga 32 sambungan serentak (boleh laras dengan -ThrottleLimit). Keputusan dikembalikan sebagai objek desirialisasi (tanpa kaedah "langsung"):
Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service -Name W32Time } -Credential $cred
Perlu menggunakan kaedah seperti .Stop() atau .Start()? buatlah. di dalam blok skrip dalam konteks jauh, bukan objek deserialisasi tempatan, dan itu sahaja. Jika terdapat cmdlet yang setara (Stop-Service/Start-Service), biasanya lebih baik untuk menggunakannya untuk kejelasan.
Untuk mengelakkan kos memulakan dan menamatkan sesi pada setiap panggilan, buat a PSSession yang berterusan dan menggunakannya semula merentas pelbagai seruan. Gunakan New-PSSession untuk membuat sambungan dan gunakan Invoke-Command-Session untuk menggunakan semula terowong. Jangan lupa untuk menutupnya dengan Remove-PSSession apabila anda selesai.
Serialisasi, had dan amalan baik
Butiran penting: semasa dalam perjalanan, objek "+ratakan" dan tiba sebagai syot kilat desiri, dengan sifat tetapi tiada kaedah. Ini sengaja dan menjimatkan lebar jalur, tetapi ini bermakna anda tidak boleh menggunakan ahli yang melaksanakan logik (seperti .Kill()) pada salinan tempatan. Penyelesaiannya adalah jelas: gunakan kaedah tersebut. di jauh dan jika anda hanya memerlukan medan tertentu, tapis dengan Select-Object untuk menghantar kurang data.
Dalam skrip, elakkan Enter-PSSession (bertujuan untuk kegunaan interaktif) dan gunakan Invoke-Command dengan blok skrip. Jika anda menjangkakan berbilang panggilan atau perlu mengekalkan keadaan (pembolehubah, modul yang diimport), gunakan sesi berterusan dan, jika berkenaan, putuskan/sambungkan semula mereka dengan Putuskan-PSSession/Sambung-PSSession dalam PowerShell 3.0+.
Senario Pengesahan, HTTPS dan Luar Domain
Dalam domain, pengesahan asli ialah Kerberos Dan semuanya mengalir. Apabila peranti tidak dapat mengesahkan nama pelayan atau anda menyambung ke IP atau alias CNAME, anda memerlukan salah satu daripada dua pilihan ini: 1) Pendengar HTTPS dengan sijil dikeluarkan oleh CA yang anda percayai, atau 2) tambahkan destinasi (nama atau IP) pada TrustedHosts dan gunakan kelayakanPilihan kedua melumpuhkan pengesahan bersama untuk hos itu, jadi ia mengurangkan skop kepada minimum yang diperlukan.
Menyediakan pendengar HTTPS memerlukan sijil (sebaik-baiknya daripada PKI atau CA awam anda), dipasang di stor pasukan dan terikat kepada WinRM. Port 5986/TCP kemudiannya dibuka dalam firewall dan, daripada klien, digunakan. -UseSSL dalam cmdlet jauh. Untuk pengesahan sijil pelanggan, anda boleh memetakan sijil ke akaun setempat dan berhubung dengannya -Sijil Cap ibu jari (Enter-PSSession tidak menerima ini secara langsung; buat sesi dahulu dengan New-PSSession.)
Lompatan kedua dan delegasi kelayakan
“double hop” yang terkenal muncul apabila, selepas menyambung ke pelayan, anda memerlukan pelayan itu untuk mengakses a sumber ketiga bagi pihak anda (mis., saham SMB). Terdapat dua pendekatan untuk membenarkan ini: CredSSP dan delegasi Kerberos terhad berasaskan sumber.
dengan CredSSP Anda membolehkan pelanggan dan pengantara mewakilkan bukti kelayakan secara eksplisit dan anda menetapkan dasar (GPO) untuk membenarkan perwakilan kepada komputer tertentu. Ia cepat untuk mengkonfigurasi, tetapi kurang selamat kerana bukti kelayakan bergerak dalam teks yang jelas dalam terowong yang disulitkan. Sentiasa hadkan sumber dan destinasi.
Alternatif pilihan dalam domain ialah mengekang delegasi Kerberos (delegasi kekangan berasaskan sumber) dalam AD moden. Ini membolehkan titik akhir bergantung pada penerimaan delegasi dari titik tengah untuk perkhidmatan tertentu, mengelakkan pendedahan identiti anda pada sambungan awal. Memerlukan pengawal domain terkini dan RSAT yang dikemas kini.
Titik Tamat Tersuai (Konfigurasi Sesi)
Salah satu permata Remoting ialah dapat mendaftarkan titik sambungan dengan keupayaan dan had yang disesuaikan. Mula-mula anda menjana fail dengan New-PSSessionConfigurationFile (modul untuk pramuat, fungsi yang boleh dilihat, alias, ExecutionPolicy, LanguageMode, dll.), dan kemudian anda mendaftarkannya dengan Register-PSSessionConfiguration, di mana anda boleh menetapkan RunAsCredential dan kebenaran (antara muka SDDL atau GUI dengan -ShowSecurityDescriptorUI).
Untuk delegasi yang selamat, dedahkan hanya perkara yang perlu dengan -VisibleCmdlets/-VisibleFunctions dan lumpuhkan skrip percuma jika sesuai dengan Mod Bahasa TerhadBahasa atau TiadaBahasa. Jika anda meninggalkan FullLanguage, seseorang boleh menggunakan blok skrip untuk menggunakan arahan yang tidak didedahkan, yang digabungkan dengan RunAs, ia akan menjadi lubang. Reka bentuk titik akhir ini dengan sikat gigi halus dan dokumentasikan skopnya.
Domain, GPO dan Perisian Kumpulan
Dalam AD anda boleh menggunakan Powershell Remoting pada skala dengan GPO: membenarkan konfigurasi automatik pendengar WinRM, tetapkan perkhidmatan kepada Automatik, dan cipta pengecualian tembok api. Ingat bahawa GPO menukar tetapan, tetapi mereka tidak sentiasa menghidupkan perkhidmatan serta-merta; kadangkala anda perlu memulakan semula atau memaksa gpupdate.
Dalam kumpulan kerja (bukan domain), konfigurasikan Jarak Jauh dengan Dayakan-PSRemoting, tetapkan TrustedHosts pada klien (winrm set winrm/config/client @{TrustedHosts=»host1,host2″}) dan gunakan bukti kelayakan tempatan. Untuk HTTPS, anda boleh memasang sijil yang ditandatangani sendiri, walaupun disyorkan untuk menggunakan CA yang dipercayai dan mengesahkan nama itu yang anda akan gunakan dalam -ComputerName dalam sijil (padanan CN/SAN).
Cmdlet dan sintaks utama
Segelintir komando meliputi 90% daripada senario harian. Untuk mengaktifkan/nyahaktifkan:
Enable-PSRemoting
Disable-PSRemoting
Sesi interaktif 1 hingga 1 dan keluar:
Enter-PSSession -ComputerName SEC504STUDENT
Exit-PSSession
1 kepada banyak, dengan selari dan kelayakan:
Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service W32Time } -Credential $cred
Sesi yang berterusan dan guna semula:
$s = New-PSSession -ComputerName localhost -ConfigurationName PowerShell.7
Invoke-Command -Session $s -ScriptBlock { $PSVersionTable }
Remove-PSSession $s
Menguji dan WinRM berguna:
Test-WSMan -ComputerName host
winrm get winrm/config
winrm enumerate winrm/config/listener
winrm quickconfig -transport:https
Nota praktikal tentang tembok api, rangkaian dan port
Buka 5985/TCP untuk HTTP dan 5986/TCP untuk HTTPS pada komputer sasaran dan pada sebarang tembok api perantaraanPada klien Windows, Enable-PSRemoting mencipta peraturan untuk profil domain dan peribadi; untuk profil awam, ia terhad kepada subnet tempatan melainkan anda mengubah suai skop dengan Set-NetFirewallRule -RemoteAddress Any (nilai yang boleh anda nilai berdasarkan risiko anda).
Jika anda menggunakan integrasi SOAR/SIEM yang menjalankan arahan jauh (cth. daripada XSOAR), pastikan pelayan mempunyai Resolusi DNS kepada hos, sambungan ke 5985/5986, dan bukti kelayakan dengan kebenaran setempat yang mencukupi. Dalam sesetengah kes, pengesahan NTLM/Asas mungkin memerlukan pelarasan (cth., menggunakan pengguna tempatan dalam Asas dengan SSL).
Dayakan-PSRemoting Parameter (Ringkasan Operasi)
-Confirm meminta pengesahan sebelum melaksanakan; -Paksa tidak mengendahkan amaran dan buat perubahan yang perlu; -SkipNetworkProfileCheck membolehkan Remoting pada rangkaian klien awam (terhad secara lalai kepada subnet tempatan); -WhatIf menunjukkan kepada anda apa yang akan berlaku tanpa menggunakan perubahan. Selain itu, seperti mana-mana cmdlet standard, ia menyokong parameter biasa (-Verbose, -ErrorAction, dll.).
Ingat bahawa "Dayakan" tidak mencipta pendengar atau sijil HTTPS untuk anda; jika anda memerlukan penyulitan hujung ke hujung dari permulaan dan pengesahan berdasarkan disahkan, konfigurasikan pendengar HTTPS dan sahkan CN/SAN terhadap nama yang akan anda gunakan dalam -ComputerName.
Perintah WinRM dan PowerShell Remoting yang berguna
Beberapa barang keperluan di tepi katil untuk hari ke hari:
winrm get winrm/config
winrm enumerate winrm/config/listener
Set-NetFirewallRule -Name 'WINRM-HTTP-In-TCP' -RemoteAddress Any
Test-WSMan -ComputerName host -Authentication Default -Credential (Get-Credential)
New-PSSession -ComputerName host
Enter-PSSession -ComputerName host
Enable-PSRemoting -SkipNetworkProfileCheck -Force
Apabila mengurus Windows pada skala besar, Remoting membolehkan anda beralih daripada "komputer-ke-komputer" kepada pendekatan deklaratif dan selamat. Dengan menggabungkan sesi berterusan, pengesahan kuat (Kerberos/HTTPS), titik akhir terhad dan jejak yang jelas untuk diagnostik, anda mendapat kelajuan dan kawalan tanpa mengorbankan keselamatan atau pengauditan. Jika anda turut menyeragamkan pengaktifan GPO dan menguasai kes khas (TrustedHosts, double hop, sijil), anda akan mempunyai platform jauh yang kukuh untuk operasi harian dan tindak balas insiden.
Editor khusus dalam isu teknologi dan internet dengan lebih daripada sepuluh tahun pengalaman dalam media digital yang berbeza. Saya telah bekerja sebagai editor dan pencipta kandungan untuk e-dagang, komunikasi, pemasaran dalam talian dan syarikat pengiklanan. Saya juga telah menulis di laman web ekonomi, kewangan dan sektor lain. Kerja saya juga minat saya. Sekarang, melalui artikel saya dalam Tecnobits, saya cuba meneroka semua berita dan peluang baharu yang dunia teknologi tawarkan kepada kita setiap hari untuk memperbaiki kehidupan kita.