<DataSourceModuleType ID="CheckAgentProxyEnabledDS" Accessibility="Public">
<Configuration>
<xsd:element name="FrequencyInHours" type="xsd:integer"/>
<xsd:element name="TimeoutSeconds" type="xsd:integer"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="FrequencyInHours" Selector="$Config/FrequencyInHours$" ParameterType="int"/>
</OverrideableParameters>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<!-- Scheduler to fire at certain frequency -->
<DataSource ID="SchedulerDS" TypeID="System!System.Scheduler">
<Scheduler>
<SimpleReccuringSchedule>
<Interval Unit="Hours">$Config/FrequencyInHours$</Interval>
</SimpleReccuringSchedule>
<ExcludeDates/>
</Scheduler>
</DataSource>
<!-- Probe Action that checks if Agent Proxying is enabled -->
<ProbeAction ID="CheckAgentProxyProbe" TypeID="Microsoft.SystemCenter.VirtualMachineManager.2012.PowerShellProbeActionModuleType">
<ScriptBody><Script>
function CheckAgentProxy([string]$omServer, [string]$vmmServer)
{
$error.Clear();
# Load OpsMgr snap-inn
add-pssnapin "Microsoft.EnterpriseManagement.OperationsManager.Client";
if ($error.Count -ne 0)
{
#ignore error if snap-in is already loaded
$error.Clear();
}
# Connect to OpsMgr - change management server to your RMS
new-managementGroupConnection -ConnectionString:$omServer;
set-location "OperationsManagerMonitoring::";
if ($error.Count -ne 0)
{
$errMsg = "Unable to connect to OpsMgrserver: " + $error;
$evt.WriteEntry($errMsg, $infoevent, 25932);
return $false;
}
#VMM server might be installed on one of the Management servers
foreach ($managementServer in Get-ManagementServer)
{
if ($managementServer.Name.Equals($vmmServer))
{
return $managementServer.ProxyingEnabled.Value;
}
}
#VMM server on a non-Management server
foreach ($agent in Get-Agent)
{
if ($agent.Name.Equals($vmmServer))
{
return $agent.ProxyingEnabled.Value;
}
}