You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PowerShell脚本实现屏幕亮度的增减调节?

用PowerShell调节屏幕亮度的可行方案

由于FN键是键盘硬件层面的组合键,WScript.Shell.SendKeys无法模拟这类非标准按键输入,因此需要借助系统内置工具或Windows API来实现屏幕亮度的调节,以下是几种兼容性较好的方案:


方案1:使用系统内置powercfg命令(推荐)

powercfg是Windows自带的电源配置工具,可直接读取和设置显示器亮度,兼容性覆盖绝大多数Windows设备:

亮度增加脚本

# 识别当前电源模式(AC=插电,DC=电池)
$powerMode = if ((Get-CimInstance Win32_Battery).BatteryStatus -eq 2) { "AC" } else { "DC" }
$scheme = "SCHEME_CURRENT"
$subGroup = "SUB_VIDEO"
$setting = "VIDEOBRIGHTNESS"

# 获取当前亮度值(0-100)
$currentBrightness = (powercfg -get$powerMode`valueindex $scheme $subGroup $setting).Split()[-1] -as [int]

# 计算新亮度(每次增加10,限制在0-100范围内)
$newBrightness = [math]::Max(0, [math]::Min(100, $currentBrightness + 10))

# 应用新亮度并激活配置
powercfg -set$powerMode`valueindex $scheme $subGroup $setting $newBrightness
powercfg -setactive $scheme

亮度减少脚本

只需将上述代码中的$currentBrightness + 10改为$currentBrightness - 10即可。


方案2:调用Windows API调节Gamma曲线

通过修改显示器的Gamma曲线实现亮度调节,适合不支持powercfg亮度设置的设备,但重启后会恢复默认:

Add-Type @"
using System;
using System.Runtime.InteropServices;

public class DisplayBrightness {
    [DllImport("gdi32.dll")]
    public static extern bool GetDeviceGammaRamp(IntPtr hdc, ref RAMP lpRamp);

    [DllImport("gdi32.dll")]
    public static extern bool SetDeviceGammaRamp(IntPtr hdc, ref RAMP lpRamp);

    [StructLayout(LayoutKind.Sequential)]
    public struct RAMP {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public ushort[] Red;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public ushort[] Green;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public ushort[] Blue;
    }
}
"@

# 获取当前Gamma参数
$hdc = [System.Drawing.Graphics]::FromHwnd([IntPtr]::Zero).GetHdc()
$ramp = New-Object DisplayBrightness+RAMP
$ramp.Red = New-Object ushort[] 256
$ramp.Green = New-Object ushort[] 256
$ramp.Blue = New-Object ushort[] 256
[DisplayBrightness]::GetDeviceGammaRamp($hdc, [ref]$ramp) | Out-Null

# 调节亮度(1.1=增加10%,0.9=减少10%,范围0.1-1.0)
$brightnessMultiplier = 1.1
for ($i = 0; $i -lt 256; $i++) {
    $newValue = [ushort][math]::Min(65535, [math]::Max(0, $ramp.Red[$i] * $brightnessMultiplier))
    $ramp.Red[$i] = $newValue
    $ramp.Green[$i] = $newValue
    $ramp.Blue[$i] = $newValue
}

# 应用新Gamma设置
[DisplayBrightness]::SetDeviceGammaRamp($hdc, [ref]$ramp) | Out-Null
$hdc.Dispose()

方案3:WMI硬件接口(仅部分笔记本支持)

部分品牌笔记本(如戴尔、联想)提供了WMI接口直接控制屏幕亮度,需要管理员权限:

亮度增加脚本

# 获取当前亮度(仅支持部分设备)
$display = Get-CimInstance -Namespace root\wmi -ClassName WmiMonitorBrightness
$currentBrightness = $display.CurrentBrightness

# 计算新亮度(限制0-100)
$newBrightness = [math]::Max(0, [math]::Min(100, $currentBrightness + 10))

# 设置亮度
$brightnessMethods = Get-CimInstance -Namespace root\wmi -ClassName WmiMonitorBrightnessMethods
$brightnessMethods.WmiSetBrightness(1, $newBrightness)

内容的提问来源于stack exchange,提问作者Oprex Droid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 01:52:07