In the following post I demonstrate how you can retrieve all the rejected Review Activities from the last 60 days. I also include the DisplayName, the Decision and the Comment of the Reviewer.
Hope this help some people out there.
# Smlets Module
Import-module -name smlets
# Capture the SR Failed Status
$RAStatusFailed = Get-SCSMEnumeration -Name ActivityStatusEnum.Failed$
# Capture the date from where we are searching
$RAModifiedDay = (get-date).Adddays(-60)
# Get the Manual Activity Class
$RAClass = Get-SCSMClass -Name System.WorkItem.Activity.ReviewActivity$
# Get the Criteria Class
$CriteriaClass = “Microsoft.EnterpriseManagement.Common.EnterpriseManagementObjectCriteria”
# Define the filter
$Filter = "Status = '$($RAStatusFailed.Id)' AND LastModified > '$RAModifiedDay'"
# Create the Criteria Object
$CriteriaObject = new-object $CriteriaClass $Filter,$RAClass
# Get the Reviewer relationship classes
$RAHasReviewerClass = Get-SCSMRelationshipClass System.ReviewActivityHasReviewer$
$ReviewerIsUserClass = Get-SCSMRelationshipClass System.ReviewerIsUser$
# Get the RA rejected in the last 60 days
Get-SCSMObject -criteria $CriteriaObject |
ForEach-Object -Process {
# Current Review Activity
$RA = $_
# Get the rejected review(s) on this RA
$RejectedReview = Get-SCSMRelatedObject -SMObject $RA -Relationship $RAHasReviewerClass | Where {$_.decision.displayname -eq 'Rejected'}
foreach ($item in $RejectedReview)
{
# Get the reviewer information
$ReviewerObj = Get-SCSMRelatedObject -SMObject $Item -Relationship $ReviewerIsUserClass
# Create a new PowerShell Object
[pscustomobject][ordered]@{
ReviewActivityName = $RA.Name
ReviewerDisplayName = $ReviewerObj.displayname
Decision = $item.decision.displayname
Comments = $item.comments -as [string]
}
}
}#| Format-List