PowerShell2.0之桌面计算机维护(六)修改电源计划

原创 2011年01月12日 00:10:00

Windows Vista和Windows Server 2008的电源计划有大量改进,可以针对使用电池或交流电供电的情况分别设置。如果当前计算机正在使用电池,那么续航时间是个需要关心的问题。而在某些情况下,计算机的性能才是最重要的。例如,如果电力会在几分钟之后恢复,则不必为延长电池使用时间而降低性能。在不同的电源计划下显示器、磁盘及CPU的电力消耗也不同,在Windows Server 2008系统中可以创建自定义的电源计划,如图1所示。

image

图1 创建自定义的电源计划

创建名为“SetPowerConfig.ps1”的脚本用于设置电源计划,代码如下:

param($c, $t, $q, $help)

function funline ($strIN)

{

$num = $strIN.length

for($i=1 ; $i -le $num ; $i++)

{ $funline += "=" }

Write-Host -ForegroundColor yellow `n$strIN

Write-Host -ForegroundColor darkYellow $funline

}

function funHelp()

{

$helpText=@"

DESCRIPTION:

NAME: SetPowerConfig.ps1

Sets power config on a local machine.

PARAMETERS:

-c(hange)

-q(uery) detailed query of current power plan

-t(ime out) time out value for change. Required when using -c to change a value

-help prints help file

SYNTAX:

SetPowerConfig.ps1

Displays error message. Must supply a parameter

SetPowerConfig.ps1 -c mp -t 10

Sets time out value of monitor when on power to10 minutes

SetPowerConfig.ps1 -c mb -t 5

Sets time out value of monitor when on battery to 5 minutes

SetPowerConfig.ps1 -c dp -t 15

Sets time out value of disk when on power to 15 minutes

SetPowerConfig.ps1 -c db -t 7

Sets time out value of disk when on battery to 7 minutes

SetPowerConfig.ps1 -c sp -t 30

Sets time out value of standby when on power to 30 minutes

SetPowerConfig.ps1 -c sb -t 10

Sets time out value of standby when on battery to 10 minutes

SetPowerConfig.ps1 -c hp -t 45

Sets time out value of hibernate when on power to 45 minutes

SetPowerConfig.ps1 -c hb -t 15

Sets time out value of hibernate when on battery to 15 minutes

SetPowerConfig.ps1 -q c

Lists detailed configuration settings of the current power scheme

SetPowerConfig.ps1 -help ?

Displays the help topic for the script

"@

$helpText

exit

}

if($help){funline("Obtaining help ...") ; funhelp }

$computer = (New-Object -ComObject WScript.Network).computername

if($q)

{

funline("Power configuration on: $($computer)")

powercfg -query

exit

}

if($c -and !$t)

{

$(Throw 'A value for $t is required.

Try this: SetPowerConfig.ps1 -help ?')

}

switch($c)

{

"mp" { powercfg -CHANGE -monitor-timeout-ac $t }

"mb" { powercfg -CHANGE -monitor-timeout-dc $t }

"dp" { powercfg -CHANGE -disk-timeout-ac $t}

"db" { powercfg -CHANGE -disk-timeout-dc $t }

"sp" { powercfg -CHANGE -standby-timeout-ac $t }

"sb" { powercfg -CHANGE -standby-timeout-dc $t }

"hp" { powercfg -CHANGE -hibernate-timeout-ac $t }

"hb" { powercfg -CHANGE -hibernate-timeout-dc $t }

DEFAULT {

"$c is not allowed. Try the following:

SetPowerConfig.ps1 -help ?"

}

}

该脚本首先使用param语句定义了4个参数,即-c、-t、-q和-help。其中-q指定查询,-help指定输出帮助。-c和-t必须同时使用,因为-t值指定修改电源计划的参数超时值,如果该值为空,脚本执行将出错。该脚本使用WScript.Network对象获得本机的计算机名,因此可以使用New-Object cmdlet配合-comobject参数。通过小括号将这些内容括起作为一个对象,使用ComputerName属性并将结果保存在$computer变量中。

如果在脚本执行时提供了参数-q,那么会出现$q变量。这样可使用funline函数将计算机名作为标题输出,并使用Powercfg工具提供参数-query,从而得到本机当前的详细电源计划。

如果提供了参数-c,则必须使用参数-t。这是因为$t变量中包括的是时间信息,需要为-c参数中指定的操作指定有限的超时时间,这样才不会无限期地等待。如果仅有$c变量,则使用throw语句输出红色的错误信息,并停止脚本执行。

接下来脚本根据-c参数值匹配switch语句中的分支,如果值为mp,则使用包括在$t变量值作为交流电情况下的显示器超时时间的分钟数;如果值为mb,并且计算机在使用电池供电,则会使用$t变量值设置显示器的超时时间;如果值为db,则配置当前电源计划在达到$t变量设定的分钟数后关闭驱动器;如果值为sp,则在使用交流电的情况下当空闲时间超过$t变量设定的分钟数后计算机将会进入待机状态;如果需要计算机休眠,则使用hp,并修改用于交流电下休眠的电源计划值;如果使用hb,则为电池模式下的休眠值。

此脚本在Windows Server 2008和Windows XP下通过-q参数查询电源方案的结果如图2和图3所示。

image

图2 在Windows 2008中列出当前系统电源计划的详细方案

image

图3 在WindowsXP中获取到的电源计划的信息

作者: 付海军
出处:http://blog.csdn.net/fuhj02
版权:本文版权归作者和csdn共有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
个人网站: http://txj.lzuer.com/

PowerShell2.0之桌面计算机维护(五)管理桌面电源设置

便携式计算机的供电是个很重要的问题,因其直接关系到便携式设备的可移动性。Windows有多个组件与电源管理的配置策略相关,在Windows Server 2008中的电源策略设置界面如图1所示。 ...
  • fuhj02
  • fuhj02
  • 2011年01月11日 01:36
  • 283

PowerShell2.0之桌面计算机维护(九)磁盘管理

1 处理磁盘分区 PC通常只会有一个磁盘,Windows的管理策略会以分区形式管理磁盘,这样即可将物理硬件从操作系统中抽象出来。分区概念对于高效率地维护系统和文件很有好处,用户可以在“计算机管理”的...
  • fuhj02
  • fuhj02
  • 2011年01月15日 23:51
  • 667

PowerShell2.0之桌面计算机维护(七)性能计数器

Windows系统性能计数器是操作系统支持用于应用和组件发布性能数据的特殊对象,并且支持其他应用获取和分析这些已发布的数据。Windows中的性能计数器很多,包括针对磁盘、网络和TCP等计数器,用户能...
  • fuhj02
  • fuhj02
  • 2011年01月13日 01:53
  • 483

PowerShell2.0之桌面计算机维护(一)监控磁盘空间

随着时间的增长,系统中的可用空间会越来越少。系统管理员需要清理磁盘,前提是了解系统磁盘空间,为此需要追踪一段时间内的磁盘空间的使用情况。创建名为“QueryOldFiles.ps1”的脚本连接到特定文...
  • fuhj02
  • fuhj02
  • 2011年01月07日 03:22
  • 704

PowerShell2.0之桌面计算机维护(三)设置屏幕保护程序

Windows系统需要针对图形界面设置有关选项,如屏幕保护程序、桌面及电源设置等。尽管有很多用户通过组策略方式配置这些选项,但是对于尚未部署活动目录(Active Directory)的企业还是在使用...
  • fuhj02
  • fuhj02
  • 2011年01月09日 01:02
  • 432

北航面试之计算机从按下电源键到出现桌面是怎样的过程(linux)

开机过程指的是从打开计算机电源直到LINUX显示用户登录画面的全过程。分析LINUX开机过程也是深入了解LINUX核心工作原理的一个很好的途径。   启动第一步--加载BIOS   当你打...

Qt 桌面软件 艾宾浩斯记忆计划2.0

  • 2017年11月24日 18:50
  • 5.96MB
  • 下载

PowerShell2.0之维护网络(一)查看网络设置

http://www.cnblogs.com/fuhj02/archive/2011/01/22/1942261.html 本文将会介绍如何使用PowerShell管理网络,包括设置和TCP/IP堆栈...

PowerShell2.0之维护网络(三)设置网络适配器

如果计算机中有多个网络适配器,在Windows原有的cmd下配置其属性很困难,用户必须确保配置了适当的适配器并确认要禁用的不是正在使用中的网络适配器。本节介绍在处理多个网络适配器时可能出现的问题及其解...
  • fuhj02
  • fuhj02
  • 2011年01月24日 00:41
  • 1342

PowerShell2.0之维护网络(二)处理适配器配置

在处理所有适配器的状态后,还可以查询每个网络适配器的详细配置信息。可以通过选择“控制面板”|“网络和共享中心”|“网络连接”选项,打开“网络连接”窗口。在其中显示每个适配器的详细信息并做相应调整,如图...
  • fuhj02
  • fuhj02
  • 2011年01月23日 23:46
  • 757
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PowerShell2.0之桌面计算机维护(六)修改电源计划
举报原因:
原因补充:

(最多只允许输入30个字)