首页 > 解决方案 > 使用 PowerShell 更改电源计划

问题描述

我正在尝试创建一个在电源计划之间切换的脚本。这是脚本:

$PP1 = Get-WmiObject -Namespace root\cimv2\power -Class Win32_PowerPlan |
           where {$_.elementname -eq "Balanced"}
$PP2 = Get-WmiObject -Namespace root\cimv2\power -Class Win32_PowerPlan |
       where {$_.elementname -eq "My Custom Plan 1"}

if ($PP1) {
    $PP2.Activate()
}
if ($PP2) {
    $PP1.Activate()
}

这是我得到的错误:

异常调用“激活”:“此方法未在任何类中实现”
在行:6 字符:1
+ $PP2.Activate()
+~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    +fullyQualifiedErrorId:WMIMethodException

异常调用“激活”:“此方法未在任何类中实现”
在行:10 字符:1
+ $PP1.Activate()
+~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    +fullyQualifiedErrorId:WMIMethodException

知道如何解决这个问题吗?

下面是我执行后得到的输出$PP1。输出与以下相同$PP2

__属:2
__CLASS : Win32_PowerPlan
__SUPERCLASS : CIM_SettingData
__DYNASTY : CIM_ManagedElement
__RELPATH : Win32_PowerPlan.InstanceID="Microsoft:PowerPlan\\{381b4222-f694-41f0-9685-ff5bb260df2e}"
__PROPERTY_COUNT : 5
__DERIVATION : {CIM_SettingData, CIM_ManagedElement}
__服务器:PCLP2
__NAMESPACE : 根\cimv2\power
__PATH : \\PCLP2\root\cimv2\power:Win32_PowerPlan.InstanceID="Microsoft:PowerPlan\\{381b4222-f694-41f0-9685-ff5bb260df2e
                   }"
标题 :
描述:在有能力的硬件上自动平衡性能和能耗。
元素名称:平衡
InstanceID : Microsoft:PowerPlan\{381b4222-f694-41f0-9685-ff5bb260df2e}
IsActive : 真
PS计算机名称:PCLP2

我的目标是将脚本添加到任务计划程序中,每次我锁定计算机时,电源状态都会相应地切换。

标签: powershellpowershell-5.0powershell-ise

解决方案


我发现由于某种我不知道确切原因的原因,此方法在 Windows 10 上不起作用,所以我只是使用powercfg命令来解决这个问题,这是一个工作脚本。

$PP1 = Get-WmiObject -Namespace root\cimv2\power -Class win32_powerplan | where {$_.elementname -eq "Balanced"}


if ($PP1.IsActive -eq "False") {
powercfg /setactive 47f02214-4297-464e-8b31-f95e26d28082 
} Else { 

powercfg /setactive 381b4222-f694-41f0-9685-ff5bb260df2e
} 

因为我只有 2 个电源计划,所以这更简单,这就是为什么我有 1 个变量,它只能是 PowerPlan A 或 PowerPlan B。

不知道如何在任务计划程序上进行这项工作,因为如果我运行该任务,它会为我打开一个记事本,尽管我可以使用带有powercfg命令的 bat 文件来完成这项工作,但只是好奇。有什么办法可以使这项工作?


推荐阅读