如何在Windows 11中使用PowerShell调节第二显示器的亮度
如何在Windows 11中使用PowerShell调节第二显示器的亮度
太懂这种离谱的感觉了——Windows 11 Pro居然藏起了副屏亮度调节的入口,确实让人头疼。不过别担心,用PowerShell完全能搞定,下面给你两种实用的方法:
方法一:调用系统API的原生脚本
这个方法直接调用Windows底层的API,不需要额外安装任何模块,兼容性相对较好。你可以直接复制下面的脚本到PowerShell里运行:
Add-Type @" using System; using System.Runtime.InteropServices; public class DisplayBrightness { [DllImport("user32.dll")] public static extern bool EnumDisplayMonitors(IntPtr hdc, IntPtr lprcClip, MonitorEnumProc lpfnEnum, IntPtr dwData); [DllImport("dxva2.dll")] public static extern bool SetMonitorBrightness(IntPtr hMonitor, uint dwBrightness); public delegate bool MonitorEnumProc(IntPtr hMonitor, IntPtr hdcMonitor, ref RECT lprcMonitor, IntPtr dwData); [StructLayout(LayoutKind.Sequential)] public struct RECT { public int left; public int top; public int right; public int bottom; } public static IntPtr GetSecondMonitorHandle() { IntPtr secondMonitor = IntPtr.Zero; int monitorCount = 0; EnumDisplayMonitors(IntPtr.Zero, IntPtr.Zero, (hMonitor, hdcMonitor, ref RECT lprcMonitor, dwData) => { monitorCount++; if (monitorCount == 2) { secondMonitor = hMonitor; return false; // 找到第二个显示器后停止枚举 } return true; }, IntPtr.Zero); return secondMonitor; } } "@ # 获取第二显示器的句柄 $secondMonitor = [DisplayBrightness]::GetSecondMonitorHandle() if ($secondMonitor -ne [IntPtr]::Zero) { # 这里可以修改亮度值,范围是0-100 $brightnessLevel = 50 $success = [DisplayBrightness]::SetMonitorBrightness($secondMonitor, $brightnessLevel) if ($success) { Write-Host "第二显示器亮度已设置为 $brightnessLevel%" } else { Write-Host "设置失败,可能你的显示器不支持通过API调节亮度" } } else { Write-Host "未检测到第二显示器" }
注意事项:
- 一定要以管理员身份启动PowerShell,否则可能没有权限修改显示器设置;
- 你可以把
$brightnessLevel的值改成0-100之间的任意数字,对应亮度百分比。
方法二:使用CIM实例快速调节
这个方法更简洁,但兼容性稍差,仅适用于部分支持WMI亮度属性的显示器。如果方法一不行,可以试试这个:
# 获取所有已连接的显示器 $monitors = Get-CimInstance -ClassName Win32_DesktopMonitor if ($monitors.Count -ge 2) { # 索引从0开始,第二个显示器对应索引1 $secondMonitor = $monitors[1] # 设置亮度值,范围0-100 $brightnessLevel = 50 $secondMonitor | Set-CimInstance -Property @{Brightness = $brightnessLevel} Write-Host "第二显示器亮度已设置为 $brightnessLevel%" } else { Write-Host "未检测到第二显示器" }
补充说明:
如果两种方法都失效,大概率是你的显示器驱动不支持软件调节亮度,这时候可以试试更新显卡驱动,或者直接用显示器自带的物理按钮调节。
备注:内容来源于stack exchange,提问作者not2qubit




