Cette source de données obtient les mesures du DNS dans tous les serveurs Windows 2012 R2
Cette source de données obtient des données de mesure DNS depuis des zones dans des ordinateurs de serveurs Windows 2012 R2 à l'aide d'un applet de commande Powershell
Intervalle en secondes : À quelle fréquence (en secondes) la valeur doit être vérifiée.
Heure de synchronisation : Heure de synchronisation pour l'exécution du module.
Délai d'attente (secondes) : Le délai d'attente (en secondes) jusqu'à la fin d'exécution du module.
Type | DataSourceModuleType |
Isolation | Any |
Accessibility | Public |
RunAs | Default |
OutputType | System.PropertyBagData |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
DS | DataSource | System.Scheduler | Default |
PS | ProbeAction | Microsoft.Windows.PowerShellPropertyBagTriggerOnlyProbe | Default |
InstanceFilter | ConditionDetection | System.ExpressionFilter | Default |
ID | ParameterType | Selector | Display Name | Description |
---|---|---|---|---|
IntervalSeconds | int | $Config/IntervalSeconds$ | Intervalle en secondes | À quelle fréquence (en secondes) la valeur doit être échantillonnée. |
SyncTime | string | $Config/SyncTime$ | Heure de synchronisation | Heure de synchronisation pour l'exécution du module. |
TimeoutSeconds | int | $Config/TimeoutSeconds$ | Expiration du délai (secondes) | Le délai d'attente (en secondes) jusqu'à la fin d'exécution du module. |
<DataSourceModuleType ID="Microsoft.Windows.Server.DNS.2012.R2.Metrics.DS" Accessibility="Public" Batching="false">
<Configuration>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" minOccurs="1" name="ZoneName" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" minOccurs="1" name="Group" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" minOccurs="1" name="ComputerName" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" minOccurs="1" name="IntervalSeconds" type="xsd:integer"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" minOccurs="1" name="SyncTime" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" minOccurs="1" name="TimeoutSeconds" type="xsd:integer"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="IntervalSeconds" Selector="$Config/IntervalSeconds$" ParameterType="int"/>
<OverrideableParameter ID="SyncTime" Selector="$Config/SyncTime$" ParameterType="string"/>
<OverrideableParameter ID="TimeoutSeconds" Selector="$Config/TimeoutSeconds$" ParameterType="int"/>
</OverrideableParameters>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<DataSource ID="DS" TypeID="System!System.Scheduler">
<Scheduler>
<SimpleReccuringSchedule>
<Interval>$Config/IntervalSeconds$</Interval>
<SyncTime>$Config/SyncTime$</SyncTime>
</SimpleReccuringSchedule>
<ExcludeDates/>
</Scheduler>
</DataSource>
<ProbeAction ID="PS" TypeID="Windows!Microsoft.Windows.PowerShellPropertyBagTriggerOnlyProbe">
<ScriptName>DNSMetrics2012R2Probe</ScriptName>
<ScriptBody>
param ([String] $PrincipalName)
$SCRIPT_NAME = "DNSMetrics2012R2Probe"
$ErrorActionPreference = "Stop"
# Event type constants
$EVENT_TYPE_LOG = 0
$EVENT_TYPE_ERROR = 1
$EVENT_TYPE_WARNING = 2
$EVENT_TYPE_INFORMATION = 4
# Typed property bag constants
$PROPERTY_TYPE_ALERT = 0
$PROPERTY_TYPE_EVENT = 1
$PROPERTY_TYPE_PERFORMANCE = 2
$PROPERTY_TYPE_STATE = 3
# State type constants
$STATE_SUCCESS = "Success"
$STATE_WARNING = "Warning"
$STATE_ERROR = "Error"
$momAPI = new-object -comObject MOM.ScriptAPI
Write-Host "$SCRIPT_NAME - Executing DNS 2012 R2 DNS Metrics Property Bag Powershell Script"
$DNSZones = Get-DnsServerZone -ComputerName $PrincipalName
if($DNSZones -ne $null)
{
if($DNSZones.Count -eq $null)
{
$ZoneCount = 1
}
else
{
$ZoneCount = $DNSZones.Count
}
for ($itmZone=0; $itmZone -lt $ZoneCount; $itmZone++)
{
if($ZoneCount -eq 1)
{
$ZoneObj = $DNSZones
}
else
{
$ZoneObj = $DNSZones.Item($itmZone)
}
if($ZoneObj.IsAutoCreated -eq $false)
{
$ZoneName = $ZoneObj.ZoneName.toString()
$PerfData = Get-DnsServerStatistics -ZoneName $ZoneName
#Zone Query Statistics
$PerfQueryStats = $PerfData.ZoneQueryStatistics
if($PerfQueryStats.Count -eq $null)
{
$PerfQueryStatsCount = 1
}
else
{
$PerfQueryStatsCount = $PerfQueryStats.Count
}
for ($itmQrStat=0; $itmQrStat -lt $PerfQueryStatsCount; $itmQrStat++)
{
if($PerfQueryStatsCount -eq 1)
{
$QueryStatObj = $PerfQueryStats
}
else
{
$QueryStatObj = $PerfQueryStats.Item($itmQrStat)
}
$StatQRec = $QueryStatObj.QueriesReceived
$StatQRes = $QueryStatObj.QueriesResponded
$StatQFail = $QueryStatObj.QueriesFailure
$StatQNError = $QueryStatObj.QueriesNameError
if($QueryStatObj.RecordType -eq "ALL")
{
$PropertyBag = $momAPI.CreatePropertyBag()
$PropertyBag.AddValue("ZoneName", $ZoneName)
$PropertyBag.AddValue("Group", "ZoneQueryStatistics")
$PropertyBag.AddValue("RecordType", $QueryStatObj.RecordType)
$PropertyBag.AddValue("QueriesReceived", $StatQRec)
$PropertyBag.AddValue("QueriesResponded", $StatQRes)
$PropertyBag.AddValue("QueriesFailure", $StatQFail)
$PropertyBag.AddValue("QueriesNameError", $StatQNError)
$PropertyBag
Write-Host "$SCRIPT_NAME - ZoneQueryStatistics Property Bag Added"
}
}
#Zone Transfer Statistics
$PerfTransfStats = $PerfData.ZoneTransferStatistics
if($PerfTransfStats.Count -eq $null)
{
$PerfTransfStatsCount = 1
}
else
{
$PerfTransfStatsCount = $PerfTransfStats.Count
}
for ($itmTrStat=0; $itmTrStat -lt $PerfTransfStatsCount; $itmTrStat++)
{
if($PerfTransfStatsCount -eq 1)
{
$TransfStatObj = $PerfTransfStats
}
else
{
$TransfStatObj = $PerfTransfStats.Item($itmTrStat)
}
$StatResRec = $TransfStatObj.ResponseReceived
$StatSucRec = $TransfStatObj.SuccessReceived
$StatReqRec = $TransfStatObj.RequestReceived
$StatReqSen = $TransfStatObj.RequestSent
$StatSucSen = $TransfStatObj.SuccessSent
if($TransfStatObj.TransferType -eq "IXFR" -or $TransfStatObj.TransferType -eq "AXFR" )
{
$PropertyBag = $momAPI.CreatePropertyBag()
$PropertyBag.AddValue("ZoneName", $ZoneName)
$PropertyBag.AddValue("Group", "ZoneTransferStatistics")
$PropertyBag.AddValue("TransferType", $TransfStatObj.TransferType)
$PropertyBag.AddValue("RequestReceived", $StatReqRec)
$PropertyBag.AddValue("RequestSent", $StatReqSen)
$PropertyBag.AddValue("ResponseReceived", $StatResRec)
$PropertyBag.AddValue("SuccessReceived", $StatSucRec)
$PropertyBag.AddValue("SuccessSent", $StatSucSen)
$PropertyBag
Write-Host "$SCRIPT_NAME - ZoneTransferStatistics Property Bag Added"
}
}
#Zone Update Statistics
$PerfUpdateStats = $PerfData.ZoneUpdateStatistics
$PropertyBag = $momAPI.CreatePropertyBag()
$PropertyBag.AddValue("ZoneName", $ZoneName)
$PropertyBag.AddValue("Group", "ZoneUpdateStatistics")
$PropertyBag.AddValue("DynamicUpdateReceived", $PerfUpdateStats.DynamicUpdateReceived)
$PropertyBag.AddValue("DynamicUpdateRejected", $PerfUpdateStats.DynamicUpdateRejected)
$PropertyBag
Write-Host "$SCRIPT_NAME - ZoneUpdateStatistics Property Bag Added"
}
}
}
Write-Host "$SCRIPT_NAME - multiple property bag returned"
</ScriptBody>
<Parameters>
<Parameter>
<Name>PrincipalName</Name>
<Value>$Config/ComputerName$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>$Config/TimeoutSeconds$</TimeoutSeconds>
</ProbeAction>
<ConditionDetection ID="InstanceFilter" TypeID="System!System.ExpressionFilter">
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='Group']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Config/Group$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='ZoneName']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Config/ZoneName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</ConditionDetection>
</MemberModules>
<Composition>
<Node ID="InstanceFilter">
<Node ID="PS">
<Node ID="DS"/>
</Node>
</Node>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.PropertyBagData</OutputType>
</DataSourceModuleType>