Microsoft Windows Server DNS NSLookup DS

Microsoft.Windows.DNSServer.2016.NSLookup.DS (DataSourceModuleType)

Skriptdatakälla som använder NSLookup

Element properties:

TypeDataSourceModuleType
IsolationAny
AccessibilityPublic
RunAsDefault
OutputTypeSystem.PropertyBagData

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource System.Scheduler Default
PS ProbeAction Microsoft.Windows.PowerShellPropertyBagTriggerOnlyProbe Default

Overrideable Parameters:

IDParameterTypeSelectorDisplay NameDescription
IntervalSecondsint$Config/IntervalSeconds$Intervall i sekunder
ScriptTimeoutSecondsint$Config/ScriptTimeoutSeconds$Skript timeout sekunder
QueryTimeoutSecondsint$Config/QueryTimeoutSeconds$Fråga timeout sekunder
QueryTypestring$Config/QueryType$Frågetyp
HostNamestring$Config/HostName$Värdnamn
Serverstring$Config/Server$Server
AcceptNonAuthoritativebool$Config/AcceptNonAuthoritative$Acceptera icke-auktoritativ

Source Code:

<DataSourceModuleType ID="Microsoft.Windows.DNSServer.2016.NSLookup.DS" Accessibility="Public" Batching="false">
<Configuration>
<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="ScriptTimeoutSeconds" type="xsd:integer"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" minOccurs="1" name="QueryTimeoutSeconds" type="xsd:integer"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" minOccurs="1" name="QueryType" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" minOccurs="1" name="HostName" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" minOccurs="1" name="Server" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" minOccurs="1" name="AcceptNonAuthoritative" type="xsd:boolean"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="IntervalSeconds" Selector="$Config/IntervalSeconds$" ParameterType="int"/>
<OverrideableParameter ID="ScriptTimeoutSeconds" Selector="$Config/ScriptTimeoutSeconds$" ParameterType="int"/>
<OverrideableParameter ID="QueryTimeoutSeconds" Selector="$Config/QueryTimeoutSeconds$" ParameterType="int"/>
<OverrideableParameter ID="QueryType" Selector="$Config/QueryType$" ParameterType="string"/>
<OverrideableParameter ID="HostName" Selector="$Config/HostName$" ParameterType="string"/>
<OverrideableParameter ID="Server" Selector="$Config/Server$" ParameterType="string"/>
<OverrideableParameter ID="AcceptNonAuthoritative" Selector="$Config/AcceptNonAuthoritative$" ParameterType="bool"/>
</OverrideableParameters>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<DataSource ID="DS" TypeID="System!System.Scheduler">
<Scheduler>
<SimpleReccuringSchedule>
<Interval>$Config/IntervalSeconds$</Interval>
<SyncTime/>
</SimpleReccuringSchedule>
<ExcludeDates/>
</Scheduler>
</DataSource>
<ProbeAction ID="PS" TypeID="Windows!Microsoft.Windows.PowerShellPropertyBagTriggerOnlyProbe">
<ScriptName>Microsoft.Windows.Server.DNS.NSLookup.DS.ps1</ScriptName>
<ScriptBody><Script>#Copyright (c) Microsoft Corporation. All rights reserved.

#*************************************************************************
# ScriptName: Microsoft.Windows.Server.DNS.NSLookup.DS
#
# Purpose: DNS Server DNS NSLookup DataSource
#
# File: Microsoft.Windows.Server.DNS.NSLookup.DS.ps1
#*************************************************************************

param (
[parameter(Mandatory=$false)]
[String] $QueryType = "A",
[parameter(Mandatory=$false)]
[String] $HostName= [String]::Empty,
[parameter(Mandatory=$false)]
[String] $ServerName = [String]::Empty,
[parameter(Mandatory=$false)]
[int] $QueryTimeoutSeconds = 10,
[parameter(Mandatory=$false)]
[String] $AcceptNonAuthoritative = "true"

)

Function Convert-ToBoolean([string] $sBool)
{
[bool] $result = $false
[bool] $iresult = $false

if ($false -eq [string]::IsNullOrEmpty($sBool) )
{
$result = $sBool.Equals("true",[System.StringComparison]::InvariantCultureIgnoreCase)
$iresult = $sBool.Equals("1",[System.StringComparison]::InvariantCultureIgnoreCase)
$result = $result -or $iresult
}

return $result
}

Function Start-Initialization
{
Set-Variable momApi -value $null -Scope Script

}

Function Start-SCOMobjectsInitialization
{
try
{
$Script:momApi = New-Object -ComObject Mom.ScriptAPI -ErrorAction Stop
}
catch
{
if ($null -eq $Script:momApi)
{
exit
}

}

}

Function Load-Module ([string] $ModuleName)
{
if ([string]::IsNullOrEmpty($ModuleName) )
{
return $false
}

$ErrorActionPreference="SilentlyContinue"
$error.Clear()

$retval = $false
$cim = Get-Module -Name $ModuleName

########Check for powershell 1.0
if ($error.Count -ne 0)
{
$type = $error[0].Exception.GetType()
if ([System.Management.Automation.CommandNotFoundException] -eq $type)
{
$error.Clear()
return $retval
}

$error.Clear()
}

if ($null -eq $cim)
{
Import-Module $ModuleName
if ($error.Count -eq 0)
{
$retval = $true
}

$error.Clear()
}
else
{
$retval = $true
}

return $retval
}

