通过远程桌面连接关闭 Windows 10 上的显示器

通过远程桌面连接关闭 Windows 10 上的显示器

我希望在通过远程桌面连接到 Windows 10 计算机后禁用两台显示器并将其关闭,如果我走出办公室并打开计算机进行远程访问,这两台显示器可能会消耗不必要的电量。有没有办法让 Windows 禁用显示器而不是手动关闭显示器?

答案1

  1. 打开Power & sleep设置菜单:Windows+ XO
  2. 将时间设置Screen为一些实用的时间。

在此处输入图片描述

  • 超时时间过后,目标电脑的显示器将进入待机模式。
  • 当您通过远程桌面远程连接到 PC 时,显示器将保持待机模式。

答案2

我的需求非常相似,我设法找到了一个可行的解决方案。这不是一个完美的解决方案,而是一个变通方法。但对我来说效果很好。我在 Windows 11 Enterprise 21H2 上使用此解决方案,但它应该适用于任何 Windows 10/11 Pro/Enterprise/LTSC 系统。(但是,Windows 10/11 Home 版本不能以这种方式使用)

我的情况:我有一台 Windows 11 台式电脑。它连接到显示器。但大多数时候我都将其用作 7x24 运行的无头服务器。我在其上运行多个 Hyper-V 虚拟机,主要通过 RDP(远程桌面)会话远程操作/维护电脑。但是,有时我也会在本地使用这台电脑玩视频游戏。我希望在我不在本地使用电脑时(且仅在不使用它时)关闭电脑的显示器。而且我不想每次都手动打开/关闭显示器的电源按钮。

在 Windows 电源计划设置中(开始菜单 - 输入“电源计划” - 编辑电源计划),您可以配置“关闭显示器”设置(使用电池/插入电源),以便在一定时间不活动后自动关闭显示器。它仅将您的本地(非 RDP)会话键盘/鼠标使用情况计为活动。您只能在 UI 中将这些值设置为低至 1 分钟。

但是,您实际上可以使用以下方法将这些值设置为低至 1 秒组策略(Win+R 运行“gpedit.msc”打开组策略编辑器)。对应的配置项位于计算机配置\管理模板\系统\电源管理\视频和显示设置 - “关闭显示器(插入电源)(秒)”和“关闭显示器(使用电池)”。如果配置了这些组策略值,它们将覆盖电源计划设置 UI 中的相应值。

简而言之,这就是我的方式:当我不在本地使用 PC 时自动(以编程方式)将这些组策略值设置为“5 秒”,这样它就会(快速)关闭显示器;当我开始在本地使用 PC 时(也自动)删除“5 秒”设置,这样显示器就不会关闭。

要以编程方式修改组策略配置,我使用 PowerShell 和组策略模块。在开始菜单中,输入“powershell”,右键单击“Windows PowerShell”并选择“以管理员身份运行”,在打开的PS shell中,粘贴并运行以下两行:

Install-Module -Name PolicyFileEditor -RequiredVersion 3.0.0
Set-ExecutionPolicy Bypass

第一行将从 Microsoft 服务器下载并安装“GroupPolicy”PS 模块。第二行将更改执行政策PowerShell 来(永久)删除在此电脑上执行未签名的 PS 脚本的限制。

现在可以使用PowerShell修改组策略值了。我写了以下两个PS脚本:

EnableMonitorAutoOff.ps1:启用在 5 秒不活动后关闭显示器的功能。

Import-Module -name "PolicyFileEditor"

# need to install PolicyFileEditor module
# https://www.powershellgallery.com/packages/PolicyFileEditor/3.0.0
#   Install-Module -Name PolicyFileEditor -RequiredVersion 3.0.0

Set-PolicyFileEntry -Path "$env:windir\system32\GroupPolicy\Machine\Registry.pol" -Key 'Software\Policies\Microsoft\Power\PowerSettings\3C0BC021-C8A8-4E07-A973-6B14CBCB2B7E' -ValueName 'ACSettingIndex' -Data 5 -Type 'DWord'

Set-PolicyFileEntry -Path "$env:windir\system32\GroupPolicy\Machine\Registry.pol" -Key 'Software\Policies\Microsoft\Power\PowerSettings\3C0BC021-C8A8-4E07-A973-6B14CBCB2B7E' -ValueName 'DCSettingIndex' -Data 5 -Type 'DWord'

