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

原创 2011年01月13日 01:53:00

Windows系统性能计数器是操作系统支持用于应用和组件发布性能数据的特殊对象,并且支持其他应用获取和分析这些已发布的数据。Windows中的性能计数器很多,包括针对磁盘、网络和TCP等计数器,用户能够使用这些性能计数器提供的数据确定程序瓶颈和系统性能。通过运行perfmon.msc启动性能计数器数据,如图1所示。用户可以通过右击计数器清单添加其他计数器,在添加的过程中显示如图2所示的“添加计数器”对话框。

image

图1 系统性能计数器

image

图2 “添加计数器”对话框

其中包括性能计数器名,如%Processor Time和Handle Count等,以及计数器对应的范例。当需要获取处理器相关的性能计数器数据时,默认以处理器命名。如果有多个处理器,则为计数器分别添加类似于#1、#2和#3这样的后缀。如果需要处理多个实例,则在添加计数器的过程中制定相应的实例。

5.1 Consuming Counter Data

PowerShell没有内置的cmdlet用于获取性能计数器的值,所以必须使用.NET的类。为此创建System.Diagnostics.PerformanceCounter的实例,配置其中的属性并不断调用NextValue()方法来获取相应的值。在开始操作性能计数器之前,需要首先配置用户权限为管理员权限。然后创建脚本用于监视CPU的使用率,将脚本命名为“Monitor-CpuUsage.ps1”。将会用性能计数器获取并显示当前CPU每秒的占用率,这个脚本会一直循环执行下去;除非用户按Ctrl-C终止。其代码如下:

$counter = New-Object Diagnostics.PerformanceCounter

$counter.CategoryName = "Processor"

$counter.CounterName = "% Processor Time"

$counter.InstanceName = "_Total"

while ($true)

{

$value = $counter.NextValue()

Write-Host "CPU: $value"

sleep 1

}

其中涉及的计数器名和实例名都可以很容易地从“添加计数器”对话框中找到,Monitor-CpuUsage.ps1脚本的执行结果如图20所示。

clip_image002[4]

图3 执行结果

从图中可以看到此时的CPU负载并不重,只达到10%左右,用户可以用类似的方法获取其他性能计数器的数据。

5.2 监视程序

当使用程序时发生不正常的情况时,通常都会造成占用大量的系统资源而导致系统重启。这时使用性能计数器可以监控程序的运行情况,即在运行程序的同时启动监视脚本。该脚本会实时获取和分析性能数据,当发生异常时会向用户发出警告。

针对意外终止的应用程序创建一个监视脚本Monitor-Crashes.ps1,脚本将会启动外部进程。当程序意外退出时,脚本会将重启5次应用程序之后停止尝试,其代码如下:

function Start-Process

{

Write-Host "Starting process..."

./UnpredictableCrash.exe

}

for ($i = 0; $i -lt 5; $i++)

{

Start-Process

Write-Host "Process exited $($i + 1) times."

}

Write-Host "Program restart limit exceeded."

该脚本的执行结果如图21所示。

clip_image002[6]

图4 执行结果

在脚本执行过程中使用了一个名为“UnpredictableCrash.exe”的程序,这个程序执行一秒钟等待操作后并退出。通过这个方法来模拟执行一定的操作,但在特定条件下意外退出的程序。在脚本中只是重启程序5次。如果需要,则可以让程序一直执行,使其作为一个驻留程序来执行。

 

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

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

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

PowerShell2.0之桌面计算机维护(二)用户管理

系统管理员的重要任务之一是管理用户,既允许用户做执行相应的操作,又要防止因权限设置不合理而潜在的用户越权操作。如在虚拟主机中设置的用户的主目录的权限有问题,其他用户可以采用..反溯到上级目录。进而访问...
  • fuhj02
  • fuhj02
  • 2011年01月08日 00:28
  • 469

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

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

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

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

PowerShell2.0之桌面计算机维护(八)关闭或重启远程计算机

在执行更名主机或添加域操作后,为了使设置生效需要重启计算机。为此需要使用Win32_OperatingSystem WMI类的shutdown()和reboot()方法,要执行的操作由向脚本传递的参数...
  • fuhj02
  • fuhj02
  • 2011年01月14日 23:45
  • 370

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

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

PowerShell2.0之桌面计算机维护(四)审核安全的屏幕保护程序

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

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

Windows Vista和Windows Server 2008的电源计划有大量改进,可以针对使用电池或交流电供电的情况分别设置。如果当前计算机正在使用电池,那么续航时间是个需要关心的问题。而在某些...
  • fuhj02
  • fuhj02
  • 2011年01月12日 00:10
  • 449

数据结构实验之排序七:选课名单

数据结构实验之排序七:选课名单 Time Limit: 1000MS Memory limit: 65536K 题目描述 随着学校规模的扩大,学生人数急剧增加...
  • guoqingshuang
  • guoqingshuang
  • 2015年12月22日 22:54
  • 1479

SDUT3404数据结构实验之排序七:选课名单

#include using namespace std; struct node { char name[15]; struct node *next; }; struct node...
  • nar666
  • nar666
  • 2016年08月03日 22:53
  • 877
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PowerShell2.0之桌面计算机维护(七)性能计数器
举报原因:
原因补充:

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