

Selamat datang di Power Remote Desktop untuk akses desktop jarak jauh di Pure PowerShell! Modul ini menawarkan solusi unik untuk mengontrol satu atau beberapa layar dari jarak jauh hanya menggunakan PowerShell. Tidak seperti alat desktop jarak jauh lainnya yang mengandalkan protokol dan perangkat lunak eksternal, modul kami menggunakan protokol desktop jarak jauhnya sendiri.
Modul ini terdiri dari klien dan komponen server, yang keduanya ditulis sepenuhnya di PowerShell. Protokol kami menyediakan komunikasi yang aman dan dienkripsi menggunakan TLS dan menawarkan otentikasi kata sandi berbasis tantangan dan otentikasi berbasis sertifikat.
Selain menyediakan kontrol mouse dan keyboard penuh atas desktop jarak jauh, modul kami juga mereplikasi ikon kursor mouse untuk penampil, menyinkronkan clipboard antara sistem lokal dan jarak jauh, dan banyak lagi. Terlepas dari keterbatasan PowerShell, kami telah menerapkan teknik untuk mengoptimalkan lalu lintas jaringan dan meningkatkan pengalaman streaming, menghasilkan pengalaman desktop jarak jauh yang lancar dan efisien.
Pada saat penulisan, ini adalah satu-satunya aplikasi desktop jarak jauh berbasis PowerShell yang diketahui. Kami harap Anda menganggapnya berguna dan kami menyambut umpan balik atau saran yang mungkin Anda miliki.
Diuji pada:
Versi Saat Ini: 4.0.0 Stabil
Untuk kinerja streaming yang lebih baik dan pengalaman keseluruhan, kami sarankan menggunakan PowerShell 7 alih -alih PowerShell 5.
Anda dapat menginstal PowerShell 7 untuk Windows di sini

