我有一个 python 代码,可以捕获我放在 azure 上的虚拟机中的屏幕截图 代码示例:
import os
import pyautogui
import time
from datetime import datetime
def take_screenshot():
desktop_path = os.path.join(os.path.expanduser('~'), 'Desktop')
timestamp = datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
screenshot_file = os.path.join(desktop_path, f'{timestamp}.png')
screenshot = pyautogui.screenshot()
screenshot.save(screenshot_file)
print(f"Screenshot saved as '{screenshot_file}'")
# Run the screenshot function every 10 seconds
while True:
take_screenshot()
time.sleep(10)
当我通过 RDP 连接时,代码运行良好,没有错误。
如果我关闭 RDP 连接,代码将面临以下错误:
操作系统错误:屏幕抓取失败
知道如何在未通过 RDP 登录时捕获屏幕截图吗?
在 Azure 上的无头虚拟机上捕获屏幕截图
您遇到的错误是由于
pyautogui
等屏幕捕获工具依赖于活动的图形会话来捕获屏幕截图。当您从虚拟机 RDP 会话断开连接时,图形会话实际上已关闭,导致 pyautogui
无法捕获屏幕截图。您可以使用可以捕获和分析虚拟机性能和活动的监控和管理工具
Azure portal
中有一个选项可以通过导航到VM
来拍摄实时Virtual Machine > Boot diagnostics
屏幕截图。”