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

如何编写PowerShell脚本控制HID设备节能选项?现有脚本无效求助

解决HID设备电源节省选项的PowerShell脚本控制问题

问题分析

直接修改注册表的SelectiveSuspendOn值无法即时生效,是因为设备管理器修改该值后,会向设备发送电源状态刷新命令或重启设备栈,手动改注册表缺少这一步。你之前使用MSPower_DeviceEnable类的脚本无效,大概率是类匹配错误或该类不对应此省电选项。

解决方案脚本

以下脚本会先修改对应注册表值,再重启目标HID设备,实现和设备管理器操作一致的即时生效效果:

# 目标设备实例路径(原样填入)
$deviceInstanceId = 'USB\VID_1532&PID_028A&MI_01\6&7E5C38B&0&0001'

# 定义要设置的状态:$true=允许关闭设备省电(背光自动熄灭),$false=禁止关闭(背光常亮)
$enablePowerSaving = $true

# 构建注册表路径
$regPath = "HKLM:\SYSTEM\CurrentControlSet\Enum\$deviceInstanceId\Device Parameters\Power Management"

# 设置SelectiveSuspendOn值:1=允许省电,0=禁止省电
Set-ItemProperty -Path $regPath -Name "SelectiveSuspendOn" -Value ([int]$enablePowerSaving) -Type DWORD

# 重启目标设备以生效
$pnpDevice = Get-CimInstance -ClassName Win32_PnPEntity | Where-Object { $_.DeviceID -eq $deviceInstanceId }
if ($pnpDevice) {
    $pnpDevice | Invoke-CimMethod -MethodName Disable
    Start-Sleep -Seconds 1
    $pnpDevice | Invoke-CimMethod -MethodName Enable
}

注意事项

  • 脚本需要以管理员权限运行,否则无法修改注册表和重启设备
  • 调整$enablePowerSaving的值即可切换状态:$true对应开启“允许计算机关闭此设备以节省电源”,$false对应关闭该选项
  • 设备重启过程中可能会短暂失去响应(比如键盘背光闪一下),属于正常现象

原脚本无效原因

MSPower_DeviceEnable类主要用于控制设备是否允许被电源管理功能启用,并非对应“允许关闭设备省电”这个具体选项。另外,你定义的$device变量末尾加了_0,可能导致InstanceName匹配不到正确的设备条目,从而无法修改对应设置。

内容的提问来源于stack exchange,提问作者bit.whisperer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 22:05:09