SnapMgrExchBackupJobDiscovery

Bostwick.SnapManager.SnapMgrExchBackupJobDiscovery (Discovery)

Discovers SnapMgr Exchange Backup jobs from tasks scheduler

Element properties:

TargetBostwick.SnapManager.SnapMgrExchServer
EnabledTrue
Frequency3600
RemotableFalse

Object Discovery Details:

Discovered Classes and their attribuets:
  • Bostwick.SnapManager.SnapMgrExchBackupJob
    • Name
    • Enabled
    • State
    • ServiceAccount
    • Interval
    • Duration
    • StartTime
    • ExecutionTimeLimit
    • MountPointDir
    • RemoteAdditionalCopyBackup
    • RetainDays
    • RetainUtmDays
    • StorageGroup
    • DisplayName

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.Windows.TimedPowerShell.DiscoveryProvider Default

Source Code:

<Discovery ID="Bostwick.SnapManager.SnapMgrExchBackupJobDiscovery" Target="Bostwick.SnapManager.SnapMgrExchServer" Enabled="true" ConfirmDelivery="false" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="Bostwick.SnapManager.SnapMgrExchBackupJob">
<Property TypeID="Bostwick.SnapManager.SnapMgrExchBackupJob" PropertyID="Name"/>
<Property TypeID="Bostwick.SnapManager.SnapMgrExchBackupJob" PropertyID="Enabled"/>
<Property TypeID="Bostwick.SnapManager.SnapMgrExchBackupJob" PropertyID="State"/>
<Property TypeID="Bostwick.SnapManager.SnapMgrExchBackupJob" PropertyID="ServiceAccount"/>
<Property TypeID="Bostwick.SnapManager.SnapMgrExchBackupJob" PropertyID="Interval"/>
<Property TypeID="Bostwick.SnapManager.SnapMgrExchBackupJob" PropertyID="Duration"/>
<Property TypeID="Bostwick.SnapManager.SnapMgrExchBackupJob" PropertyID="StartTime"/>
<Property TypeID="Bostwick.SnapManager.SnapMgrExchBackupJob" PropertyID="ExecutionTimeLimit"/>
<Property TypeID="Bostwick.SnapManager.SnapMgrExchBackupJob" PropertyID="MountPointDir"/>
<Property TypeID="Bostwick.SnapManager.SnapMgrExchBackupJob" PropertyID="RemoteAdditionalCopyBackup"/>
<Property TypeID="Bostwick.SnapManager.SnapMgrExchBackupJob" PropertyID="RetainDays"/>
<Property TypeID="Bostwick.SnapManager.SnapMgrExchBackupJob" PropertyID="RetainUtmDays"/>
<Property TypeID="Bostwick.SnapManager.SnapMgrExchBackupJob" PropertyID="StorageGroup"/>
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
</DiscoveryTypes>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedPowerShell.DiscoveryProvider">
<IntervalSeconds>3600</IntervalSeconds>
<SyncTime/>
<ScriptName>SnapMgrExchBackupJobDiscovery.ps1</ScriptName>
<ScriptBody><Script>

param(
[string]$SourceId,
[string]$ManagedEntityId,
[string]$server)

$oAPI = new-object -comObject "MOM.ScriptAPI"
$Discovery = $oAPI.CreateDiscoveryData(0, $SourceId, $ManagedEntityId)


Function Get-ScheduleService
{
New-Object -ComObject schedule.service
} #end Get-ScheduleService

