

Willkommen bei Power Remote Desktop für Remote -Desktop -Zugriff in Pure PowerShell! Dieses Modul bietet eine einzigartige Lösung für die remote steuerende Steuung eines oder mehrere Bildschirme mit nur PowerShell. Im Gegensatz zu anderen Remote -Desktop -Tools, die auf externen Protokollen und Software angewiesen sind, verwendet unser Modul ein eigenes Remote -Desktop -Protokoll.
Das Modul besteht sowohl aus einem Client als auch aus einer Serverkomponente, die beide vollständig in PowerShell geschrieben sind. Unser Protokoll bietet eine sichere, verschlüsselte Kommunikation mithilfe von TLS und bietet sowohl eine herausfordernde Kennwortauthentifizierung als auch die zertifizierte Authentifizierung.
Unser Modul bietet nicht nur die vollständige Steuerung des Maus- und Tastatur über den Remote -Desktop, sondern synchronisiert auch das Maus -Cursor -Symbol für den Betrachter, sondern synchronisiert die Zwischenablage zwischen lokalen und entfernten Systemen und vieles mehr. Trotz der Einschränkungen von PowerShell haben wir Techniken implementiert, um den Netzwerkverkehr zu optimieren und das Streaming -Erlebnis zu verbessern, was zu einem reibungslosen und effizienten Remote -Desktop -Erlebnis führt.
Zum Zeitpunkt des Schreibens ist dies die einzige bekannte Remote-Desktop-Anwendung von PowerShell-basierten. Wir hoffen, dass Sie es nützlich finden und wir freuen uns über Feedback oder Vorschläge, die Sie möglicherweise haben.
Getestet auf:
Aktuelle Version: 4.0.0 stabil
Für eine bessere Streaming -Leistung und Gesamterfahrung empfehlen wir die Verwendung von PowerShell 7 anstelle von PowerShell 5.
Sie können PowerShell 7 für Windows hier installieren

