<Task ID="Microsoft.Server.AD.2012.TopCPU.Task" Accessibility="Public" Enabled="true" Target="AD2012Core!Microsoft.Windows.Server.2012.AD.DomainControllerRole" Timeout="300" Remotable="false">
<Category>Custom</Category>
<WriteAction ID="PA" TypeID="Windows!Microsoft.Windows.ScriptWriteAction">
<ScriptName>AD_TopCPU.vbs</ScriptName>
<Arguments/>
<ScriptBody><Script>'*************************************************************************
' Script Name - Top CPU Utilization Monitor
'
' Purpose - List processes using more than 1% of processor time.
'
' (c) Copyright 2014, Microsoft Corporation, All Rights Reserved
' Proprietary and confidential to Microsoft Corporation
'*************************************************************************
Option Explicit
SetLocale("en-us")
Sub Main()
On Error Resume Next
strComputer = "."
Set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set objServicesCimv2 = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
If Err = 0 Then
Set objRefreshableItem = _
objRefresher.AddEnum(objServicesCimv2,"Win32_PerfFormattedData_PerfProc_Process")
objRefresher.Refresh
Wscript.Echo "List processes using more than 1% of processor time."
Wscript.Echo "Sample 5 times waiting 2 seconds between samples."
For i = 1 to 5
Wscript.Sleep 2000
Wscript.Echo vbnewLine & "Sample number " & i
objRefresher.Refresh
numproc = 0
For Each Process in objRefreshableItem.ObjectSet
If Process.Name <> "_Total" and Process.Name <> "Idle" Then
If Process.PercentProcessorTime > 1 Then
numproc = numproc + 1
If Process.PercentProcessorTime < 10 Then
WScript.Echo " " & Process.PercentProcessorTime & "% " & Process.Name
Else
If Process.PercentProcessorTime < 100 Then
WScript.Echo " " & Process.PercentProcessorTime & "% " & Process.Name
Else
WScript.Echo " " & Process.PercentProcessorTime & "% " & Process.Name
End If
End If
End If
End If
Next
If numproc = 0 Then
WScript.Echo " No processes were using more than 1% of the processor"
End If
Next
Else
WScript.Echo Err.Description
End If
End Sub