AlarmRefreshScript (Resource)

Element properties:

TypeResource
File NameDSAlarms.ps1
AccessibilityInternal

Source Code:

<Resource ID="AlarmRefreshScript" 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)
}
}
}