Function Throw-EmptyDiscovery
{
param($SourceId, $ManagedEntityId)
$oDiscoveryData = $g_API.CreateDiscoveryData(0, $SourceId, $ManagedEntityId)
Log-Event $FAILURE_EVENT_ID $EVENT_TYPE_WARNING "Exiting with empty discovery data" $TRACE_INFO
$oDiscoveryData
If($traceLevel -eq $TRACE_DEBUG)
{
#just for debug proposes when launched from command line does nothing when run inside OpsMgr Agent
$g_API.Return($oDiscoveryData)
}
}
Function Throw-KeepDiscoveryInfo
{
param($SourceId, $ManagedEntityId)
$oDiscoveryData = $g_API.CreateDiscoveryData(0,$SourceId,$ManagedEntityId)
#Instead of Snapshot discovery, submit Incremental discovery data
$oDiscoveryData.IsSnapshot = $false
Log-Event $FAILURE_EVENT_ID $EVENT_TYPE_WARNING "Exiting with null non snapshot discovery data" $TRACE_INFO
$oDiscoveryData
If($traceLevel -eq $TRACE_DEBUG)
{
#just for debug proposes when launched from command line does nothing when run inside OpsMgr Agent
$g_API.Return($oDiscoveryData)
}
}
#endregion
#Start by setting up API object.
$P_TraceLevel = $TRACE_VERBOSE
$g_Api = New-Object -comObject 'MOM.ScriptAPI'
#$g_RegistryStatePath = "HKLM\" + $g_API.GetScriptStateKeyPath($SCRIPT_NAME)
$replicaAgeHours = ([DateTime]::Now - $LastReplicationTime).TotalHours
$bag = $g_api.CreatePropertyBag()
$bag.AddValue('VMId',$VMId)
$bag.AddValue('ReplicationMode', $VMReplicationMode) #to be used in filters, we just monitor primary replica side ==1
$bag.AddValue('ReplicationHealthCode',$VMReplicationHealthCode)
$bag.AddValue('ReplicationHealth',$VMReplicationHealth)
$bag.AddValue('ReplicationStateCode',$VMReplicationStateCode)
$bag.AddValue('ReplicationState',$VMReplicationState)
$bag.AddValue('ReplicaAgeHours',$replicaAgeHours)
$bag
$message="$($vm.Name) Replica State is: $($vmreplicationstatecode) Replica Health Is: $($vmreplicationhealthcode). Replica Age is: $replicaAgeHours"
Log-Event $START_EVENT_ID $EVENT_TYPE_INFO ("$($vm.VMName) has been processed `n $message") $TRACE_DEBUG
}
#Debug the pèowershll module has issues in both caching (results doesn't change between iterations and values returned so we're not going to use POSH
$vms = Get-VM | where {$_.ReplicationMode.Value__ -ne 0} #use the enum codes instead of labels 0 = 'None'
$vms=$null #debug not using POSH
foreach($vm in $vms) {
$replica = Get-VMReplication -VM $vm
$VMId = $vm.VMId.ToString()
$LastReplicationTime=$replica.LastReplicationTime
$VMReplicationMode=$vm.ReplicationMode.value__
$VMReplicationHealthCode=$replica.ReplicationHealth.Value__
$VMReplicationStateCode=$replica.ReplicationState.Value__
$VMReplicationState=$replica.ReplicationState.ToString()
$VMRepliactionHealth=$replica.ReplicationHealth.ToString()
$message="$($vm.Name) Replica State is: $($vmreplicationstatecode) Replica Health Is: $($vmreplicationhealthcode). Replica Age is: $replicaAgeHours"
Log-Event $START_EVENT_ID $EVENT_TYPE_INFO ("$($vm.VMName) has been processed `n $message") $TRACE_DEBUG