You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动