WUGDeviceSpecificMonitorDataSource (DataSourceModuleType)

Element properties:

TypeDataSourceModuleType
IsolationAny
AccessibilityPublic
RunAsDefault
OutputTypeSystem.PropertyBagData

Member Modules:

ID Module Type TypeId RunAs 
Scheduler DataSource System.Scheduler Default
WUGDeviceSpecificMonitorDataSourceProbeAction ProbeAction Microsoft.Windows.PowerShellPropertyBagProbe Default

Source Code:

<DataSourceModuleType Accessibility="Public" ID="WUGDeviceSpecificMonitorDataSource">
<Configuration>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="WUGDataSource" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="WUGServer" type="xsd:string"/>
</Configuration>
<ModuleImplementation>
<Composite>
<MemberModules>
<DataSource ID="Scheduler" TypeID="System!System.Scheduler">
<Scheduler>
<SimpleReccuringSchedule>
<Interval>300</Interval>
<SyncTime/>
</SimpleReccuringSchedule>
<ExcludeDates/>
</Scheduler>
</DataSource>
<ProbeAction TypeID="Windows!Microsoft.Windows.PowerShellPropertyBagProbe" ID="WUGDeviceSpecificMonitorDataSourceProbeAction">
<ScriptName>WUG_Device_specific_Monitor_DataSource_script.ps1</ScriptName>
<ScriptBody><Script>
param(
[string]$WUGDataSource,
[string]$WUGServer
)


$Domain = "."+([System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()).name
$oAPI = new-object -comObject "MOM.ScriptAPI"

function Get-DatabaseData {
[CmdletBinding()]
param (
[string]$connectionString,
[string]$query,
[switch]$isSQLServer
)
#Credit for Function goes to Don Jones
#url
#https://technet.microsoft.com/en-us/magazine/hh855069.aspx
if ($isSQLServer) {
Write-Verbose 'in SQL Server mode'
$connection = New-Object -TypeName System.Data.SqlClient.SqlConnection
} else {
Write-Verbose 'in OleDB mode'
$connection = New-Object -TypeName System.Data.OleDb.OleDbConnection
}
$connection.ConnectionString = $connectionString
$command = $connection.CreateCommand()
$command.CommandText = $query
if ($isSQLServer) {
$adapter = New-Object -TypeName System.Data.SqlClient.SqlDataAdapter $command
} else {
$adapter = New-Object -TypeName System.Data.OleDb.OleDbDataAdapter $command
}
$SQLdataset = New-Object -TypeName 'System.Data.DataSet'
$adapter.Fill($SQLdataset)|out-null
$SQLdataset.Tables[0]
}

Function Create-MonitorHealthData {
param($monitorData)

$texttohash = $MonitorData.MonitorTypeID.tostring() +"_"+$MonitorData.DEVICEID+"_"+$MonitorData.WUGServer.ToUpper()
$hasher = new-object System.Security.Cryptography.SHA1Cng
$toHash = [System.Text.Encoding]::UTF8.GetBytes($TextToHash)
$hashByteArray = $hasher.ComputeHash($toHash)
$sb = New-Object System.Text.StringBuilder
foreach ($byte in $hashByteArray) {
$sb.Append($byte.ToString('x2')) | Out-Null
}
$monitor_KEY = ($sb.ToString()).substring(0,20)

$PropertyBag = $oAPI.CreatePropertyBag()
$PropertyBag.AddValue('MonitorKey',$monitor_KEY)
$PropertyBag.AddValue('MON_STS_ID',[int]$monitorData.MON_STS_ID)

#$oAPI.AddItem($PropertyBag)
$PropertyBag

}



$sqlQuery1 = "
SELECT Device.nDeviceID AS DEVICEID, ActiveMonitorType.nActiveMonitorTypeID AS MONITORTYPEID,

'$wugserver' AS WUGSERVER, PivotActiveMonitorTypeToDevice.nMonitorStateID AS MON_STS_ID
FROM ActiveMonitorType INNER JOIN
PivotActiveMonitorTypeToDevice ON ActiveMonitorType.nActiveMonitorTypeID = PivotActiveMonitorTypeToDevice.nActiveMonitorTypeID INNER JOIN
Device ON PivotActiveMonitorTypeToDevice.nDeviceID = Device.nDeviceID INNER JOIN
MonitorState ON PivotActiveMonitorTypeToDevice.nMonitorStateID = MonitorState.nMonitorStateID "



$sqlData1 =Get-DatabaseData -query $sqlQuery1 -isSQLServer -connectionString $WUGDataSource

foreach($monitor in $sqlData1){
Create-MonitorHealthData -monitorData $monitor
}
#$oAPI.ReturnItems()




</Script></ScriptBody>
<Parameters>
<Parameter>
<Name>WUGDataSource</Name>
<Value>$Config/WUGDataSource$</Value>
</Parameter>
<Parameter>
<Name>WUGServer</Name>
<Value>$Config/WUGServer$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>200</TimeoutSeconds>
</ProbeAction>
</MemberModules>
<Composition>
<Node ID="WUGDeviceSpecificMonitorDataSourceProbeAction">
<Node ID="Scheduler"/>
</Node>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.PropertyBagData</OutputType>
</DataSourceModuleType>