Using PowerShell to Check DataWarehouse Job Module Status

I have had many times where I would want to see what is going on with all the ETL jobs, MPSync, DWMaitenance and the cubes for ServiceManager.  So to make it easier I created this simple PowerShell script to go through all the jobs and their modules inside and the count in each status.  It's a very simple script but has helped me many times when I am troubleshooting ETL issues.

import-module "C:\Program Files\Microsoft System Center 2012\Service Manager\Microsoft.EnterpriseManagement.Warehouse.Cmdlets.psd1"

$DWMGMT = "localhost"

$jobs = get-scdwjob -computername $DWMGMT

 

foreach ($job in $jobs)

    {

        $jobmodule = get-scdwjobmodule -jobname $job.name -computername $DWMGMT

        $completedjobs = $jobmodule | ? {$_.Status -eq "Completed" -and $_.jobname -eq $job.name}

        $runningjobs = $jobmodule | ? {$_.Status -eq "Running" -and $_.jobname -eq $job.name}

        $notstartedjobs = $jobmodule | ? {$_.Status -eq "Not Started" -and $_.jobname -eq $job.name}

        $waitingjobs = $jobmodule | ? {$_.Status -eq "Waiting" -and $_.jobname -eq $job.name}

        $failedjobs = $jobmodule | ? {$_.Status -eq "Failed" -and $_.jobname -eq $job.name}

        write-host "Completed Jobs: " $completedjobs.count "`t" "`t" "Running Jobs: "$runningjobs.count "`t" "Not Started Jobs: "$notstartedjobs.count "`t" "Waiting Jobs:" $waitingjobs.count "`t" "Failed Jobs:" $failedjobs.count "`t" $job.name

    }

Below is the output in PowerShell ISE