Function Get-NsLookupInner
{
$command = "chcp 437 ; NSLookup.exe -timeout=" +$Script:QueryTimeoutSeconds+ " -querytype=" +$Script:QueryType+ " "+ $Script:HostName + " " + $Script:ServerName
try
{
$output = Invoke-Expression -Command:$command -ErrorVariable e
$sResult = "Success"
$ex = $null
if($e -ne $null)
{
$sResult = "Query-failure"
$ex = $e.Exception
}

Get-PropertyBag -sResult $sResult -Command $command -Exception $ex
}
catch
{
$sResult = "Query-failure"
Get-PropertyBag -sResult $sResult -Command $command -Exception $_.Exception
}
}

Function ClearString($object)
{
$result = [System.String] $object;
$result = $result -replace "`t","";
$result = $result -replace "`n","";
$result = $result -replace "`r","";
$result = $result -replace "\*","";

$result = $result -replace [Environment]::NewLine, "";

return $result.Trim();
}

Function Get-PropertyBag ([String] $sResult,[String]$Command,[String]$ErrorMessage = [String]::Empty,$Exception,$ErrorNumber = $null)
{
if ($null -eq $Script:momApi)
{
return
}

$sError = ""
$sErrorNumber = "0x0"

try
{
$bag = $Script:momApi.CreatePropertyBag()

if (-Not [String]::IsNullOrEmpty($Exception.Message))
{
$sError = ClearString($Exception.Message.Trim())
}
else
{
$sError = ClearString($ErrorMessage)
}

if (-Not [String]::IsNullOrEmpty($Exception.ErrorCode))
{
$sErrorNumber = "0x" + $Exception.ErrorCode.ToString("x")
}
else
{
if ($null -ne $ErrorNumber)
{
$sErrorNumber = "0x" + $ErrorNumber.ToString("x")
}


}


$bag.AddValue("Result",$sResult)
$bag.AddValue("CommandLine",$Command)
$bag.AddValue("StdOut","")
$bag.AddValue("StdErr","")
$bag.AddValue("IgnoredErrs","")
$bag.AddValue("ErrorMessage",$sError)
$bag.AddValue("ErrorNumber",$sErrorNumber)

$bag
}
catch
{

}


}

Function Get-NsLookup
{

$sResult = "Internal-Script-Error"
$ErrorMessage = "No Errors"
$ErrorNumber = 0


$QueryTypes = @{"A" = 1; "CNAME" = 1; "PTR" = 1; "SOA" = 1; "NS" = 1}
$Command = "Resolve-DnsName -Server $Script:ServerName -Type $Script:QueryType -Name $Script:HostName -DnsOnly"

if ($true -eq [String]::IsNullOrEmpty($Script:HostName) -or $true -eq [String]::IsNullOrEmpty($Script:ServerName) )
{
$ErrorNumber = 4
$ErrorMessage = "HostName and ServerName may not be blank"
Get-PropertyBag -sResult $sResult -Command $Command -Exception $null -ErrorNumber $ErrorNumber -ErrorMessage $ErrorMessage
return
}

if ($true -eq [String]::IsNullOrEmpty($Script:QueryType))
{
$ErrNumber = 3
$ErrorMessage = "Query Type may not be blank"

Get-PropertyBag -sResult $sResult -Command $Command -Exception $null -ErrorNumber $ErrorNumber -ErrorMessage $ErrorMessage

return
}

$Query = $QueryType.ToUpper()

if ($null -eq $QueryTypes[$Query])
{
$ErrNumber = 2
$ErrorMessage = "Query Type must be A, CNAME, NS, PTR, or SOA"

Get-PropertyBag -sResult $sResult -Command $Command -Exception $null -ErrorNumber $ErrorNumber -ErrorMessage $ErrorMessage

return
}

try
{
Load-Module "DnsClient"
Resolve-DnsName -Server $Script:ServerName -Type $Query -Name $Script:HostName -DnsOnly
$sResult = "Success"
Get-PropertyBag -sResult $sResult -Command $Command -Exception $null -ErrorMessage $ErrorMessage -ErrorNumber $ErrorNumber
}
catch [Management.Automation.CommandNotFoundException]
{
Get-NsLookupInner
}
catch
{
$sResult = "Query-failure"
Get-PropertyBag -sResult $sResult -Command $Command -Exception $_.Exception
}
}

$ErrorActionPreference = "Stop"

$Script:QueryType = $QueryType
$Script:HostName = $HostName
$Script:ServerName = $ServerName
$Script:QueryTimeoutSeconds = $QueryTimeoutSeconds
$Script:AcceptNonAuthoritative = Convert-ToBoolean -sBool $AcceptNonAuthoritative


Start-Initialization
Start-SCOMobjectsInitialization
Get-NsLookup
</Script></ScriptBody>
<Parameters>
<Parameter>
<Name>QueryType</Name>
<Value>$Config/QueryType$</Value>
</Parameter>
<Parameter>
<Name>HostName</Name>
<Value>$Config/HostName$</Value>
</Parameter>
<Parameter>
<Name>ServerName</Name>
<Value>$Config/Server$</Value>
</Parameter>
<Parameter>
<Name>QueryTimeoutSeconds</Name>
<Value>$Config/QueryTimeoutSeconds$</Value>
</Parameter>
<Parameter>
<Name>AcceptNonAuthoritative</Name>
<Value>$Config/AcceptNonAuthoritative$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>$Config/ScriptTimeoutSeconds$</TimeoutSeconds>
</ProbeAction>
</MemberModules>
<Composition>
<Node ID="PS">
<Node ID="DS"/>
</Node>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.PropertyBagData</OutputType>
</DataSourceModuleType>