

Pure PowerShellのリモートデスクトップアクセス用のPower Remote Desktopへようこそ!このモジュールは、PowerShellのみを使用して1つまたは複数の画面をリモートで制御するためのユニークなソリューションを提供します。外部プロトコルやソフトウェアに依存する他のリモートデスクトップツールとは異なり、当社のモジュールは独自のリモートデスクトッププロトコルを利用しています。
モジュールは、クライアントとサーバーコンポーネントの両方で構成されており、どちらもPowerShellで完全に記述されています。当社のプロトコルは、TLSを使用して安全で暗号化された通信を提供し、チャレンジベースのパスワード認証と証明書ベースの認証の両方を提供します。
モジュールは、リモートデスクトップのフルマウスとキーボード制御を提供することに加えて、ビューアーのマウスカーソルアイコンも複製し、ローカルシステムとリモートシステムなどのクリップボードを同期します。 PowerShellの制限にもかかわらず、ネットワークトラフィックを最適化し、ストリーミングエクスペリエンスを改善するための手法を実装し、スムーズで効率的なリモートデスクトップエクスペリエンスをもたらしました。
執筆時点では、これは完全に既知のPowerShellベースのリモートデスクトップアプリケーションです。私たちはあなたがそれが役に立つと思うことを願っています、そして私たちはあなたが持っているかもしれないフィードバックや提案を歓迎します。
テスト:
現在のバージョン: 4.0.0安定
より良いストリーミングパフォーマンスと全体的なエクスペリエンスのために、PowerShell 5の代わりにPowerShell 7を使用することをお勧めします。
WindowsにPowerShell 7をここにインストールできます

