コマンドラインを通じてPowerShellでリモートコンピューターのスクリーンショットを撮る方法を学べます。この概要では、Windowsリモートコンピューターで画像をキャプチャする最適な技術をカバーしています。
PowerShellはIT管理者によるリモート自動化とシステム管理に広く使用されているため、リモートコンピュータのスクリーンショットを撮る必要がある場合、最初に検討されるツールとなることがよくあります。理論的には、PowerShellは.NETライブラリを通じてWindowsのグラフィカルコンポーネントと対話できるため、画面キャプチャが可能です。しかし実際には、リモート実行によってユーザーセッションと権限に関連する大きな制限が生じます。これは、PowerShellリモート処理を使用してスクリーンショットコードをリモートで実行することで機能します。画像はローカルコンピュータではなく、リモートコンピュータ上に保存されます。
ステップ 1. ターゲットコンピュータでPowerShellスクリプトを手動で、スケジュールタスクを通じて、または自動化スクリプトの一部として実行します。スクリーンショットは、スクリプトが実行された時点でそのマシン上で撮影されます。
ステップ 2. Add-Typeを使用して必要な.NETアセンブリを読み込みます。System.Drawingアセンブリは画像データの作成と管理に使用され、System.Windows.Formsは解像度などの画面情報を検出するために必要です。
ステップ 3. スクリーンショットが保存される出力パスを定義します。このパスは存在し、書き込み可能である必要があります(例:C:\Tempのようなフォルダ)。これにより、画像ファイルが正常に作成されます。
ステップ 4. System.Windows.Forms.Screenからプライマリスクリーンの境界を読み取ることで画面解像度を検出します。このステップにより、スクリーンショットが完全な可視画面サイズと一致することが保証されます。
ステップ 5. 検出された画面の幅と高さを使用して、メモリ内にビットマップオブジェクトを作成します。このビットマップは、キャプチャされた画面コンテンツを保持する空白の画像として機能します。
ステップ 6. ビットマップからグラフィックスオブジェクトを生成します。このグラフィックスオブジェクトは、ビットマップに視覚データを描画およびコピーする役割を担います。
ステップ 7. CopyFromScreenメソッドを使用して、すべての可視画面ピクセルをビットマップにコピーします。これが実際にスクリーンショットがキャプチャされるステップです。
ステップ 8. ビットマップを画像ファイルとして保存し、グラフィックスオブジェクトとビットマップオブジェクトを破棄してシステムリソースを解放します。その後、スクリーンショットはトラブルシューティングやドキュメント作成のために後で確認できます。
# リモートコンピュータ名を定義
$RemoteComputer = "REMOTE-PC-NAME"
# リモートコンピュータ上のスクリーンショット保存パスを定義
$OutputPath = "C:\Temp\PowerShellScreenCapture.jpg"
Invoke-Command -ComputerName $RemoteComputer -ScriptBlock {
Add-Type -AssemblyName System.Drawing Add-Type -AssemblyName System.Windows.Forms
# プライマリスクリーンの解像度を取得 $ScreenBounds = [System.Windows.Forms.Screen]::PrimaryScreen.Bounds
# スクリーン解像度に合わせたビットマップを作成 $Bitmap = New-Object System.Drawing.Bitmap ` $ScreenBounds.Width, $ScreenBounds.Height
# グラフィックスオブジェクトを作成 $Graphics = [System.Drawing.Graphics]::FromImage($Bitmap)
# スクリーン内容をビットマップにコピー $Graphics.CopyFromScreen( $ScreenBounds.Location, [System.Drawing.Point]::Empty, $ScreenBounds.Size )
# スクリーンショットを保存 $Bitmap.Save($using:OutputPath, [System.Drawing.Imaging.ImageFormat]::Jpeg)
# クリーンアップ $Graphics.Dispose() $Bitmap.Dispose() }
複雑なスクリプトなしで迅速な結果を求めるITスタッフやリモートワーカーにとって、AnyViewerは実用的な選択肢です。コマンドベースのツールに伴う設定や権限の問題を回避しながら、リモートスクリーンをキャプチャする簡単な方法を提供します。これは日常的なサポート業務や定期的な監視に理想的です。
リモートデバイスに接続すると、スクリーンショットの取得は簡単です。スクリーンショットボタンをクリックするだけで、画像はローカルコンピューターに直接保存されます。ディスプレイドライバーを調整したり、画像を手動で他のプログラムに貼り付ける必要はありません。AnyViewerは無人アクセスをサポートしているため、誰もログインしていない状態でもスクリーンをキャプチャでき、サーバーやバックグラウンドタスクの確認に役立ちます。
AnyViewerは一般的な技術的障壁も取り除きます。ファイアウォールの設定、ポートの開放、システムポリシーの変更は必要ありません。黒い画面表示の問題なく実際のスクリーンを確実に表示し、すべての画像データは転送中に強力な暗号化で保護されます。速度、シンプルさ、セキュリティを組み合わせることで、AnyViewerはリモートスクリーンショットの取得をはるかに簡単かつ効率的にします。
ステップ 1. 両方のコンピューターにAnyViewerをインストールして起動します。ログイン > サインアップ に進み、AnyViewerアカウントを作成します。(既に公式ウェブサイトでサインアップしている場合は、直接ログインできます。)
ステップ2. その後、AnyViewerへのログインが成功したことを確認できます。お使いのデバイスは、ログインしたアカウントに自動的に割り当てられます。
ステップ3. 2台のデバイスで同じAnyViewerアカウントにログインします。ローカルデバイスで デバイスに移動し、ワンクリック制御をクリックすることで直接接続を確立できます。
その後、ローカルコンピュータと同様の方法でリモート画面をキャプチャできます。
| 機能 | PowerShell / スクリプト | AnyViewer |
|---|---|---|
| セットアップの難易度 | 高い (コーディングとWinRM設定が必要) | 低い (インストールしてすぐ使用可能) |
| セッション処理 | 黒い画面をキャプチャすることが多い (セッション0) | 表示されているデスクトップをキャプチャ (自動処理) |
| セキュリティ | 実行ポリシーの緩和が必要 | エンドツーエンドのECC暗号化を使用 |
| 最適な使用例 | 大規模一括展開 (一度に100台以上のPC) | 特定のマシンのトラブルシューティング |
PowerShellとCMDは強力な自動化機能を提供しますが、セッション0の分離や権限の複雑さのため、画面キャプチャのようなグラフィカルなタスクには往々にして不向きです。
黒い画面やセキュリティの抜け穴のリスクなしに、信頼性の高い高精細な視覚的ログを必要とする管理者にとって、AnyViewerのような専用ツールがプロフェッショナルな選択肢です。これにより、画面の内容に集中でき、キャプチャ方法を心配する必要がなくなります。
1. PowerShellは本当にリモートコンピューターのスクリーンショットを撮影できますか?
はい、PowerShellリモーティングを使用してリモートコンピューター上でスクリプトを実行することで、スクリーンショットを撮影できます。キャプチャはアクティブなユーザーセッションと権限に依存します。
2. PowerShellリモーティング使用時、スクリーンショットはどこに保存されますか?
スクリーンショットはローカルマシンではなく、リモートコンピューター上に保存されます。C:\Tempなど、ターゲットデバイス上の書き込み可能なパスを指定する必要があります。
3. PowerShellのスクリーンショットが時々黒い画面になるのはなぜですか?
これは通常、スクリプトがセッション0などの非対話型セッションで実行され、表示されているデスクトップにアクセスできないために発生します。
4. PowerShell画面キャプチャに必要な.NETコンポーネントは何ですか?
スクリプトには、画像の作成と保存にSystem.Drawing、画面解像度と表示情報の検出にSystem.Windows.Formsが必要です。
5. リモートスクリーンショットでAnyViewerがPowerShellより簡単なのはなぜですか?
AnyViewerは表示されているデスクトップを直接キャプチャし、画像をローカルコンピューターに保存します。スクリプティング、セッション問題、権限問題を回避するため、日常使用により迅速です。