SCSM 2012 – Vorfall (Incident) Benachrichtigung nach 30 Minuten ohne Zuweisung

Es gibt gute Gründe, im System Center Service Manager 2012, eine E-Mail Benachrichtigung an eine Supportgruppe versenden zu lassen, falls einem Vorfall (Incident) über einen gewissen Zeitraum hinweg kein Bearbeiter zugewiesen wurde. Diese Benachrichtigung lässt sich grundsätzlich zwar über Incident-Schwellenwerte über die Incident-Administration einstellen, allerdings wird dabei die Warnschwelle im SCSM 2012 verwendet und diese ist eigentlich für andere Dinge gedacht. Außerdem führt die Verwendung von Warnschwellen dazu, dass der Incident entsprechend markiert wird. Das ist aber nicht gewünscht, wenn ich nur eine „Erinnerungsmail“ versenden möchte.
Man muss also nach einer anderen Lösung suchen.

Andreas Baumgarten (MVP) hat zu genau diesem Zweck eine Lösung über ein PowerShell Skript bereit gestellt.

Ich habe das Skript wie beschrieben eingesetzt. Allerdings auf einem Windows Server 2012 R2 mit dem System Center Service Manager 2012 R2 eingesetzt. Es funktioniert wie beschrieben. Bitte seine Anleitung und die notwendigen Voraussetzungen beachten.

Das PowerShell Skript wird in der Lösung von Andreas Baumgarten in regelmäßigen Abständen, z.B. über die Windows Server Aufgabenplanung, ausgeführt. Dabei wird immer dann eine E-Mail an die Empfänger einer Supportgruppe gesendet, wenn es mindestens einen Incident aus Ihrer Supportgruppe gibt, der älter als eine konfigurierbare Zeitspanne ist und dem noch kein Bearbeiter zugewiesen worden ist. Es wird also in regelmäßigen Abständen eine E-Mail versendet mit der Information darüber, welche Incidents betroffen sind. Unter Umständen werden identische E-Mails mehrfach versendet; vor allem dann, wenn man das Intervall sehr kurz wählt in dem das PowerShell Skript wiederholt ausgeführt wird.

Meine Anforderungen waren bei einem Kunden etwas abweichend:

  • E-Mails sollen an eine Supportgruppe gesendet werden, wenn diese seit 30 Minuten nicht zugewiesen wurden.
  • E-Mails sollen für jeden Vorfall einzeln versendet werden, nicht gemeinsam in einer Sammel-E-Mail.
  • Die Überprüfung soll alle 5 Minuten stattfinden.
  • Eine E-Mail für einen Incident soll nur ein einziges Mal versendet werden, nicht jedes Mal wenn das Skript ausgeführt wird.

Als Basis verwende ich das Skript von Andreas Baumgarten (Danke für die Veröffentlichung) und habe es für meine Zwecke verändert: 

  • Die Angabe der Supportgruppe im SCSM erfolgt wie im Original-Skript.
  • Die Angabe des Zeitraumes, nachdem die E-Mail gesendet werden soll, erfolgt ebenfalls wie im Original-Skript.
  • Die Überprüfung alle 5 Minuten realisiere ich über einen Windows Server Task in der Aufgabenplanung. Den Task lasse ich mit den Anmeldeinformationen des Service Manager Dienstkontos ausführen.
  • Der Einzelversand wird über eine Umstrukturierung innerhalb des Skriptes erreicht.
  • Das Skript, bzw. die Skripte (für mehrere Supportgruppen jeweils ein eigenes Skript) speichere ich auf dem SCSM Management Server im Pfad: c:\SCSMSkripte
  • Das Ziel, jede E-Mail nur ein einziges Mal zu versenden habe ich darüber realisiert, dass ich in einen Ordner eine Datei schreiben lasse wenn eine Mail versendet wurde. Diese bekommt als Dateinamen die Incident-Nummer. Die Existenz der Datei wird vorher geprüft und nur dann eine E-Mail versendet, wenn sie nicht existiert.

Hier mein abgeändertes Skript:

# Configure your mail server, the recipient and the sender of the mail 
# $smtphost=”mailserver.yourdomain.local” 
# $to=”[email protected]” 
# $from=”[email protected]” 
 
$smtphost=”yourmailserver.domain.intern” 
$to=”[email protected], [email protected]” 
$from=”[email protected]” 
 
# Configure time value Incident is created before xy minutes  
$CreatedBefore = 30
#Configure Support GroupTier Queue Friendly Name (Displayname)
$DisplayNSupportGrp = 'System Center Gruppe'
 
# Send-Mail function 
function Send-Mail 
	{ 
		param($From,$To,$Subject,$Body) 
		$smtp = new-object system.net.mail.smtpClient($smtphost) 
		$mail = new-object System.Net.Mail.MailMessage 
		$mail.from= $From 
		$mail.to.add($To) 
		$mail.subject= $Subject 
		$mail.body= $Body 
		$mail.isbodyhtml=$true 
		$smtp.send($mail) 
	}
# Some other variables    
$TierQueue = Get-SCSMEnumeration|?{$_.DisplayName -eq $DisplayNSupportGrp}
$BeforeDate = (get-date).AddMinutes(-$CreatedBefore).ToString("MM/dd/yyy HH:mm:ss")
$Active = Get-SCSMEnumeration IncidentStatusEnum.Active$
$TierDisplayname = $TierQueue.Displayname
$AssignedUserObjectRelClass = Get-SCSMRelationshipClass System.WorkItemAssignedToUser
$IncidentClass = Get-SCSMClass -Name System.WorkItem.Incident$
 
 
#Get all acitiv incidents from a tier Queue created xy minutes before
$Incidents = @(Get-SCSMObject -Class $IncidentClass | where {($_.Status -eq $Active -AND $_.TierQueue -eq $TierQueue -AND ($_.CreatedDate) -lt $BeforeDate)})
 
