AlarmInitialScript (Resource)
Element properties: Source Code: <Resource ID="AlarmInitialScript" FileName="DSAlarms.ps1" Accessibility="Internal"/>
File Content: DSAlarms.ps1
Param($selectedAlarmServer, $selectedConnection)
#Todo - we need to have put in a place a debug param
# $(Get-Date -format 'u') + ": SelectedServer: $selectedAlarmServer selectedConnection: $selectedConnection" | Tee-Object -file $env:temp\Alarms.txt -Append
#
# Powershell Script for obtaining all alarms from a chosen connection
#
####debug####
try
{
#Could be more than one with same name across DSs - e.g. localhost is a common one
$selectedConnectionInstances = Get-SCOMClassInstance -DisplayName $selectedConnection
foreach ($selectedConnectionInstance in $selectedConnectionInstances)
{
if ($selectedConnectionInstance.'[Quest.SoSSE.Connections].DSName'.value -eq "$selectedAlarmServer")
{
# we have our connection class based on the right DS name
break;
}
}
# $sampling="selectedConnectionInstance Path: " + $selectedConnectionInstance.Path --- this gives us a path
#This works
#$sampling="selectedConnectionInstance ConnectionName: " + $selectedConnectionInstance.'[Quest.SoSSE.Connections].ConnectionName'.value
#$sampling=$sampling + "`n`nselectedConnectionInstance ConnectionDisplayName: " + $selectedConnectionInstance.'[Quest.SoSSE.Connections].ConnectionDisplayName'.value
#$sampling=$sampling + "`n`nselectedConnectionInstance DSName: " + $selectedConnectionInstance.'[Quest.SoSSE.Connections].DSName'.value
#$(Get-Date -format 'u') + ":" + $sampling | Tee-Object -file "c:\temp\Alarms.txt" -Append
}
catch
{
# throw "We get this error2:" + $_.exception.message
}
####debug####
# Start clean
$ScriptContext.ReturnCollection.Clear()
# We will need a param from the Diagnostic Server grid to pass in here
[bool] $DisplayAgentAlarmsOnly = 0 #0=False,other than 0 = True... Param(2) #pass in whether we want to display agent alarms only
if ($selectedConnection -ne $NULL -and $selectedConnection -ne "")
{
#Instantiate a dsConnections class and get all the instances related to it
$dsAlarmClass = Get-SCOMClass -Name Quest.SoSSE.Alarms
$dsAlarmClassInstances = Get-SCOMClassInstance -Class $dsAlarmClass
foreach ($dsAlarmClassInstance in $dsAlarmClassInstances)
{
#$sampling="Before the alarm loop - Alarm ConnectionName: " + $dsAlarmClassInstance.'[Quest.SoSSE.Alarms].ConnectionName'.value
#$sampling=$sampling + "`n`nselectedConnectionInstance ConnectionName: " + $selectedConnectionInstance.'[Quest.SoSSE.Connections].ConnectionName'.value
# $(Get-Date -format 'u') + ":" + $sampling | Tee-Object -file "c:\temp\Alarms.txt" -Append
#
# So conditions are if "All Connections chosen" we want to display all alarms for a given DS
# OR
# Display alarms for a chosen connection on a given DS
#
# $(Get-Date -format 'u') + ": Ive been called on a refresh action Connection: " + $selectedConnection +
" selectedConnectionInstance ConnectionName: " + $selectedConnectionInstance.'[Quest.SoSSE.Connections].ConnectionName'.value +
" dsAlarmClassInstance DSName: " + $dsAlarmClassInstance.'[Quest.SoSSE.Alarms].DSName'.value +
" selectedConnectionInstance DSName: " + $selectedConnectionInstance.'[Quest.SoSSE.Connections].DSName'.value | Tee-Object -file $env:temp\Alarms.txt -Append
if ((($dsAlarmClassInstance.'[Quest.SoSSE.Alarms].ConnectionName'.value -eq $selectedConnectionInstance.'[Quest.SoSSE.Connections].ConnectionName'.value) -and
($dsAlarmClassInstance.'[Quest.SoSSE.Alarms].DSName'.value -eq $selectedConnectionInstance.'[Quest.SoSSE.Connections].DSName'.value)) -or
(($selectedConnectionInstance.'[Quest.SoSSE.Connections].ConnectionName'.value -eq "All Connections") -and
($dsAlarmClassInstance.'[Quest.SoSSE.Alarms].DSName'.value -eq $selectedConnectionInstance.'[Quest.SoSSE.Connections].DSName'.value)))
{
$dataObject = $ScriptContext.CreateFromObject($dsAlarmClassInstance, "Id=Id,DisplayName=DisplayName,InMaintenanceMode=InMaintenanceMode", $null)
$dataObject["Id"] = $dsAlarmClassInstance.'[Quest.SoSSE.Alarms].Id'.value
$dataObject["AlarmSeverity"] = $dsAlarmClassInstance.'[Quest.SoSSE.Alarms].AlarmSeverity'.value
$dataObject["AlarmName"] = $dsAlarmClassInstance.'[Quest.SoSSE.Alarms].AlarmName'.value
$dataObject["AlarmDisplayName"] = $dsAlarmClassInstance.'[Quest.SoSSE.Alarms].AlarmDisplayName'.value
$dataObject["AlarmFirstRaised"] = $dsAlarmClassInstance.'[Quest.SoSSE.Alarms].AlarmFirstRaised'.value
$dataObject["AlarmErrorText"] = $dsAlarmClassInstance.'[Quest.SoSSE.Alarms].AlarmErrorText'.value
$dataObject["AlarmRequiresAcknowledgement"] = $dsAlarmClassInstance.'[Quest.SoSSE.Alarms].AlarmRequiresAcknowledgement'.value
$dataObject["AlarmLastRaised"] = $dsAlarmClassInstance.'[Quest.SoSSE.Alarms].AlarmLastRaised'.value
$dataObject["AlarmSnoozed"] = [System.Convert]::ToBoolean($dsAlarmClassInstance.'[Quest.SoSSE.Alarms].AlarmSnoozed'.value)
$dataObject["AlarmSnoozedBy"] = $dsAlarmClassInstance.'[Quest.SoSSE.Alarms].AlarmSnoozedBy'.value
$dataObject["AlarmSnoozedUntil"] = $dsAlarmClassInstance.'[Quest.SoSSE.Alarms].AlarmSnoozedUntil'.value
$dataObject["SeverityID"] = $dsAlarmClassInstance.'[Quest.SoSSE.Alarms].SeverityID'.value
$dataObject["ConnectionDisplayName"] = $dsAlarmClassInstance.'[Quest.SoSSE.Alarms].ConnectionDisplayName'.value
$dataObject["TechnologyType"] = $dsAlarmClassInstance.'[Quest.SoSSE.Alarms].TechnologyType'.value
$dataObject["ConnectionName"] = $dsAlarmClassInstance.'[Quest.SoSSE.Alarms].ConnectionName'.value
$dataObject["DSName"] = $dsAlarmClassInstance.'[Quest.SoSSE.Alarms].DSName'.value
# $(Get-Date -format 'u') + ": Connection: " + $selectedConnection + " Alarms: " + $dsAlarmClassInstance.'[Quest.SoSSE.Alarms].AlarmName'.value + " Severity:" +
$dsAlarmClassInstance.'[Quest.SoSSE.Alarms].AlarmSeverity'.value | Tee-Object -file $env:temp\Alarms.txt -Append
$ScriptContext.ReturnCollection.Add($dataObject)
}
}
}