DisableMonitorAutoOff.ps1:禁用(删除)“5 秒不活动监视器关闭”设置。

Import-Module -name "PolicyFileEditor"

# need to install PolicyFileEditor module
# https://www.powershellgallery.com/packages/PolicyFileEditor/3.0.0
#   Install-Module -Name PolicyFileEditor -RequiredVersion 3.0.0

Remove-PolicyFileEntry -Path "$env:windir\system32\GroupPolicy\Machine\Registry.pol" -Key 'Software\Policies\Microsoft\Power\PowerSettings\3C0BC021-C8A8-4E07-A973-6B14CBCB2B7E' -ValueName 'ACSettingIndex'

Remove-PolicyFileEntry -Path "$env:windir\system32\GroupPolicy\Machine\Registry.pol" -Key 'Software\Policies\Microsoft\Power\PowerSettings\3C0BC021-C8A8-4E07-A973-6B14CBCB2B7E' -ValueName 'DCSettingIndex'

为了执行这些(*.ps1)PowerShell脚本,我编写了以下两个相应的包装器bat脚本:

启用监视器自动关闭程序

@echo off

setlocal
cd /d %~dp0

powershell ./EnableMonitorAutoOff.ps1
timeout /t 1
gpupdate /Target:Computer /Force

禁用监视器自动关闭程序

@echo off

setlocal
cd /d %~dp0

powershell ./DisableMonitorAutoOff.ps1
timeout /t 1
gpupdate /Target:Computer /Force

该bat脚本会执行相应的PS脚本来修改组策略,并调用更新使更改立即生效。只需将这些 *.ps1 和 *.bat 文件放在(相同的)任何目录中即可。

最后,我使用 Windows 任务计划程序(Win+R 并运行“taskschd.msc”)添加以下两个触发任务,以便在我本地启动/停止使用 PC 后自动禁用/启用“5 秒不活动监视器关闭”设置。

  • OnLocalSessionConnected 任务属性
    • 常规:勾选“无论用户是否登录都运行”;勾选“以最高权限运行”
    • 触发器:连接到用户会话时:本地连接到任何用户会话时
    • 操作:启动程序:<path>/DisableMonitorAutoOff.bat
  • OnLocalSessionDisonnected 任务属性
    • 常规:勾选“无论用户是否登录都运行”;勾选“以最高权限运行”
    • 触发器:断开与用户会话的连接时:本地断开与任何用户会话的连接时
    • 操作:启动程序:<path>/EnableMonitorAutoOff.bat

完成了。

最后但并非最不重要的一点。现在,当您开始在本地使用 PC(物理登录)时,将触发 OnLocalSessionConnected 任务以删除“5 秒不活动监视器关闭”设置。但是,当您停止在本地使用 PC 时,您不能只使用 Win + L 来锁定屏幕。Win + L 只会锁定屏幕,但不会断开本地会话(不幸的是,我还没有找到任何方法在任务计划程序中使用锁定屏幕事件作为触发器)。相反,您应该键入 Win + R 并运行“tsdiscon“。“tsdiscon”命令仍将显示锁定屏幕,但同时也会断开当前本地会话,因此将触发 OnLocalSessionDisonnected 任务以再次实施“5 秒不活动监视器关闭”设置。下次您想在本地使用 PC 时,只需摇动鼠标即可唤醒监视器。

答案3

我不知道是否有任何内置方法可以做到这一点,但监视器的电源选项可以工作。当您使用 RDP 时,这基本上就像锁定了机器一样,监视器将使用默认超时(在电源设置中设置),而不是锁定机器时使用内置的 60 秒超时。

我有两个 27 英寸的显示器,它们非常亮。所以我编写了一些脚本来更改显示器的睡眠时间。

@echo off

:: This script (Streen 1 Min.bat) will set the monitor timeout to "1 
   Minute" when run.
:: I did this because the monitors I have very bright.
:: The timeout for DC power source will be unchanged.

cls
powercfg /change monitor-timeout-ac 1
exit

如果您想要更奇特一点,您可以让任务计划程序根据远程桌面事件触发脚本。您可以创建另一个脚本,并使用您通常使用的任何超时期限。

此外,如果屏幕已打开超过 60 秒,并且您运行脚本,则显示器将自动重新进入睡眠状态。

答案4

将显示器连接到智能开关,您可以使用手机远程访问该开关。

相关内容