Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

PowerShellを使用してユーザーのデスクトップのスクリーンショットを撮る

ヘルプデスクサポートチームから、リモートコンピューターからユーザーデスクトップのスクリーンショットをすばやく取得するためのPowerShellスクリプトを作成するように依頼されました。主な条件は、ヘルプデスクの従業員がグラフィカルなリモートサポートツール(SCCM、リモートアシスタンス、リモートデスクトップセッションシャドウイングなど)を介してユーザーのコンピューターに接続してはならないことです。

PowerShellを使用したスクリーンショットのキャプチャ

まず、PowerShellを使用してローカルコンピューターでスクリーンショットを撮る方法を学びましょう。現在のデスクトップイメージをキャプチャするには、組み込みの.NETクラス System.Windows.Formsを使用できます。 。このPowerShellスクリプトを入手しました:

$Path = "C:\ScreenCapture"
# Make sure that the directory to keep screenshots has been created, otherwise create it
If (!(test-path $path)) {
New-Item -ItemType Directory -Force -Path $path
}
Add-Type -AssemblyName System.Windows.Forms
$screen = [System.Windows.Forms.Screen]::PrimaryScreen.Bounds
# Get the current screen resolution
$image = New-Object System.Drawing.Bitmap($screen.Width, $screen.Height)
# Create a graphic object
$graphic = [System.Drawing.Graphics]::FromImage($image)
$point = New-Object System.Drawing.Point(0, 0)
$graphic.CopyFromScreen($point, $point, $image.Size);
$cursorBounds = New-Object System.Drawing.Rectangle([System.Windows.Forms.Cursor]::Position, [System.Windows.Forms.Cursor]::Current.Size)
# Get a screenshot
[System.Windows.Forms.Cursors]::Default.Draw($graphic, $cursorBounds)
$screen_file = "$Path\" + $env:computername + "_" + $env:username + "_" + "$((get-date).tostring('yyyy.MM.dd-HH.mm.ss')).png"
# Save the screenshot as a PNG file
$image.Save($screen_file, [System.Drawing.Imaging.ImageFormat]::Png)

このPowerShellスクリプトは、スクリーンショットを保存するディレクトリを作成し、現在の画面解像度を取得し、現在のワークスペースの画像をキャプチャして、PNGファイルとして保存します。 PowerShellスクリプトを実行し、デスクトップのスクリーンショットとともにpngファイルが指定されたディレクトリ(共有ネットワークフォルダーへのUNCパスを指定できます)に表示されることを確認します。便宜上、PNGファイルの名前には、コンピューター名、ユーザー名、現在の日付と時刻が含まれています。

バッチファイルからPSスクリプトを呼び出す場合は、次のコマンドを使用します(この場合、PowerShell実行ポリシー設定を変更する必要はありません)。

powershell.exe -executionpolicy bypass -file c:\ps\CaptureLocalScreen.ps1

PowerShellを使用してユーザーのデスクトップのスクリーンショットを撮る

PowerShellスクリプトを編集するには、PowershellISEの代わりにVisualStudioCodeを使用することをお勧めします。

GPOを作成して、PowerShellスクリプトのショートカットをすべてのドメインユーザーのデスクトップに配置し、それを呼び出すためのホットキーを割り当てることができます。これで、問題やエラーがアプリに表示されたときに、ユーザーは割り当てられたホットキーを押すだけで済みます。次に、ユーザーのデスクトップのスクリーンショットがヘルプデスクの共有フォルダに表示されます。

PowerShellを使用してリモートコンピューターからデスクトップのスクリーンショットを撮る方法

次のタスクは、PowerShellを介してリモートコンピューター上のユーザーのデスクトップのスクリーンショットを取得することです。 Windows10を実行しているスタンドアロンコンピューターまたはRDSサーバーのいずれかです。

グラフィックツールを使用してRDSサーバー上のユーザーデスクトップに接続するための推奨される方法は、シャドウRDPセッションです。

RDSサーバー(または複数の同時RDP接続が許可されているデスクトップWindows)からデスクトップスクリーンショットを取得する場合は、最初にリモートコンピューターでユーザーセッションIDを取得する必要があります。次のPowerShellスクリプトで、リモートコンピューター/サーバーの名前とユーザーアカウントを指定します。
$ComputerName = "nld-rds1"
$RDUserName = "h.jansen"
$quser = (((query user /server:$ComputerName) -replace '^>', '') -replace '\s{2,}', ',' | ConvertFrom-Csv)
$usersess=$quser | where {$_.USERNAME -like $RDUserName -and $_.STATE -eq "Active"}
$usersessID=$usersess.ID

スクリプトを使用して、1人のユーザーがいるリモートコンピューターからスクリーンショットを取得する場合、セッション番号は常に1になります。以前のRDSサーバーのクエリブロックを$usersessID = 1に置き換えます。 。

より便利にするために、PowerShellスクリプトファイルを共有ネットワークフォルダーに保存します。次に、 CaptureLocalScreen.ps1を編集します ファイルを作成し、パスを次のように変更します:

$Path = \\nld-fs01\Screen\Log

ユーザーのスクリーンショットはこのフォルダーに保存されます。 認証されたユーザーのフォルダへの書き込み権限を付与します ドメイングループ。

ユーザーセッションIDを取得したら、PsExecを使用してリモートでユーザーセッションに接続できます。 ツールを使用してスクリプトを実行します:

.\PsExec.exe -s -i $usersessID \\$ComputerName powershell.exe -executionpolicy bypass -WindowStyle Hidden -file "\\nld-fs01\Screen\CaptureLocalScreen.ps1"

次に、ヘルプデスクチームのメンバーが自分のコンピュータからスクリプトを実行でき、リモートコンピュータの現在のデスクトップのスクリーンショットが指定されたディレクトリに表示されます。


  1. Mac でスクリーンショットを撮る方法 – キーボード ショートカットでスクリーン キャプチャを作成する

    数回のキーストロークで、Mac の画面の一部または全体を簡単にキャプチャできます。 スクリーンショットは多くの場合に役立ちます。たとえば、ブログ投稿を書いているときに、要点を強調する画像を使用したい場合などです。 このガイドでは、いくつかのシンプルで高速なキーボード ショートカットを使用してそれを行う方法を説明します。 最後に、コンピューター画面で何かをキャプチャしたい場合に、より多くのオプションを提供する便利な機能を紹介します. 始めましょう! Mac でスクリーンショットを撮る方法 Mac でスクリーンショットを撮るには、次のキーを同時に押し続けます:Command Shift

  2. キーボード ショートカットを使用して Mac OS でスクリーンショットを撮る方法

    最近 Windows から macOS に切り替えた場合、Mac でスクリーンショットを撮るのがわかりにくいかもしれません。確かに、Print Screen はありません もうキーボードのキーを押します。ただし、代わりに使用できるキーボード ショートカットがいくつかあります。適切なショートカットを使用すると、単一のウィンドウ、画面全体、または特定の部分のスクリーンショットを取得できます。 macOS Mojave 以降にアップグレードした場合は、スクリーンショット アプリを使用して、画面のさまざまな部分をキャプチャしたり、ビデオ録画を作成したりできます。これは、Applications フ