PowerShell/SCSM - My first steps

2014/08/23 | 4 minute read |

I recently started to work withSystem Center Service Manager 2012 R2(also known as SCSM) which provides provides an integrated platform for automating and adapting an organization’s IT service management best practices, such as those found in Microsoft Operations Framework (MOF) and Information Technology Infrastructure Library (ITIL). It provides built-in processes for incident and problem resolution, change control, and asset lifecycle management.

This platform can easily be integrated with the other products of the System Center suite. In my case we are using System Center Orchestrator at work (also known as SCO or SCORCH) to handle the background automation part.

I really started to play and learn about SCSM 2 months ago with the help of the consultants fromProsum(David Gibbons) andCireson(Will Udovich). Those guys also did a really awesome work and put in place some awesome processes using PowerShell Magic/SCSM and SCORCH, Thanks guys!

Getting Started with SMLets to manage SCSM

Today I will show a few examples using the SMLets module that I learned in the past weeks. SMLets download and documentation can be found here: https://smlets.codeplex.com/

Before I start exploring some of the commands, I just wanted to point-out a very neat tool created by Dieter Gasser called SCSM Entity Explorer. This allow you to browse SCSM Classes and Enumerations. Because there is not a Smlets for everything, you can use the very flexible Get-SCSMObject and Get-SCSMClass to retrieve additional information.

SCCM Entity Explorer

Get the Service Requests objects

# Get List of all Service Request
Get-SCSMObject -Class (Get-SCSMClass -Name System.WorkItem.ServiceRequest$)

Get the Service Requestscreated in the last 2 days

# Get List of all Service Request modified in the last 2 days
Get-SCSMObject -Class (Get-SCSMClass -Name System.WorkItem.ServiceRequest$) -Filter "LastModified -gt $((Get-Date).Adddays(-2))"

Get the Service Requests created in the last 2 days with a status: In Progress

Here you can see how to filter on more than one criteria using the Get-SCSMObject.

# Get List of all Service Request modified in the last 2 days with an InProgress status
$ServiceRequestClass = Get-SCSMClass -Name System.WorkItem.ServiceRequest$
$ServiceRequestInProgressStatus = Get-SCSMEnumeration -Name ServiceRequestStatusEnum.InProgress$
$ServiceRequestInProgressStatusID = $ServiceRequestInProgressStatus.ID
$TwoDaysAgo = $((Get-Date).Adddays(-2))

Get-SCSMObject -Class $ServiceRequestClass -Filter "LastModified > '$TwoDaysAgo' AND Status = '$ServiceRequestInProgressStatusID'"

Get related object(s) of the Service Request

# Related Object of a Service request
$SRTicket = Get-SCSMObject -Class $ServiceRequestClass -Filter "LastModified > '$TwoDaysAgo' AND Status = '$ServiceRequestInProgressStatusID'" | Select-Object -Last 1
Get-SCSMRelatedObject -SMObject $SRTicket

Get relationship object(s)of the Service Request

# Retrieve Relationship Object(s)
Get-SCSMRelationshipObject -BySource $SRTicket

Get relationship object(s) TargetObject and RelationshipIDof the Service Request

# Retrieve Relationship Object. Select the property TargetObject and RelationshipID
Get-SCSMRelationshipObject -BySource $SRTicket |
    Select-Object -Property TargetObject,RelationshipID

For the next step we will re-use the Active Directory Object type (ID:d96c8b59-8554-6e77-0aa7-f51448868b43)

Get relationship object(s) and filter on Active Directory objects Those elements are queried to the CMDB of SCSM, not to ActiveDirectory.

# Retrieve Relationship Objects with a specific relationship (in this case AD objects(Computers, Users and Groups)).
Get-SCSMRelationshipObject -BySource $SRTicket -Filter "RelationshipID -eq 'd96c8b59-8554-6e77-0aa7-f51448868b43'"

Resources

#

Terminology

See extensive SCSM Glossary (technet)

Configuration Item ITIL defines a configuration item (CI) as any component that needs to be managed in order to deliver an IT Service. These could be a piece of hardware, software, documentation, a user or group, location, or network.

Work Item Incidents, change requests, and problems are represented as work items and stored in the Service Manager database.

Queue In Service Manager, a queue is a container that contains work items. When you change the support group on an incident in Service Manager, you are sending the incident to another queue.

Class A named descriptor for a set of objects that share the same attributes, operations, methods, relationships, and behaviors. For example, all logical hard disks are members of the logical disk class. Properties of the logical disk class include size, file system, and defrag level. Other attributes members of a class can share are relationships and behaviors.

Service Request A work item that is used to request an existing IT service that is being offered.

Management Pack Management packs are eXtensible Markup Language (XML) files containing definitions that define not only data models but also objects such as views for the Service Manager console, workflows, groups, queues, tasks, forms, connectors, and so on. All customizations are stored in MPs. For example, if you want to modify the incident form, you save your modification from the Authoring Tool in an MP and then import it into Service Manager.

Leave a comment