Install-Module - Name PowerRemoteDesktop_Server
Invoke-RemoteDesktopServer - CertificateFile " <certificate_location> "Wenn Sie vermeiden möchten, Ihr eigenes Zertifikat zu verwenden und es vorziehen, nicht zum Erstellen eines Erstellens zu gehen, können Sie die Option "Zertifikat" entfernen und PowerShell stattdessen als Administrator ausführen.
Install-Module - Name PowerRemoteDesktop_Viewer
Invoke-RemoteDesktopViewer - ServerAddress " <ip_address> " - Password " <the_one_displayed_on_server> "Das ist es
Es gibt verschiedene Möglichkeiten, diese PowerShell -Anwendung zu verwenden. Die empfohlene Methode besteht darin, sowohl die Server- als auch die Zuschauerkomponenten mithilfe der PowerShell -Galerie zu installieren. Alternativ können Sie sie als Module installieren oder manuell als Skripte importieren. Wählen Sie die Methode, die Ihren Anforderungen und Vorlieben am besten entspricht.
Sie können Power Remote -Desktop aus der PowerShell -Galerie installieren, die der Eignung für Debian oder Brew for MacOS ähnelt. Führen Sie dazu die folgenden Befehle aus:
Install-Module - Name PowerRemoteDesktop_Server
Install-Module - Name PowerRemoteDesktop_Viewer AllowPrerelease ist obligatorisch, wenn die aktuelle Version als Vorversion markiert wird
Wenn Sie den Befehl ausführen, sehen Sie möglicherweise die folgende Warnung in Ihrer Eingabeaufforderung:
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'?
Geben Sie 'y' ein, um die Installation zu bestätigen und fortzusetzen. Wenn die Installation abgeschlossen ist, sollten beide Module verfügbar sein. Sie können dies überprüfen, indem Sie den folgenden Befehl ausführen:
Get-Module - ListAvailableBeispielausgabe:
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..>
Wenn die Module nicht angezeigt werden, leiten Sie die folgenden Befehle aus und überprüfen Sie erneut:
Import-Module PowerRemoteDesktop_Server
Import-Module PowerRemoteDesktop_ViewerDamit ein Modul verfügbar ist, muss es sich in einem registrierten Modulpfad befinden. Sie können die registrierten Modulpfade anzeigen, indem Sie den folgenden Befehl ausführen:
Write-Output $ env: PSModulePathBeispielausgabe:
C:UsersPhrozenDocumentsWindowsPowerShellModules;C:Program FilesWindowsPowerShellModules;C:WINDOWSsystem32WindowsPowerShellv1.0Modules
Clone PowerRemotteSktop Repository oder herunterladen ein GitHub -Release -Paket.
git clone https://github.com/DarkCoderSc/PowerRemoteDesktop.git
Kopieren Sie sowohl powerRemotedesktop_viewer als auch powerRemotedesktop_Server in den gewünschten Modulpfad
Beispiel:
C:Users<USER>DocumentsWindowsPowerShellModules
Beide Module sollten jetzt verfügbar sein. Sie können mit dem Befehl überprüfen:
Get-Module - ListAvailableBeispielausgabe:
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..>
Wenn Sie sie nicht sehen, führen Sie die folgenden Befehle aus und schauen Sie es erneut aus.
Import-Module PowerRemoteDesktop_Server
Import-Module PowerRemoteDesktop_Viewer Hinweis: Manifestdateien sind optional ( *.psd1 ) und können entfernt werden.
Es ist nicht obligatorisch, diese Anwendung als PowerShell -Modul zu installieren (auch wenn die Dateierweiterung *.psm1 lautet)
Sie können es auch als PowerShell -Skript laden. Es gibt mehrere Methoden, einschließlich:
Befehle aufrufen mit:
IEX ( Get-Content .PowerRemoteDesktop_[ Server / Viewer ].psm1 - Raw)Laden des Skripts von einem Remote -Standort:
IEX ( New-Object Net.WebClient).DownloadString( ' http://127.0.0.1/PowerRemoteDesktop_[Server/Viewer].psm1 ' )usw...
PowerRemoteDesktop_Viewer.psm1 muss auf dem lokalen Computer importiert / oder installiert werden.
Invoke-RemoteDesktopViewer
Get-TrustedServers
Remove-TrustedServer
Clear-TrustedServers Erstellen Sie eine neue Remote -Desktop -Sitzung mit einem Power Remote -Desktop -Server.
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
| Serveraddress | Saite | 127.0.0.1 | Remote -Server -Host oder -adresse |
| Serverport | Ganze Zahl | 2801 | Portnummer für den Remote -Server |
| SecurePassword | Sicherheit | Keiner | Securestring -Objekt, das das Kennwort enthält, das zur Authentifizierung mit dem Remote -Server verwendet wird (empfohlen) |
| Passwort | Saite | Keiner | Einfach-Text-Kennwort zum Authentifizieren mit dem Remote-Server (nicht empfohlen; stattdessen SecurePassword verwenden))) |
| Deaktivierung | Schalten | FALSCH | Wenn angegeben, unterdrückt das Programm Ausführungsnachrichten |
| Usetlsv1_3 | Schalten | FALSCH | Wenn angegeben, verwendet das Programm TLS v1.3 anstelle von TLS V1.2 für die Verschlüsselung (empfohlen, wenn beide Systeme es unterstützen). |
| Zwischenablage | Aufreum | Beide | Geben Sie den Synchronisierungsmodus der Zwischenablage an (die Optionen umfassen 'beide', 'deaktiviert', 'Senden' und 'Empfangen'; siehe unten weitere Details). |
| ImageCompressionQualität | Ganzzahl (0-100) | 75 | JPEG -Komprimierungspegel von 0 (niedrigste Qualität) bis 100 (höchste Qualität) |
| Größenänderung | Schalten | FALSCH | Wenn angegeben, wird der Remotedesktop gemäß der Option "Resizeratio" geändert |
| Resizeratio | Ganzzahl (30-99) | 90 | Verwendet in Verbindung mit der Option "Größe" der Größe "Größen", geben Sie das Größenverhältnis als Prozentsatz an |
| Immer intop | Schalten | FALSCH | Wenn angegeben, wird das virtuelle Desktop -Fenster über allen anderen Fenstern angezeigt |
| Paket | Aufreum | Size9216 | Geben Sie die Netzwerkpaketgröße für Streams an. Wählen Sie eine Größe, die für Ihre Netzwerkbeschränkungen geeignet ist. |
| Blockieren | Aufreum | Size64 | Geben Sie die Größe der Bildschirmgitterblöcke an. Wählen Sie eine Größe, die für die Remote -Bildschirmgröße und die Ressourcen des Computers geeignet ist (z. B. CPU- und Netzwerkfunktionen) |
| Logonui | Schalten | FALSCH | Fordern Sie den Server an, den Desktop Logonui/Winlogon anstelle des Standard -Benutzerdesktops zu öffnen (erfordert das Systemrechnung in der aktiven Sitzung). |
| Wert | Beschreibung |
|---|---|
| Deaktiviert | Die Synchronisation der Zwischenablage ist sowohl auf der Zuschauer- als auch auf der Serverseite deaktiviert |
| Erhalten | Es sind nur eingehende Zwischenablettungsdaten zulässig |
| Schicken | Es sind nur ausgehende Zwischenablettungsdaten zulässig |
| Beide | Die Synchronisation der Zwischenablage ist sowohl auf der Zuschauer- als auch auf der Serverseite zulässig |
| Wert | Beschreibung |
|---|---|
| Size1024 | 1024 Bytes (1kib) |
| Size2048 | 2048 Bytes (2kib) |
| Size4096 | 4096 Bytes (4Kib) |
| Size8192 | 8192 Bytes (8kib) |
| Size9216 | 9216 Bytes (9kib) |
| Size12288 | 12288 Bytes (12 kib) |
| Size16384 | 16384 Bytes (16kib) |
| Wert | Beschreibung |
|---|---|
| Größe32 | 32x32 |
| Size64 | 64x64 |
| Größe96 | 96x96 |
| Größe128 | 128x128 |
| Größe256 | 256x256 |
| Größe512 | 512x512 |
Es wird empfohlen, SecurePassword anstelle eines Kennworts der Klartext zu verwenden, auch wenn das Kennwort der Klartext in eine Versicherung konvertiert wird
Öffnen Sie eine neue Remote -Desktop -Sitzung in '127.0.0.1:2801' mit dem Passwort 'urCompl3xp@ssw0rd'
Invoke-RemoteDesktopViewer - ServerAddress " 127.0.0.1 " - ServerPort 2801 - SecurePassword ( ConvertTo-SecureString - String " urCompl3xP@ssw0rd " - AsPlainText - Force)Wenn der Betrachter zum ersten Mal eine Verbindung zu einem neuen Remote -Server herstellt, fragt er, ob Sie dem Fingerabdruck des Servers vertrauen möchten. Wenn Sie die Option "immer" diesem Fingerabdruck auswählen, wird sie in der lokalen Benutzerregistrierung gespeichert. Sie können das Vertrauen für diesen Fingerabdruck jederzeit mit der entsprechenden Funktion widerrufen.
Get-TrustedServersBeispielausgabe:
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 muss auf der lokalen Maschine importiert / oder installiert werden.
Invoke-RemoteDesktopServer | Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
| Serveraddress | Saite | 0.0.0.0 | IP -Adresse, die die IP -Adresse des lokalen Maschine darstellt |
| Serverport | Ganze Zahl | 2801 | Die Portnummer, auf die sich eingehende Verbindungen anhören soll |
| SecurePassword | Sicherheit | Keiner | Securestring -Objekt, das das Kennwort enthält, das zur Authentifizierung von Remote -Zuschauern verwendet wird (empfohlen) |
| Passwort | Saite | Keiner | Passing-Text-Passwort zum Authentifizieren von Remote-Zuschauern (nicht empfohlen; verwenden Sie stattdessen SecurePassword). |
| Deaktivierung | Schalten | FALSCH | Wenn angegeben, unterdrückt das Programm Ausführungsnachrichten |
| Usetlsv1_3 | Schalten | FALSCH | Wenn angegeben, verwendet das Programm TLS v1.3 anstelle von TLS V1.2 für die Verschlüsselung (empfohlen, wenn beide Systeme es unterstützen). |
| Zwischenablage | Aufreum | Beide | Geben Sie den Synchronisierungsmodus der Zwischenablage an (die Optionen umfassen 'beide', 'deaktiviert', 'Senden' und 'Empfangen'; siehe unten weitere Details). |
| Zertifikatdatei | Saite | Keiner | Eine Datei mit gültigen Zertifikatsinformationen (x509), die den privaten Schlüssel enthält |
| CodedCertificat | Saite | Keiner | Eine Basis64-kodierte Darstellung der gesamten Zertifikatsdatei, einschließlich des privaten Schlüssels |
| Viewonly | Schalten | FALSCH | Wenn angegeben, kann der Remote -Viewer nur den Desktop anzeigen und hat keinen Zugriff auf die Maus oder Tastatur |
| Verhindern computOtOsleep | Schalten | FALSCH | Wenn angegeben, verhindert diese Option, dass der Computer den Schlafmodus eingibt, während der Server aktiv ist und auf neue Verbindungen wartet |
| Zertifikatpasswort | Sicherheit | Keiner | Geben Sie das vom Benutzer bereitgestellte Kennwort an, das zum Zugriff auf ein vom Kennwort geschützter X509-Zertifikat zugreift |
| Wert | Beschreibung |
|---|---|
| 127.0.0.1 | Hören Sie nur auf Verbindungen aus dem Localhost (normalerweise zu Debugging -Zwecken) |
| 0.0.0.0 | Hören Sie auf Verbindungen an allen Netzwerkschnittstellen, einschließlich des lokalen Netzwerks und dem Internet |
| Wert | Beschreibung |
|---|---|
| Deaktiviert | Die Synchronisation der Zwischenablage ist sowohl auf der Zuschauer- als auch auf der Serverseite deaktiviert |
| Erhalten | Es sind nur eingehende Zwischenablettungsdaten zulässig |
| Schicken | Es sind nur ausgehende Zwischenablettungsdaten zulässig |
| Beide | Die Synchronisation der Zwischenablage ist sowohl auf der Zuschauer- als auch auf der Serverseite zulässig |
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 " Ab Version 4.0.0 ist es möglich, das Logonui/Winlogon (UAC -Eingabeaufforderung, Windows -Anmeldefenster, Strg+Alt+del usw.) zu erfassen.
Um jedoch die Anmeldung zu erfassen, muss der Server in der aktuellen aktiven Sitzung unter dem Kontext von "NT Authority/System" ausgeführt werden.
Es gibt mehrere Methoden, um einen Prozess als Systembenutzer in der aktiven Sitzung (z. B. PSEXEC, Process Hacker) hervorzubringen, aber für den Einfachheit halber empfehle ich, mein PowerRunasssystem -Projekt zu verwenden (verfügbar auf Github und installierbar über die PowerShell -Galerie).
Install-Module - Name PowerRunAsSystemFühren Sie dann den Befehl bellow als Administrator aus.
Invoke-InteractiveSystemPowerShellEin neues PowerShell -Terminal sollte auf Ihrem Desktop als NT -Autorität/System angezeigt werden
Wenn Sie die obigen Schritte ausführen, sollte ein neues PowerShell -Terminal auf Ihrem Desktop als "NT Authority/System" -Nutzer angezeigt werden.
Aus diesem Terminal können Sie den Befehl power remote desktop server ausführen und die Option "Logonui" für zukünftige Power Remote -Desktop -Viewer -Verbindungen aktivieren.
Wenn Sie Ihr eigenes X509 -Zertifikat nicht verwenden, benötigen Sie Administratorrechte, um einen neuen Server zu erstellen, wenn Sie kein eigenes X509 -Zertifikat verwenden. Sie können jedoch einfach Ihr eigenes X509 -Zertifikat mit Tools wie dem OpenSSL -Befehlszeilen -Tool erstellen.
openssl req -x509 -sha512 -nodes -days 365 -newkey rsa:4096 -keyout phrozen.key -out phrozen.crt
Exportieren Sie dann das neue Zertifikat ( muss privater Schlüssel enthalten ).
openssl pkcs12 -export -out phrozen.p12 -inkey phrozen.key -in phrozen.crt
Verwenden Sie CertificateFile . Beispiel: c:tlscertphrozen.crt
Codieren ein vorhandenes Zertifikat mit PowerShell
[ convert ]::ToBase64String(( Get-Content - path " c:tlscertphrozen.crt " - Encoding byte))oder auf Linux / Mac -Systemen
base64 -i /tmp/phrozen.p12
Sie können dann die Ausgabebasis64 -Zertifikatdatei an Parameter EncodedCertificate (eine Zeile) übergeben.


] und ) korrekt gesendet und interpretiert.? = Einfach? = Medium? = Hart
Gemacht mit ❤️ in ??