I will be posting a series of PowerShell snippets that you can use together with Service Manager. This first one is a function called “Add-SRComment” it is simply used whenever you would like to add an End User or Analyst comment to one of your Service Requests. I’ve been using this a lot when doing automated stuff in SCO and SMA lately.
The function have the following parameters:
-SRObject
Requires the actual SR object to which you would like to add the comment.
-Comment
Requires the comment to add to the action log
-EnteredBy
Requires the name of the person who’s writing the comment
-AnalystComment
Switch to Analyst comment instead of End User comment
-IsPrivate
Switch to a Private comment instead of a public comment
The script itself:
# This function adds a comment to the SR Action Log
# NOTE: SMlets must be loaded in order for the function to work
Function Add-SRComment {
param (
[parameter(Mandatory=$True,Position=0)]$SRObject,
[parameter(Mandatory=$True,Position=1)]$Comment,
[parameter(Mandatory=$True,Position=2)]$EnteredBy,
[parameter(Mandatory=$False,Position=3)][switch]$AnalystComment,
[parameter(Mandatory=$False,Position=4)][switch]$IsPrivate
)
# Make sure that the SR Object it passed to the function
If ($SRObject.Id -ne $NULL) {
If ($AnalystComment) {
$CommentClass = "System.WorkItem.TroubleTicket.AnalystCommentLog"
$CommentClassName = "AnalystCommentLog"
} else {
$CommentClass = "System.WorkItem.TroubleTicket.UserCommentLog"
$CommentClassName = "EndUserCommentLog"
}
# Generate a new GUID for the comment
$NewGUID = ([guid]::NewGuid()).ToString()
# Create the object projection with properties
$Projection = @{__CLASS = "System.WorkItem.ServiceRequest";
__SEED = $SRObject;
EndUserCommentLog = @{__CLASS = $CommentClass;
__OBJECT = @{Id = $NewGUID;
DisplayName = $NewGUID;
Comment = $Comment;
EnteredBy = $EnteredBy;
EnteredDate = (Get-Date).ToUniversalTime();
IsPrivate = $IsPrivate.ToBool();
}
}
}
# Create the actual comment
New-SCSMObjectProjection -Type "System.WorkItem.ServiceRequestProjection" -Projection $Projection
} else {
Throw "Invalid Service Request Object!"
}
}

You can also download the whole script as a file here: Add-SRComment
