如何在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