If ($Incidents.count -gt 0)
{
 
#Get all unassigned incidents from list
foreach ($Incident in $Incidents)
	{
    
	#Dateiname
    $filename = $incident.Id
 
    $AssignedUser = Get-SCSMRelatedObject -SMObject $Incident -Relationship $AssignedUserObjectRelClass 
 
		If ($AssignedUser.Displayname -eq $NULL)
			{
				$AssignedUser
 
            If (!(Test-Path -Path "c:\SCSMSkripte\Temp\$filename"))
                {
				$Mailtext = "
                Sehr geehrte Damen und Herren, <br><br> 
			Das Ticket mit der Nummer<b> "+ $Incident.Id +"</b> wurde Ihrer Supportgruppe <b>$DisplayNSupportGrp</b>
			zugeordnet, jedoch noch keinem Mitarbeiter zugewiesen. <br>
                <br>Das Ticket wurde erstellt am: "+ $Incident.CreatedDate +"<br> 
                <br><b>Ticketpriorität: </b>"+ $Incident.Priority +"<br>
                <br><b>Ticketbeschreibung:</b><br> "+ $Incident.Description +"<br>
                <br><br><br>
                
                ----------------------------------------------------------------------------------------------------<br>
                Diese E-Mail wurde von System Center Service Manager automatisch generiert.<br>
                <br>
                Mit freundlichen Grüßen,<br>
                Ihr Team vom IT Service<br>"
                          
            
                #Datei schreiben
                new-item c:\SCSMSkripte\Temp\$filename -Type File
 
                #Mail versenden
                $subject = “Nichtzugewiesener Incident: “+ $TierQueue.Displayname + “, ” + $Incident.Id
	            $body = $Mailtext
                Send-Mail $from $to $subject $body
 
                }
 
			}
 
	}
} 


Die Ergebnis E-Mail sieht dann beispielsweise so aus:
091214 2129 SCSM2012Vor1

Durch den Aufgabenplaner wird der Scheduled-Task alle 5 Minuten ausgeführt:
091214 2129 SCSM2012Vor2

In einem Einzigen Task kann man viele Skripte für viele Supportgruppen abarbeiten lassen:

091214 2129 SCSM2012Vor3

Die Dateien die in meinem Ordner C:\SCSMSkripte\Temp abgelegt werden sehen folgendermaßen aus: 

091214 2129 SCSM2012Vor4

 


Dieses Skript bzw. diese Vorgehensweise wurde vom Autor auf den hier beschriebenen Plattformen unter den angegebenen Rahmenbedingungen erfolgreich getestet. Wenn Sie eigene Erfahrungen oder Fragen zum Einsatz haben, freuen wir uns über Ihre Kommentare.

Haftungsausschluss: Die hier beschriebenen Scripts und Vorgehensweisen werden im gegenwärtigen Zustand und ohne jegliche Gewährleistung zur Verfügung gestellt. Alle Risiken, die aus der Verwendung oder Ausführung der hier beschriebenen Scripts und Vorgehensweisen entstehen, unterliegen vollständig Ihrer Verantwortung. In keinem Fall kann der Autor des Blog-Beitrages oder andere an der Bereitstellung der Inhalte Beteiligte im Zusammenhang mit den hier beschriebenen Scripts und Vorgehensweisen irgendwelchen Support leisten, noch für irgendwelche Schäden haftbar gemacht werden (einschließlich und ohne Einschränkung aller Schäden durch Geschäftsverluste, Geschäftsausfälle, den Verlust von Geschäftsinformationen oder andere finanzielle Verluste), die aus der Verwendung oder der Nichteignung zur Verwendung der hier beschriebenen Scripts und Vorgehensweisen entstehen.

Werbung

Veröffentlicht:

Autor:

Kommentare

Eine Antwort zu „SCSM 2012 – Vorfall (Incident) Benachrichtigung nach 30 Minuten ohne Zuweisung“

  1. Dominik

    Hallo,

    vielen Dank für das Script. Das hat sehr geholfen.
    Ich habe das Script noch etwas erweitert:
    – Mail wird an die Supportgruppe geschickt. Somit kann das Script für alle Gruppen laufen.
    – Alte Dateien werden automatisch bereinigt

    VG,
    Dominik

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

New articles in english

Werbung

Themen

Active Directory Administrative Vorlagen Anleitung AppV5 Autopilot Azure Azure AD ConfigMgr Deployment GPO Gruppenrichtlinien Guide How-To Linux Microsoft Microsoft Intune Office Office365 PowerShell Public Preview SCCM2012R2 SCSM2012R2 ServiceMgr Sicherheit TechNet Windows Windows 10 Windows10 Windows Server 2012 Windows Server 2012R2

Hinweise zum Affiliate-Marketing

Auf diesen Seiten werden auch Affiliate Marketing Links angezeigt. Diese sind meistens an dem kleinen „€“ oder einem „*“ dahinter zu erkennen. Der Betreiber dieser Seite erhält beim Kauf über diesen Link eine Provision, ohne das es den Verkaufspreis beeinflusst. Diese Einnahmen tragen zur Finanzierung der Seite bei.