Hiermee worden de verouderingsinstellingen van elke zone in de opgegeven lijst getest. Geef zonenamen op waarmee Parameter1 wordt overschreven. Niet ondersteund op Nano.
#
# Tests whether given DNS Server is able to resolve input DNS Name.
#
Function Test-DnsServerForInputDnsName
{
param (
[parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
$dnsName,
[parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
$dnsServer,
$rrType = "All"
)
$result = [RetStatus]::Failure;
try {
$retObj = ExecuteCmdLet "Resolve-DnsName" @{"Name" = $dnsName; "Type" = $rrType; "Server" = $dnsServer};
if ($null -eq $retObj) {
LogComment $("Resolve-DnsName for " + $dnsName + " failed on server " + $dnsServer + " with " + $script:cmdLetReturnedStatus) $script:logLevel.Error;
$result = $script:cmdLetReturnedStatus;
} else {
LogComment $("Name resolution of " + $dnsName + " passed on server " + $dnsServer);
$result = [RetStatus]::Success;
}
$dnsServerIP = $null;
if (![Net.IPaddress]::TryParse($dnsServer, [ref]$dnsServerIP)) {
try {
#Resolve and get first IP
$dnsServerIP = [System.Net.Dns]::GetHostAddresses($dnsServer).IPAddressToString.Split(" ")[0];
} catch {
LogComment $("Exception while trying to get IP Address of " + $dnsServer + "`n" + $_.Exception) $script:logLevel.Error;
throw;
}
}
$retObj = ExecuteCmdLet "Test-DnsServer" @{"ComputerName" = $remoteServer; "ZoneName" = $zoneName; "IPAddress" = $dnsServerIP};
if ($null -eq $retObj) {
LogComment $("Test-DnsServer failed for " + $zoneName + " on server " + $dnsServer) $script:logLevel.Warning;
$result = $script:cmdLetReturnedStatus;
} else {
if (($retObj.Result -eq "Success") -or ($retObj.Result -eq "NotAuthoritativeForZone")) {
LogComment $("Test-DnsServer passed for " + $zoneName + " on server " + $dnsServer + " with Result: " + $retObj.Result);
$result = [RetStatus]::Success;
} else {
LogComment $("Test-DnsServer failed for " + $zoneName + " on server " + $dnsServer + " with Result: " + $retObj.Result) $script:logLevel.Warning;
$result = $retObj.Result;
}
}
} catch {
LogComment $("Test-DnsServerForInputDnsName failed " + $_.Exception) $script:logLevel.Error;
$result = [RetStatus]::Failure;
}
if ($null -ne $retObj) {
if ($retObj.AgingEnabled) {
LogComment $("Aging is enabled on Server: " + $server + " for Zone: " + $zone);
# In case of non-default values of Refresh & NoRefresh interval and $null ScavengeServers
# we're only giving below 3 warnings, not considering them as a failure case.
if ($defaultRefreshInterval -ne $retObj.RefreshInterval) {
LogComment $("RefreshInterval is set to non-default value: " + $retObj.RefreshInterval) `
$script:logLevel.Warning;
}
if ($defaultRefreshInterval -ne $retObj.NoRefreshInterval) {
LogComment $("NoRefreshInterval is set to non-default value: " + $retObj.NoRefreshInterval) `
$script:logLevel.Warning;
}
if ($null -eq $retObj.ScavengeServers) {
LogComment $("There's no ScavengeServers configured.") $script:logLevel.Warning;
}
# If Aging is enabled on more than 1 server, considering it as failure case.
if ($agingStatus) {
$result = [RetStatus]::Failure;
LogComment $("Aging is enabled on more than one server for Zone: " + $zone) `
$script:logLevel.Warning;
} else {
$agingStatus = $true;
}
} else {
LogComment $("Aging is disabled on Server: " + $server + " for Zone: " + $zone);
}
} else {
if ([RetStatus]::OperationIsNotSupported -eq $script:cmdLetReturnedStatus) {
LogComment $($zone + " is non-primary zone on " + $server);
} else {
LogComment $("Failed to get " + $zone + " aging info on " + $server + " with error " + $script:cmdLetReturnedStatus) `
$script:logLevel.Error;
$result = [RetStatus]::Failure;
}
}
} catch {
LogComment $("Test-ZoneAgingHealth failed for Zone: " + $zone + " on Server: " + $server + " `n " + $_.Exception) `
$script:logLevel.Error;
$result = [RetStatus]::Failure;
}
# If Aging is not enabled on any server, considering it as failure case.
if (!$agingStatus) {
LogComment $("No server found with zone aging enabled for the Zone: " + $zone) `
$script:logLevel.Warning;
$result = [RetStatus]::Failure;
}