Install-Module - Name PowerRemoteDesktop_Server
Invoke-RemoteDesktopServer - CertificateFile " <certificate_location> "Jika Anda ingin menghindari menggunakan sertifikat Anda sendiri dan lebih suka untuk tidak melalui proses pembuatannya, Anda dapat menghapus opsi 'CertificateFile' dan menjalankan PowerShell sebagai administrator sebagai gantinya.
Install-Module - Name PowerRemoteDesktop_Viewer
Invoke-RemoteDesktopViewer - ServerAddress " <ip_address> " - Password " <the_one_displayed_on_server> "Itu saja
Ada beberapa cara untuk menggunakan aplikasi PowerShell ini. Metode yang disarankan adalah menginstal komponen server dan penampil menggunakan Galeri PowerShell. Atau, Anda dapat menginstalnya sebagai modul atau mengimpornya sebagai skrip secara manual. Pilih metode yang paling sesuai dengan kebutuhan dan preferensi Anda.
Anda dapat menginstal Power Remote Desktop dari Galeri PowerShell, yang mirip dengan bakat untuk Debian atau Brew untuk MacOS. Untuk melakukannya, jalankan perintah berikut:
Install-Module - Name PowerRemoteDesktop_Server
Install-Module - Name PowerRemoteDesktop_Viewer AllowPrerelease wajib ketika versi saat ini ditandai sebagai prerelease
Saat Anda menjalankan perintah, Anda dapat melihat peringatan berikut di prompt perintah Anda:
Untrusted repository
You are installing the modules from an untrusted repository. If you trust this repository, change its
InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to install the modules from
'PSGallery'?
Ketik 'y' untuk mengonfirmasi dan melanjutkan dengan instalasi. Ketika instalasi selesai, kedua modul harus tersedia. Anda dapat memverifikasi ini dengan menjalankan perintah berikut:
Get-Module - ListAvailableOutput contoh:
PS C:UsersPhrozenDesktop> Get-Module -ListAvailable
Directory: C:UsersPhrozenDocumentsWindowsPowerShellModules
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Manifest 1.0.0 PowerRemoteDesktop_Server Invoke-RemoteDesktopServer
Manifest 1.0.0 PowerRemoteDesktop_Viewer Invoke-RemoteDesktopViewer
<..snip..>
Jika modul tidak muncul, coba jalankan perintah berikut dan kemudian periksa lagi:
Import-Module PowerRemoteDesktop_Server
Import-Module PowerRemoteDesktop_ViewerAgar modul tersedia, itu harus ditempatkan di jalur modul terdaftar. Anda dapat melihat jalur modul terdaftar dengan menjalankan perintah berikut:
Write-Output $ env: PSModulePathOutput contoh:
C:UsersPhrozenDocumentsWindowsPowerShellModules;C:Program FilesWindowsPowerShellModules;C:WINDOWSsystem32WindowsPowerShellv1.0Modules
Klone PowerRemotedesktop Repositori atau Unduh Paket Rilis GitHub.
git clone https://github.com/DarkCoderSc/PowerRemoteDesktop.git
Salin baik powerremotedesktop_viewer dan powerremotedesktop_server folder ke jalur modul yang diinginkan
Contoh:
C:Users<USER>DocumentsWindowsPowerShellModules
Kedua modul sekarang harus tersedia, Anda dapat memverifikasi menggunakan perintah:
Get-Module - ListAvailableOutput contoh:
PS C:UsersPhrozenDesktop> Get-Module -ListAvailable
Directory: C:UsersPhrozenDocumentsWindowsPowerShellModules
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Manifest 1.0.0 PowerRemoteDesktop_Server Invoke-RemoteDesktopServer
Manifest 1.0.0 PowerRemoteDesktop_Viewer Invoke-RemoteDesktopViewer
<..snip..>
Jika Anda tidak melihatnya, jalankan perintah berikut dan periksa kembali.
Import-Module PowerRemoteDesktop_Server
Import-Module PowerRemoteDesktop_Viewer PEMBERITAHUAN: File manifes adalah opsional ( *.psd1 ) dan dapat dihapus.
Tidak wajib menginstal aplikasi ini sebagai modul PowerShell (bahkan jika ekstensi file adalah *.psm1 )
Anda juga dapat memuatnya sebagai skrip PowerShell. Ada beberapa metode termasuk:
Memohon perintah menggunakan:
IEX ( Get-Content .PowerRemoteDesktop_[ Server / Viewer ].psm1 - Raw)Memuat skrip dari lokasi jarak jauh:
IEX ( New-Object Net.WebClient).DownloadString( ' http://127.0.0.1/PowerRemoteDesktop_[Server/Viewer].psm1 ' )dll...
PowerRemoteDesktop_Viewer.psm1 perlu diimpor / atau diinstal pada mesin lokal.
Invoke-RemoteDesktopViewer
Get-TrustedServers
Remove-TrustedServer
Clear-TrustedServers Buat sesi desktop jarak jauh baru dengan server desktop jarak jauh.
| Parameter | Jenis | Bawaan | Keterangan |
|---|---|---|---|
| ServerAddress | Rangkaian | 127.0.0.1 | Host atau alamat server jarak jauh |
| Serverport | Bilangan bulat | 2801 | Nomor port untuk server jarak jauh |
| SecurePassword | Securestring | Tidak ada | Objek Securestring yang berisi kata sandi yang digunakan untuk mengautentikasi dengan server jarak jauh (disarankan) |
| Kata sandi | Rangkaian | Tidak ada | Kata sandi teks sederhana digunakan untuk mengautentikasi dengan server jarak jauh (tidak disarankan; gunakan securePassword sebagai gantinya)) |
| Disableverbosity | Mengalihkan | PALSU | Jika ditentukan, program ini akan menekan pesan verbositas |
| Usetlsv1_3 | Mengalihkan | PALSU | Jika ditentukan, program ini akan menggunakan TLS v1.3 alih -alih TLS v1.2 untuk enkripsi (disarankan jika kedua sistem mendukungnya) |
| CLIPBOARD | Enum | Keduanya | Tentukan mode sinkronisasi clipboard (opsi termasuk 'keduanya', 'dinonaktifkan', 'kirim', dan 'terima'; lihat di bawah untuk lebih detail) |
| Kualitas Imagecompression | Integer (0-100) | 75 | Tingkat kompresi JPEG mulai dari 0 (kualitas terendah) hingga 100 (kualitas tertinggi) |
| Ubah Ulang | Mengalihkan | PALSU | Jika ditentukan, desktop jarak jauh akan diubah ukurannya sesuai dengan opsi 'Resizeratio' |
| Resizeratio | Integer (30-99) | 90 | Digunakan bersama dengan opsi 'Ubah Ulang', tentukan rasio mengubah ukuran sebagai persentase |
| Selalu kontan | Mengalihkan | PALSU | Jika ditentukan, jendela desktop virtual akan ditampilkan di atas semua jendela lainnya |
| Packetsize | Enum | Size9216 | Tentukan ukuran paket jaringan untuk stream. Pilih ukuran yang sesuai untuk kendala jaringan Anda. |
| Blocksize | Enum | Size64 | Tentukan ukuran blok kisi layar. Pilih ukuran yang sesuai untuk ukuran layar jarak jauh dan sumber daya komputer (seperti CPU dan kemampuan jaringan) |
| LOGONUI | Mengalihkan | PALSU | Minta server untuk membuka desktop LogonUI/Winlogon alih -alih desktop pengguna default (membutuhkan hak istimewa sistem di sesi aktif) |
| Nilai | Keterangan |
|---|---|
| Dengan disabilitas | Sinkronisasi clipboard dinonaktifkan di kedua sisi penampil dan server |
| Menerima | Hanya data clipboard yang masuk yang diizinkan |
| Mengirim | Hanya data clipboard keluar yang diizinkan |
| Keduanya | Sinkronisasi clipboard diperbolehkan baik di sisi penampil dan server |
| Nilai | Keterangan |
|---|---|
| Size1024 | 1024 byte (1Kib) |
| Size2048 | 2048 byte (2kib) |
| Size4096 | 4096 byte (4Kib) |
| Size8192 | 8192 byte (8kib) |
| Size9216 | 9216 byte (9kib) |
| Size12288 | 12288 byte (12kib) |
| Size16384 | 16384 byte (16Kib) |
| Nilai | Keterangan |
|---|---|
| Size32 | 32x32 |
| Size64 | 64x64 |
| Size96 | 96x96 |
| Size128 | 128x128 |
| Size256 | 256x256 |
| Size512 | 512x512 |
Disarankan untuk menggunakan SecurePassword alih-alih kata sandi teks biasa, bahkan jika kata sandi teks biasa dikonversi menjadi securestring
Buka sesi desktop jarak jauh baru ke '127.0.0.1:2801' Menggunakan kata sandi 'urcompl3xp@ssw0rd'
Invoke-RemoteDesktopViewer - ServerAddress " 127.0.0.1 " - ServerPort 2801 - SecurePassword ( ConvertTo-SecureString - String " urCompl3xP@ssw0rd " - AsPlainText - Force)Saat menghubungkan ke server jarak jauh baru untuk pertama kalinya, penampil akan bertanya apakah Anda ingin mempercayai sidik jari server. Jika Anda memilih opsi untuk 'selalu' mempercayai sidik jari ini, itu akan disimpan dalam registri pengguna lokal. Anda dapat mencabut kepercayaan untuk sidik jari ini kapan saja menggunakan fungsi yang sesuai.
Get-TrustedServersOutput contoh:
PS C:UsersPhrozenDesktopProjectsPowerRemoteDesktop> Get-TrustedServers
Detail Fingerprint
------ -----------
@{FirstSeen=18/01/2022 19:40:24} D9F4637463445D6BB9F3EFBF08E06BE4C27035AF
@{FirstSeen=20/01/2022 15:52:33} 3FCBBFB37CF6A9C225F7F582F14AC4A4181BED53
@{FirstSeen=20/01/2022 16:32:14} EA88AADA402864D1864542F7F2A3C49E56F473B0
@{FirstSeen=21/01/2022 12:24:18} 3441CE337A59FC827466FC954F2530C76A3F8FE4
Remove-TrustedServer - Fingerprint " <target_ingerprint> " Clear-TrustedServers PowerRemoteDesktop_Server.psm1 perlu diimpor / atau diinstal pada mesin lokal.
Invoke-RemoteDesktopServer | Parameter | Jenis | Bawaan | Keterangan |
|---|---|---|---|
| ServerAddress | Rangkaian | 0.0.0.0 | Alamat IP yang mewakili alamat IP mesin lokal |
| Serverport | Bilangan bulat | 2801 | Nomor port untuk mendengarkan koneksi yang masuk |
| SecurePassword | Securestring | Tidak ada | Objek sekurestring yang berisi kata sandi yang digunakan untuk mengautentikasi pemirsa jarak jauh (disarankan) |
| Kata sandi | Rangkaian | Tidak ada | Kata sandi teks sederhana yang digunakan untuk mengautentikasi pemirsa jarak jauh (tidak disarankan; gunakan securePassword sebagai gantinya) |
| Disableverbosity | Mengalihkan | PALSU | Jika ditentukan, program ini akan menekan pesan verbositas |
| Usetlsv1_3 | Mengalihkan | PALSU | Jika ditentukan, program ini akan menggunakan TLS v1.3 alih -alih TLS v1.2 untuk enkripsi (disarankan jika kedua sistem mendukungnya) |
| CLIPBOARD | Enum | Keduanya | Tentukan mode sinkronisasi clipboard (opsi termasuk 'keduanya', 'dinonaktifkan', 'kirim', dan 'terima'; lihat di bawah untuk lebih detail) |
| Sertifikatfile | Rangkaian | Tidak ada | File yang berisi informasi sertifikat yang valid (x509) yang mencakup kunci pribadi |
| EncodedCertificate | Rangkaian | Tidak ada | Representasi yang dikodekan Base64 dari seluruh file sertifikat, termasuk kunci pribadi |
| Viewonly | Mengalihkan | PALSU | Jika ditentukan, penampil jarak jauh hanya akan dapat melihat desktop dan tidak akan memiliki akses ke mouse atau keyboard |
| Mencegah ComputerToSleep | Mengalihkan | PALSU | Jika ditentukan, opsi ini akan mencegah komputer memasuki mode tidur saat server aktif dan menunggu koneksi baru |
| CertificatePassword | Securestring | Tidak ada | Tentukan kata sandi yang digunakan untuk mengakses sertifikat X509 yang dilindungi kata sandi yang disediakan oleh pengguna |
| Nilai | Keterangan |
|---|---|
| 127.0.0.1 | Hanya mendengarkan koneksi dari localhost (biasanya untuk tujuan debugging) |
| 0.0.0.0 | Dengarkan koneksi di semua antarmuka jaringan, termasuk jaringan lokal dan internet |
| Nilai | Keterangan |
|---|---|
| Dengan disabilitas | Sinkronisasi clipboard dinonaktifkan di kedua sisi penampil dan server |
| Menerima | Hanya data clipboard yang masuk yang diizinkan |
| Mengirim | Hanya data clipboard keluar yang diizinkan |
| Keduanya | Sinkronisasi clipboard diperbolehkan baik di sisi penampil dan server |
Invoke-RemoteDesktopServer - ListenAddress " 0.0.0.0 " - ListenPort 2801 - SecurePassword ( ConvertTo-SecureString - String " urCompl3xP@ssw0rd " - AsPlainText - Force)
Invoke-RemoteDesktopServer - ListenAddress " 0.0.0.0 " - ListenPort 2801 - SecurePassword ( ConvertTo-SecureString - String " urCompl3xP@ssw0rd " - AsPlainText - Force) - CertificateFile " c:certsphrozen.p12 " Pada versi 4.0.0, dimungkinkan untuk menangkap Logonui/Winlogon (prompt UAC, jendela login Windows, Ctrl+Alt+del, dll.).
Namun, untuk menangkap LogonUI, server harus dijalankan di bawah konteks 'otoritas/sistem' di sesi aktif saat ini.
Ada beberapa metode untuk melahirkan proses sebagai pengguna sistem di sesi aktif (misalnya, psexec, peretas proses), tetapi untuk kesederhanaan saya sarankan menggunakan proyek powerrunassystem saya (tersedia di github dan dapat diinstal melalui galeri PowerShell).
Install-Module - Name PowerRunAsSystemKemudian jalankan perintah Bellow sebagai administrator.
Invoke-InteractiveSystemPowerShellTerminal PowerShell baru akan muncul di desktop Anda sebagai otoritas/sistem NT
Jika Anda mengikuti langkah -langkah di atas, terminal PowerShell baru akan muncul di desktop Anda yang berjalan sebagai pengguna 'NT Authority/System'.
Dari terminal ini, Anda dapat menjalankan perintah Power Remote Desktop Server dan mengaktifkan opsi 'LogonUI' untuk koneksi penampil desktop jarak jauh daya di masa depan.
Perlu dicatat bahwa jika Anda tidak menggunakan sertifikat X509 Anda sendiri, Anda akan memerlukan hak istimewa administrator untuk membuat server baru. Namun, Anda dapat dengan mudah membuat sertifikat X509 Anda sendiri menggunakan alat seperti alat baris perintah OpenSSL.
openssl req -x509 -sha512 -nodes -days 365 -newkey rsa:4096 -keyout phrozen.key -out phrozen.crt
Kemudian ekspor sertifikat baru ( harus termasuk kunci pribadi ).
openssl pkcs12 -export -out phrozen.p12 -inkey phrozen.key -in phrozen.crt
Gunakan CertificateFile . Contoh: c:tlscertphrozen.crt
Menyandikan sertifikat yang ada menggunakan PowerShell
[ convert ]::ToBase64String(( Get-Content - path " c:tlscertphrozen.crt " - Encoding byte))atau pada sistem Linux / Mac
base64 -i /tmp/phrozen.p12
Anda kemudian dapat meneruskan file sertifikat base64 output ke parameter EncodedCertificate (satu baris)


] dan ) dikirim dan ditafsirkan dengan benar.? = Mudah? = Medium? = Keras
Dibuat dengan ❤️ di ??