Function New-TaskObject($path)
{
$taskObject = Get-ScheduleService
$taskObject.Connect()
if(-not $path) { $path = "\" }
$taskObject.GetFolder($path)
} #end New-TaskObject
$folder = New-TaskObject
$tasks = @()
$folder.gettasks(0)|?{([xml]$_.xml).task.actions.exec.command -eq "c:\program files\netapp\snapmanager for exchange\smejoblauncher.exe"}|%{
$item = $_
[xml]$xml = $item.xml
$arguments = new-object psobject
$xml.task.actions.exec.arguments -split ' -'|%{
$argitem = $_
if($argitem -ne 'new-backup'){
$taskdata = $argitem -split ' '
if($taskdata[0] -eq 'mountpointdir'){
$split = ($taskdata|select -last ($taskdata.count-1)) -join ' '
$arguments |add-member noteproperty $taskdata[0] $split
}
Else{
$arguments |add-member noteproperty $taskdata[0] $taskdata[1]
}

}
}
switch($item.State){
0{$state="Unknown"}
1{$state="Disabled"}
2{$state="Queued"}
3{$state="Ready"}
4{$state="Running"}
}
$ErrorActionPreference = 'silentlycontinue'
$tasks +=new-object psobject -property @{
Enabled = [bool]$item.Enabled
#LastRunTime = $item.LastRunTime
LastTaskResult = $item.LastTaskResult
Name = $item.Name #
#NextRunTime = $item.NextRunTime
#NumberOfMissedRuns = $item.NumberOfMissedRuns
Path = $item.Path
State = $state
ServiceAccount = $xml.task.principals.principal.userid
interval = $xml.task.triggers.calendartrigger.repetition.interval
duration= $xml.task.triggers.calendartrigger.repetition.duration
StartTime = [datetime]$xml.task.triggers.calendartrigger.startboundary
executiontimelimit = $xml.task.settings.executiontimelimit
#ManagementGroup =$arguments.ManagementGroup
MountPointDir =$arguments.MountPointDir
RemoteAdditionalCopyBackup =$arguments.RemoteAdditionalCopyBackup
RetainDays =$arguments.RetainDays
RetainUtmDays =$arguments.RetainUtmDays
Server =$arguments.Server
StorageGroup =$arguments.StorageGroup
#UseMountPoint =$arguments.UseMountPoint
command = $xml.task.actions.exec.command
}

$ErrorActionPreference = 'continue'
}




Function Create-BackupJobDiscoveryData {
param($taskData)


$Instance = $Discovery.CreateClassInstance("$MPElement[Name='Bostwick.SnapManager.SnapMgrExchBackupJob']$")
$Instance.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", [string]$taskData.name)
$Instance.AddProperty("$MPElement[Name='Bostwick.SnapManager.SnapMgrExchBackupJob']/Name$", [string]$taskData.name)
$Instance.AddProperty("$MPElement[Name='Bostwick.SnapManager.SnapMgrExchBackupJob']/Enabled$", [BOOL]$taskData.Enabled)
$Instance.AddProperty("$MPElement[Name='Bostwick.SnapManager.SnapMgrExchBackupJob']/State$", [string]$taskData.State)
$Instance.AddProperty("$MPElement[Name='Bostwick.SnapManager.SnapMgrExchBackupJob']/ServiceAccount$", [string]$taskData.ServiceAccount)
$Instance.AddProperty("$MPElement[Name='Bostwick.SnapManager.SnapMgrExchBackupJob']/Interval$", [string]$taskData.Interval)
$Instance.AddProperty("$MPElement[Name='Bostwick.SnapManager.SnapMgrExchBackupJob']/Duration$", [string]$taskData.Duration)
$Instance.AddProperty("$MPElement[Name='Bostwick.SnapManager.SnapMgrExchBackupJob']/StartTime$", [datetime]$taskData.StartTime)
$Instance.AddProperty("$MPElement[Name='Bostwick.SnapManager.SnapMgrExchBackupJob']/ExecutionTimeLimit$", [string]$taskData.ExecutionTimeLimit)
$Instance.AddProperty("$MPElement[Name='Bostwick.SnapManager.SnapMgrExchBackupJob']/MountPointDir$", [string]$taskData.MountPointDir)
$Instance.AddProperty("$MPElement[Name='Bostwick.SnapManager.SnapMgrExchBackupJob']/RemoteAdditionalCopyBackup$", [string]$taskData.RemoteAdditionalCopyBackup)
$Instance.AddProperty("$MPElement[Name='Bostwick.SnapManager.SnapMgrExchBackupJob']/RetainDays$", [int]$taskData.RetainDays)
$Instance.AddProperty("$MPElement[Name='Bostwick.SnapManager.SnapMgrExchBackupJob']/RetainUtmDays$", [int]$taskData.RetainUtmDays)
$Instance.AddProperty("$MPElement[Name='Bostwick.SnapManager.SnapMgrExchBackupJob']/StorageGroup$", [string]$taskData.StorageGroup)
$Instance.AddProperty("$MPElement[Name='Bostwick.SnapManager.SnapMgrExchBackupJob']/LastTaskResult$", [string]$taskData.LastTaskResult)
$instance.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $SERVER)
$Discovery.AddInstance($Instance)
}

foreach($taskData in $tasks){
Create-BackupJobDiscoveryData -taskData $taskData
}

$discovery
</Script></ScriptBody>
<Parameters>
<Parameter>
<Name>SourceId</Name>
<Value>$MPElement$</Value>
</Parameter>
<Parameter>
<Name>ManagedEntityId</Name>
<Value>$Target/Id$</Value>
</Parameter>
<Parameter>
<Name>Server</Name>
<Value>$Target/Host/Property[Type='Windows!Microsoft.Windows.Computer']/PrincipalName$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>300</TimeoutSeconds>
</DataSource>
</Discovery>