如何在Win10/11客户端自动禁用所有设备的“允许计算机关闭此设备”选项并生成相关设备列表
如何在Win10/11客户端自动禁用所有设备的“允许计算机关闭此设备”选项并生成相关设备列表
嘿,这个需求我熟!针对Win10/11客户端批量处理设备的电源管理选项,用PowerShell就能完美解决——既能生成启用了“允许计算机关闭此设备”的设备清单,也能一键禁用这个选项。下面给你具体的实现方法:
一、生成启用该选项的设备列表
先给你一个PowerShell脚本,它会自动扫描所有带电源管理选项的设备,找出那些开启了“允许计算机关闭此设备”的设备,输出到控制台的同时还会保存成CSV文件方便后续查看:
# 生成启用"允许计算机关闭此设备"的设备列表 $deviceList = @() # 遍历注册表中所有设备的电源管理设置 Get-ChildItem "HKLM:\SYSTEM\CurrentControlSet\Enum" -Recurse -ErrorAction SilentlyContinue | Where-Object { $_.Name -match "Device Parameters\\Power Management" } | ForEach-Object { $allowIdle = Get-ItemProperty -Path $_.PSPath -Name "AllowIdlePowerDown" -ErrorAction SilentlyContinue if ($allowIdle -and $allowIdle.AllowIdlePowerDown -eq 1) { # 获取设备友好名称 $devicePath = Split-Path (Split-Path $_.PSPath -Parent) -Parent $deviceInfo = Get-ItemProperty -Path $devicePath -Name "FriendlyName" -ErrorAction SilentlyContinue $deviceName = if ($deviceInfo) { $deviceInfo.FriendlyName } else { $_.Name.Split('\')[-3] } $deviceList += [PSCustomObject]@{ DeviceName = $deviceName RegistryPath = $_.PSPath AllowIdlePowerDown = $allowIdle.AllowIdlePowerDown } } } # 输出列表到控制台并保存到CSV文件 $deviceList | Format-Table -AutoSize $deviceList | Export-Csv -Path "EnabledIdlePowerDownDevices.csv" -NoTypeInformation -Encoding UTF8
脚本说明:
- 它会遍历系统注册表中存储设备电源设置的路径,检查
AllowIdlePowerDown值(1表示启用该选项,0表示禁用) - 收集设备的友好名称和注册表路径,最后生成的CSV文件会保存在脚本运行的目录下
二、批量禁用所有设备的该选项
如果确认要禁用这些设备的选项,用下面这个PowerShell脚本就能一键完成:
# 批量禁用所有设备的"允许计算机关闭此设备"选项 Get-ChildItem "HKLM:\SYSTEM\CurrentControlSet\Enum" -Recurse -ErrorAction SilentlyContinue | Where-Object { $_.Name -match "Device Parameters\\Power Management" } | ForEach-Object { $allowIdle = Get-ItemProperty -Path $_.PSPath -Name "AllowIdlePowerDown" -ErrorAction SilentlyContinue if ($allowIdle -and $allowIdle.AllowIdlePowerDown -eq 1) { # 修改值为0以禁用 Set-ItemProperty -Path $_.PSPath -Name "AllowIdlePowerDown" -Value 0 $deviceName = (Get-ItemProperty (Split-Path (Split-Path $_.PSPath -Parent) -Parent)).FriendlyName Write-Host "已禁用设备: $deviceName" } } Write-Host "批量禁用操作完成!"
脚本说明:
- 和上面的扫描逻辑一致,找到启用该选项的设备后,将
AllowIdlePowerDown的值改为0 - 运行过程中会在控制台输出被修改的设备名称,方便你确认操作结果
重要注意事项
- 这两个脚本都需要以管理员身份运行,因为要访问和修改系统级的注册表路径
- 修改注册表后,建议重启设备或者禁用再启用对应设备,确保设置生效
- 有些设备本身没有这个电源管理选项,脚本会自动跳过这些设备,不用担心出错
如果想用Batch脚本调用
如果你习惯用Batch文件,也可以写一个简单的批处理来调用PowerShell脚本:
@echo off powershell -ExecutionPolicy Bypass -File "DisableIdlePowerDown.ps1" pause
把上面的PowerShell保存为DisableIdlePowerDown.ps1,和这个Batch文件放在同一目录,管理员运行Batch即可执行操作。
备注:内容来源于stack exchange,提问作者Nathan




