如何使用 PowerShell 遠端擷取電腦螢幕畫面
您將透過指令列學習如何使用 PowerShell 遠端擷取電腦螢幕畫面,本概述涵蓋在 Windows 遠端電腦上捕捉影像的最佳技術要點。
如何使用 PowerShell 擷取遠端電腦螢幕截圖
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. 將點陣圖儲存為影像檔案,並透過釋放圖形與點陣圖物件來釋放系統資源。之後可檢視螢幕截圖以進行疑難排解或文件記錄。
您可以遵循此範例,使用 PowerShell 擷取遠端電腦螢幕截圖:
# 定義遠端電腦名稱
$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() }
🔥最簡單的遠端螢幕截圖方法:AnyViewer
對於希望快速獲得結果而無需複雜腳本的IT人員和遠端工作者來說,AnyViewer是一個實用的選擇。它提供了一種簡便的方式來擷取遠端螢幕,同時避免了基於命令的工具常伴隨的設定和權限問題。這使其成為日常支援任務和例行監控的理想工具。
一旦連接到遠端裝置,擷取螢幕截圖就變得非常直接。您只需點擊「螢幕截圖」按鈕,圖像便會直接儲存到您的本地電腦。無需調整顯示驅動程式或手動將圖像貼上到其他程式。由於AnyViewer支援無人值守存取,即使無人登入,您也能擷取螢幕畫面,這對於檢查伺服器或背景任務非常有用。
AnyViewer 還消除了常見的技術障礙。您不需要配置防火牆、開啟連接埠或更改系統策略。它能可靠地顯示真實螢幕畫面,不會出現黑屏問題,且所有圖像資料在傳輸過程中都受到強加密保護。透過結合速度、簡便性和安全性,AnyViewer使遠端螢幕截圖擷取變得更加輕鬆高效。
步驟 1. 在兩台電腦上安裝並啟動AnyViewer。前往 登入 > 註冊 以建立AnyViewer帳戶。(如果您已經在 官方網站註冊,可以直接登入。)
步驟 2. 接著您會看到已成功登入 AnyViewer。您的裝置將自動被指派至您登入的帳戶。
步驟 3. 在兩台裝置上登入相同的 AnyViewer 帳戶;在您的本機裝置上,前往 裝置,然後點擊一鍵控制即可建立直接連線。
之後您便能以操作本機電腦的方式擷取遠端畫面。
比較:PowerShell 與 AnyViewer
| 功能特性 | PowerShell / 指令碼 | AnyViewer |
|---|---|---|
| 設定難度 | 高 (需編寫程式碼與配置 WinRM) | 低 (安裝即可使用) |
| 工作階段處理 | 常擷取到黑畫面 (Session 0) | 擷取可見桌面 (自動處理) |
| 安全性 | 需降低執行原則限制 | 採用端對端ECC 加密 |
| 最佳使用情境 | 大量部署 (一次處理 100 台以上電腦) | 針對特定機器進行疑難排解 |
結論
雖然PowerShell與CMD具備強大的自動化能力,但由於 Session 0 隔離與權限複雜性,它們通常不適合用於螢幕擷取這類圖形化任務。
對於需要可靠、高保真視覺記錄,且不希望冒黑畫面或安全漏洞風險的管理員而言,專業工具如AnyViewer是理想的選擇。它能讓您專注於畫面內容,無需煩惱擷取方式。
常見問題
1. PowerShell 真的能擷取遠端電腦的螢幕截圖嗎?
是的,PowerShell 可以透過 PowerShell 遠端處理在遠端電腦上執行指令碼來擷取螢幕截圖。擷取結果取決於作用中的使用者工作階段與權限。
2. 使用 PowerShell 遠端處理時,螢幕截圖會儲存在哪裡?
螢幕截圖會儲存在遠端電腦上,而非本機電腦。您必須在目標裝置上指定一個可寫入的路徑,例如 C:\Temp。
3. 為什麼 PowerShell 擷取的螢幕截圖有時會顯示黑畫面?
這通常是因為指令碼在非互動式工作階段(例如 Session 0)中執行,該工作階段無法存取可見的桌面。
4. PowerShell 螢幕擷取需要哪些 .NET 元件?
指令碼需要 System.Drawing 來建立與儲存影像,並需要 System.Windows.Forms 來偵測螢幕解析度與顯示資訊。
5. 為什麼 AnyViewer 比 PowerShell 更適合用於遠端螢幕截圖?
AnyViewer 直接擷取可見桌面並將影像儲存至本機電腦。它避免了指令碼編寫、工作階段問題與權限問題,使其在日常使用中更為快速。