Install-Module - Name PowerRemoteDesktop_Server
Invoke-RemoteDesktopServer - CertificateFile " <certificate_location> "独自の証明書の使用を避け、それを作成するプロセスを実行することを好む場合は、「証明書ファイル」オプションを削除し、代わりに管理者としてPowerShellを実行できます。
Install-Module - Name PowerRemoteDesktop_Viewer
Invoke-RemoteDesktopViewer - ServerAddress " <ip_address> " - Password " <the_one_displayed_on_server> "それでおしまい
このPowerShellアプリケーションを使用する方法はいくつかあります。推奨される方法は、PowerShellギャラリーを使用してサーバーコンポーネントとビューアーコンポーネントの両方をインストールすることです。または、モジュールとしてインストールするか、手動でスクリプトとしてインストールすることもできます。ニーズと好みに最適な方法を選択してください。
PowerShellギャラリーからPower Remote Desktopをインストールできます。これは、DebianまたはBrew for Macosの適性に似ています。そうするために、次のコマンドを実行します。
Install-Module - Name PowerRemoteDesktop_Server
Install-Module - Name PowerRemoteDesktop_Viewer現在のバージョンがプレレリーズとしてマークされている場合、 AllowPrereleaseは必須です
コマンドを実行すると、コマンドプロンプトに次の警告が表示される場合があります。
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'?
「Y」と入力して、インストールを確認して続行します。インストールが完了したら、両方のモジュールを使用できるはずです。次のコマンドを実行して、これを確認できます。
Get-Module - ListAvailable出力の例:
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..>
モジュールが表示されていない場合は、次のコマンドを実行してからもう一度確認してください。
Import-Module PowerRemoteDesktop_Server
Import-Module PowerRemoteDesktop_Viewerモジュールを使用できるようにするには、登録されたモジュールパスに配置する必要があります。次のコマンドを実行して、登録されたモジュールパスを表示できます。
Write-Output $ env: PSModulePath出力の例:
C:UsersPhrozenDocumentsWindowsPowerShellModules;C:Program FilesWindowsPowerShellModules;C:WINDOWSsystem32WindowsPowerShellv1.0Modules
CLONE POWERREMOTEDESKTOPリポジトリまたはGitHubリリースパッケージをダウンロードします。
git clone https://github.com/DarkCoderSc/PowerRemoteDesktop.git
PowerRemotedesktop_ViewerとPowerRemotedesktop_Serverフォルダーの両方を目的のモジュールパスにコピーします
例:
C:Users<USER>DocumentsWindowsPowerShellModules
両方のモジュールが利用可能になるようになりました。コマンドを使用して確認できます。
Get-Module - ListAvailable出力の例:
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..>
それらが表示されない場合は、次のコマンドを実行して確認してください。
Import-Module PowerRemoteDesktop_Server
Import-Module PowerRemoteDesktop_Viewer通知:マニフェストファイルはオプション( *.psd1 )であり、削除できます。
このアプリケーションをPowerShellモジュールとしてインストールすることは必須ではありません(ファイル拡張子が*.psm1であっても)
PowerShellスクリプトとしてロードすることもできます。以下を含む複数の方法が存在します:
使用を使用してコマンドを呼び出す:
IEX ( Get-Content .PowerRemoteDesktop_[ Server / Viewer ].psm1 - Raw)リモートの場所からスクリプトを読み込む:
IEX ( New-Object Net.WebClient).DownloadString( ' http://127.0.0.1/PowerRemoteDesktop_[Server/Viewer].psm1 ' )等...
PowerRemoteDesktop_Viewer.psm1 、ローカルマシンにインポート /またはインストールする必要があります。
Invoke-RemoteDesktopViewer
Get-TrustedServers
Remove-TrustedServer
Clear-TrustedServers 電源リモートデスクトップサーバーを使用して、新しいリモートデスクトップセッションを作成します。
| パラメーター | タイプ | デフォルト | 説明 |
|---|---|---|---|
| ServerAddress | 弦 | 127.0.0.1 | リモートサーバーホストまたはアドレス |
| サーバーポート | 整数 | 2801 | リモートサーバーのポート番号 |
| securepassword | 証券 | なし | リモートサーバーで認証するために使用されるパスワードを含むセキュリストリングオブジェクト(推奨) |
| パスワード | 弦 | なし | リモートサーバーで認証するために使用されるプレーンテキストパスワード(推奨されません。代わりにSecurePasswordを使用)) |
| vervaseverbosityを無効にします | スイッチ | 間違い | 指定されている場合、プログラムは冗長性メッセージを抑制します |
| USETLSV1_3 | スイッチ | 間違い | 指定されている場合、プログラムは暗号化にTLS v1.2の代わりにTLS v1.3を使用します(両方のシステムがサポートする場合は推奨されます) |
| クリップボード | 列挙 | 両方 | クリップボードの同期モードを指定します(オプションには「両方」、「無効」、「送信」、「受信」が含まれます。詳細については、以下を参照してください) |
| 画像圧縮品 | 整数(0-100) | 75 | 0(最低品質)から100(最高品質)の範囲のJPEG圧縮レベル |
| サイズ | スイッチ | 間違い | 指定されている場合、リモートデスクトップは「Resizeratio」オプションに従ってサイズ変更されます |
| Resizeratio | 整数(30-99) | 90 | 「サイズ」オプションと組み合わせて使用するには、パーセンテージとしてサイズの比率を指定します |
| Alwaysontop | スイッチ | 間違い | 指定すると、仮想デスクトップウィンドウが他のすべてのウィンドウの上に表示されます |
| パケットサイズ | 列挙 | SIZE9216 | ストリームのネットワークパケットサイズを指定します。ネットワークの制約に適したサイズを選択します。 |
| ブロックサイズ | 列挙 | サイズ64 | 画面グリッドブロックのサイズを指定します。リモート画面のサイズとコンピューターのリソース(CPUやネットワーク機能など)に適したサイズを選択します |
| logonui | スイッチ | 間違い | デフォルトのユーザーデスクトップの代わりに(アクティブセッションでシステム特権が必要)、サーバーにログオン/winlogonデスクトップを開くようにリクエストします |
| 価値 | 説明 |
|---|---|
| 無効 | クリップボードの同期は、視聴者とサーバーの両方の側面で無効になっています |
| 受け取る | 着信クリップボードデータのみが許可されています |
| 送信 | 発信クリップボードデータのみが許可されています |
| 両方 | 視聴者側とサーバー側の両方でクリップボードの同期が許可されています |
| 価値 | 説明 |
|---|---|
| size1024 | 1024バイト(1KIB) |
| size2048 | 2048バイト(2KIB) |
| サイズ4096 | 4096バイト(4KIB) |
| サイズ8192 | 8192バイト(8KIB) |
| SIZE9216 | 9216バイト(9KIB) |
| SIZE12288 | 12288バイト(12kib) |
| サイズ16384 | 16384バイト(16kib) |
| 価値 | 説明 |
|---|---|
| サイズ32 | 32x32 |
| サイズ64 | 64x64 |
| size96 | 96x96 |
| Size128 | 128x128 |
| サイズ256 | 256x256 |
| サイズ512 | 512x512 |
プレーンテキストパスワードがsecureStringに変換されている場合でも、プレーンテキストパスワードの代わりにSecurePasswordを使用することをお勧めします
パスワードを使用して「127.0.0.1:2801」に新しいリモートデスクトップセッションを開きます 'urcompl3xp@ssw0rd'
Invoke-RemoteDesktopViewer - ServerAddress " 127.0.0.1 " - ServerPort 2801 - SecurePassword ( ConvertTo-SecureString - String " urCompl3xP@ssw0rd " - AsPlainText - Force)初めて新しいリモートサーバーに接続するとき、視聴者はサーバーの指紋を信頼するかどうかを尋ねます。この指紋を「常に」信頼するオプションを選択すると、ローカルユーザーレジストリに保存されます。適切な機能を使用して、いつでもこの指紋の信頼を取り消すことができます。
Get-TrustedServers出力の例:
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-TrustedServersPowerRemoteDesktop_Server.psm1 、ローカルマシンにインポート /またはインストールする必要があります。
Invoke-RemoteDesktopServer | パラメーター | タイプ | デフォルト | 説明 |
|---|---|---|---|
| ServerAddress | 弦 | 0.0.0.0 | ローカルマシンのIPアドレスを表すIPアドレス |
| サーバーポート | 整数 | 2801 | 着信接続を聴くポート番号 |
| securepassword | 証券 | なし | リモートビューアーの認証に使用されるパスワードを含むセキュアスティングオブジェクト(推奨) |
| パスワード | 弦 | なし | リモートビューアーの認証に使用されるプレーンテキストパスワード(お勧めしません。代わりにSecurePassWordを使用) |
| vervaseverbosityを無効にします | スイッチ | 間違い | 指定されている場合、プログラムは冗長性メッセージを抑制します |
| USETLSV1_3 | スイッチ | 間違い | 指定されている場合、プログラムは暗号化にTLS v1.2の代わりにTLS v1.3を使用します(両方のシステムがサポートする場合は推奨されます) |
| クリップボード | 列挙 | 両方 | クリップボードの同期モードを指定します(オプションには「両方」、「無効」、「送信」、「受信」が含まれます。詳細については、以下を参照してください) |
| 証明書ファイル | 弦 | なし | 秘密鍵を含む有効な証明書情報(x509)を含むファイル |
| EncodedCertificate | 弦 | なし | 秘密鍵を含む証明書ファイル全体のbase64エンコード表現 |
| viewonly | スイッチ | 間違い | 指定した場合、リモートビューアはデスクトップのみを表示でき、マウスまたはキーボードにアクセスできません |
| computertos Sleep Prevent | スイッチ | 間違い | 指定した場合、このオプションは、サーバーがアクティブで新しい接続を待っている間にコンピューターがスリープモードに入ることを防ぎます |
| certifativePassword | 証券 | なし | ユーザーが提供するパスワードで保護されたX509証明書にアクセスするために使用されるパスワードを指定します |
| 価値 | 説明 |
|---|---|
| 127.0.0.1 | ローカルホストからの接続のみを聞く(通常はデバッグの目的で) |
| 0.0.0.0 | ローカルネットワークやインターネットなど、すべてのネットワークインターフェイスで接続を聞く |
| 価値 | 説明 |
|---|---|
| 無効 | クリップボードの同期は、視聴者とサーバーの両方の側面で無効になっています |
| 受け取る | 着信クリップボードデータのみが許可されています |
| 送信 | 発信クリップボードデータのみが許可されています |
| 両方 | 視聴者側とサーバー側の両方でクリップボードの同期が許可されています |
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 " バージョン4.0.0の時点では、logonui/winlogon(UACプロンプト、Windowsログインウィンドウ、Ctrl+Alt+Delなど)をキャプチャすることができます。
ただし、LogONUIをキャプチャするには、現在のアクティブセッションで「NT Authority/System」のコンテキストの下でサーバーを実行する必要があります。
アクティブセッションでシステムユーザーとしてプロセスを生成するための複数の方法があります(たとえば、Psexec、Process Hacker)ですが、簡単にするためには、PowerRunassystemプロジェクト(GitHubで入手可能で、PowerShellギャラリーからインストール可能)を使用することをお勧めします。
Install-Module - Name PowerRunAsSystem次に、管理者としてBellowコマンドを実行します。
Invoke-InteractiveSystemPowerShell新しいPowerShellターミナルがデスクトップにNT Authority/Systemとして表示されるはずです
上記の手順に従う場合、「NT Authority/System」ユーザーとして実行されているデスクトップに新しいPowerShell端子が表示されるはずです。
この端末から、Power Remote Desktop Serverコマンドを実行して、将来のPower Remote Desktop Viewer接続の「LogONUI」オプションを有効にすることができます。
独自のX509証明書を使用しない場合、新しいサーバーを作成するには管理者の特権が必要になることに注意してください。ただし、OpenSSLコマンドラインツールなどのツールを使用して、独自のX509証明書を簡単に作成できます。
openssl req -x509 -sha512 -nodes -days 365 -newkey rsa:4096 -keyout phrozen.key -out phrozen.crt
次に、新しい証明書をエクスポートします(秘密鍵を含める必要があります)。
openssl pkcs12 -export -out phrozen.p12 -inkey phrozen.key -in phrozen.crt
CertificateFileを使用します。例: c:tlscertphrozen.crt
PowerShellを使用して既存の証明書をエンコードします
[ convert ]::ToBase64String(( Get-Content - path " c:tlscertphrozen.crt " - Encoding byte))またはLinux / Macシステムで
base64 -i /tmp/phrozen.p12
その後、出力base64証明書ファイルをパラメーターEncodedCertificate (1行)に渡すことができます


]および)正しく送信されて解釈されます。? =簡単ですか? =ミディアム? =ハード
❤️で作られていますか?