List top processes on DC

Microsoft.Server.AD.2012.R2.TopCPU.Task (Task)

Task samples the targeted DC 5 times and lists the top process using most of the processor

Element properties:

TargetMicrosoft.Windows.Server.2012.R2.AD.DomainControllerRole
AccessibilityPublic
CategoryCustom
EnabledTrue
RemotableFalse
Timeout300

Member Modules:

ID Module Type TypeId RunAs 
PA WriteAction Microsoft.Windows.ScriptWriteAction Default

Source Code:

<Task ID="Microsoft.Server.AD.2012.R2.TopCPU.Task" Accessibility="Public" Enabled="true" Target="AD2012R2Core!Microsoft.Windows.Server.2012.R2.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:\\" &amp; strComputer &amp; "\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 &amp; "Sample number " &amp; i

objRefresher.Refresh
numproc = 0

For Each Process in objRefreshableItem.ObjectSet
If Process.Name &lt;&gt; "_Total" and Process.Name &lt;&gt; "Idle" Then
If Process.PercentProcessorTime &gt; 1 Then
numproc = numproc + 1
If Process.PercentProcessorTime &lt; 10 Then
WScript.Echo " " &amp; Process.PercentProcessorTime &amp; "% " &amp; Process.Name
Else
If Process.PercentProcessorTime &lt; 100 Then
WScript.Echo " " &amp; Process.PercentProcessorTime &amp; "% " &amp; Process.Name
Else
WScript.Echo " " &amp; Process.PercentProcessorTime &amp; "% " &amp; 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

Call Main()</Script></ScriptBody>
<TimeoutSeconds>300</TimeoutSeconds>
</WriteAction>
</Task>