From 1bafc47c2d3511dcbed8a11557f5052f9e4308b0 Mon Sep 17 00:00:00 2001 From: Johan Ljunggren Date: Mon, 18 Jun 2018 11:52:21 +0200 Subject: [PATCH 01/13] Activate the GitHub App Stale on the GitHub repository (#77) --- .github/stale.yml | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 .github/stale.yml diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 00000000..84f3eaaa --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,44 @@ +# Configuration for probot-stale - https://github.com/probot/stale + +limitPerRun: 30 + +pulls: + daysUntilStale: 14 + daysUntilClose: false + exemptProjects: true + exemptMilestones: true + staleLabel: abandoned + exemptLabels: + - needs review + - on hold + - waiting for CLA pass + + markComment: > + Labeling this pull request (PR) as abandoned since it has gone 14 days or more + since the last update. An abandoned PR can be continued by another contributor. + The abandoned label will be removed if work on this PR is taken up again. + +issues: + daysUntilStale: 30 + daysUntilClose: 40 + exemptProjects: true + exemptMilestones: true + staleLabel: stale + exemptLabels: + - bug + - enhancement + - tests + - documentation + - resource proposal + - on hold + + markComment: > + This issue has been automatically marked as stale because + it has not had activity from the community in the last 30 days. It will be + closed if no further activity occurs within 10 days. If the issue is labelled + with any of the work labels (e.g bug, enhancement, documentation, or tests) + then the issue will not auto-close. + + closeComment: > + This issue has been automatically closed because it is has not had activity + from the community in the last 40 days. From 31cf3f61b8027fa7dda87d4d09216cff6f7f1f24 Mon Sep 17 00:00:00 2001 From: Johan Ljunggren Date: Thu, 23 Aug 2018 19:56:13 +0200 Subject: [PATCH 02/13] Add pull request template and issue templates (#78) --- .github/ISSUE_TEMPLATE/General.md | 7 +++ .../ISSUE_TEMPLATE/Problem_with_resource.md | 57 +++++++++++++++++++ .github/ISSUE_TEMPLATE/Resource_proposal.md | 21 +++++++ .github/PULL_REQUEST_TEMPLATE.md | 47 +++++++++++++++ 4 files changed, 132 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/General.md create mode 100644 .github/ISSUE_TEMPLATE/Problem_with_resource.md create mode 100644 .github/ISSUE_TEMPLATE/Resource_proposal.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE/General.md b/.github/ISSUE_TEMPLATE/General.md new file mode 100644 index 00000000..fbcdf240 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/General.md @@ -0,0 +1,7 @@ +--- +name: General question or documentation update +about: If you have a general question or documentation update suggestion around the resource module. +--- + diff --git a/.github/ISSUE_TEMPLATE/Problem_with_resource.md b/.github/ISSUE_TEMPLATE/Problem_with_resource.md new file mode 100644 index 00000000..2431f65c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/Problem_with_resource.md @@ -0,0 +1,57 @@ +--- +name: Problem with a resource +about: If you have a problem, bug, or enhancement with a resource in this resource module. +--- + +#### Details of the scenario you tried and the problem that is occurring + +#### Verbose logs showing the problem + +#### Suggested solution to the issue + +#### The DSC configuration that is used to reproduce the issue (as detailed as possible) +```powershell +# insert configuration here +``` + +#### The operating system the target node is running + + +#### Version and build of PowerShell the target node is running + + +#### Version of the DSC module that was used ('dev' if using current dev branch) diff --git a/.github/ISSUE_TEMPLATE/Resource_proposal.md b/.github/ISSUE_TEMPLATE/Resource_proposal.md new file mode 100644 index 00000000..9f2a069a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/Resource_proposal.md @@ -0,0 +1,21 @@ +--- +name: New resource proposal +about: If you have a new resource proposal that you think should be added to this resource module. +--- + +### Description + +### Proposed properties + +### Special considerations or limitations diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..84e1ea82 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,47 @@ + +#### Pull Request (PR) description + + +#### This Pull Request (PR) fixes the following issues + + +#### Task list + +- [ ] Added an entry under the Unreleased section of the change log in the README.md. + Entry should say what was changed, and how that affects users (if applicable). +- [ ] Resource documentation added/updated in README.md. +- [ ] Resource parameter descriptions added/updated in README.md, schema.mof + and comment-based help. +- [ ] Comment-based help added/updated. +- [ ] Localization strings added/updated in all localization files as appropriate. +- [ ] Examples appropriately added/updated. +- [ ] Unit tests added/updated. See [DSC Resource Testing Guidelines](https://github.com/PowerShell/DscResources/blob/master/TestsGuidelines.md). +- [ ] Integration tests added/updated (where possible). See [DSC Resource Testing Guidelines](https://github.com/PowerShell/DscResources/blob/master/TestsGuidelines.md). +- [ ] New/changed code adheres to [DSC Resource Style Guidelines](https://github.com/PowerShell/DscResources/blob/master/StyleGuidelines.md) and [Best Practices](https://github.com/PowerShell/DscResources/blob/master/BestPractices.md). From 4b8475222b2aec715d70b4aef604ec17cb96bf10 Mon Sep 17 00:00:00 2001 From: Johan Ljunggren Date: Sat, 22 Sep 2018 11:31:53 +0200 Subject: [PATCH 03/13] Update to use template files (#81) --- .codecov.yml | 24 ++++++++++++++++ .gitattributes | 2 ++ .vscode/analyzersettings.psd1 | 53 +++++++++++++++++++++++++++++++++++ .vscode/settings.json | 14 +++++++++ README.md | 3 ++ appveyor.yml | 16 +++++++++-- 6 files changed, 109 insertions(+), 3 deletions(-) create mode 100644 .codecov.yml create mode 100644 .gitattributes create mode 100644 .vscode/analyzersettings.psd1 create mode 100644 .vscode/settings.json diff --git a/.codecov.yml b/.codecov.yml new file mode 100644 index 00000000..29a05dd1 --- /dev/null +++ b/.codecov.yml @@ -0,0 +1,24 @@ +codecov: + notify: + require_ci_to_pass: no + +comment: + layout: "reach, diff" + behavior: default + +coverage: + range: 50..80 + round: down + precision: 0 + + status: + project: + default: + # Set the overall project code coverage requirement to 70% + target: 70 + patch: + default: + # Set the pull request requirement to not regress overall coverage by more than 5% + # and let codecov.io set the goal for the code changed in the patch. + target: auto + threshold: 5 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..5613d533 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Needed for publishing of examples, build worker defaults to core.autocrlf=input. +* text eol=crlf diff --git a/.vscode/analyzersettings.psd1 b/.vscode/analyzersettings.psd1 new file mode 100644 index 00000000..be415e4d --- /dev/null +++ b/.vscode/analyzersettings.psd1 @@ -0,0 +1,53 @@ +@{ + <# + For the custom rules to work, the DscResource.Tests repo must be + cloned. It is automatically clone as soon as any unit or + integration tests are run. + #> + CustomRulePath = '.\DSCResource.Tests\DscResource.AnalyzerRules' + + IncludeRules = @( + # DSC Resource Kit style guideline rules. + 'PSAvoidDefaultValueForMandatoryParameter', + 'PSAvoidDefaultValueSwitchParameter', + 'PSAvoidInvokingEmptyMembers', + 'PSAvoidNullOrEmptyHelpMessageAttribute', + 'PSAvoidUsingCmdletAliases', + 'PSAvoidUsingComputerNameHardcoded', + 'PSAvoidUsingDeprecatedManifestFields', + 'PSAvoidUsingEmptyCatchBlock', + 'PSAvoidUsingInvokeExpression', + 'PSAvoidUsingPositionalParameters', + 'PSAvoidShouldContinueWithoutForce', + 'PSAvoidUsingWMICmdlet', + 'PSAvoidUsingWriteHost', + 'PSDSCReturnCorrectTypesForDSCFunctions', + 'PSDSCStandardDSCFunctionsInResource', + 'PSDSCUseIdenticalMandatoryParametersForDSC', + 'PSDSCUseIdenticalParametersForDSC', + 'PSMisleadingBacktick', + 'PSMissingModuleManifestField', + 'PSPossibleIncorrectComparisonWithNull', + 'PSProvideCommentHelp', + 'PSReservedCmdletChar', + 'PSReservedParams', + 'PSUseApprovedVerbs', + 'PSUseCmdletCorrectly', + 'PSUseOutputTypeCorrectly', + 'PSAvoidGlobalVars', + 'PSAvoidUsingConvertToSecureStringWithPlainText', + 'PSAvoidUsingPlainTextForPassword', + 'PSAvoidUsingUsernameAndPasswordParams', + 'PSDSCUseVerboseMessageInDSCResource', + 'PSShouldProcess', + 'PSUseDeclaredVarsMoreThanAssignments', + 'PSUsePSCredentialType', + + <# + This is to test all the DSC Resource Kit custom rules. + The name of the function-blocks of each custom rule start + with 'Measure*'. + #> + 'Measure-*' + ) +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..0969e57b --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,14 @@ +{ + "powershell.codeFormatting.openBraceOnSameLine": false, + "powershell.codeFormatting.newLineAfterOpenBrace": false, + "powershell.codeFormatting.newLineAfterCloseBrace": true, + "powershell.codeFormatting.whitespaceBeforeOpenBrace": true, + "powershell.codeFormatting.whitespaceBeforeOpenParen": true, + "powershell.codeFormatting.whitespaceAroundOperator": true, + "powershell.codeFormatting.whitespaceAfterSeparator": true, + "powershell.codeFormatting.ignoreOneLineBlock": false, + "powershell.codeFormatting.preset": "Custom", + "files.trimTrailingWhitespace": true, + "files.insertFinalNewline": true, + "powershell.scriptAnalysis.settingsPath": ".vscode\\analyzersettings.psd1" +} diff --git a/README.md b/README.md index 9b12a8ac..79cc4659 100644 --- a/README.md +++ b/README.md @@ -164,6 +164,9 @@ Please check out common DSC Resources [contributing guidelines](https://github.c ### Unreleased +* Update appveyor.yml to use the default template. +* Added default template files .codecov.yml, .gitattributes, and .gitignore, and .vscode folder. + ### 1.11.0.0 * Changes to xDnsServer diff --git a/appveyor.yml b/appveyor.yml index acfaec85..44cd1568 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,7 +1,12 @@ #---------------------------------# # environment configuration # #---------------------------------# + version: 1.7.{build}.0 +environment: + gallery_api: + secure: 9ekJzfsPCDBkyLrfmov83XbbhZ6E2N3z+B/Io8NbDetbHc6hWS19zsDmy7t0Vvxv + install: - git clone https://github.com/PowerShell/DscResource.Tests - ps: Write-Verbose -Message "PowerShell version $($PSVersionTable.PSVersion)" -Verbose @@ -21,13 +26,18 @@ build: false test_script: - ps: | - Invoke-AppveyorTestScriptTask -CodeCoverage -CodeCovIo -ExcludeTag @() + Invoke-AppveyorTestScriptTask -CodeCoverage -CodeCovIo + +# scripts to run before deployment +after_test: + - ps: | + Import-Module -Name "$env:APPVEYOR_BUILD_FOLDER\DscResource.Tests\AppVeyor.psm1" + Invoke-AppveyorAfterTestTask #---------------------------------# # deployment configuration # #---------------------------------# -# scripts to run before deployment deploy_script: - ps: | - Invoke-AppveyorAfterTestTask + Invoke-AppVeyorDeployTask From a020f8e5a8b3e1a3462545634da0bf5debc871a7 Mon Sep 17 00:00:00 2001 From: NicolasB Date: Tue, 30 Oct 2018 14:42:43 +0100 Subject: [PATCH 04/13] Add UseRootHint in xDnsServerForwarder. Replace CimInstance by *-DnsServerForwarder cmdlet. --- .../MSFT_xDnsServerForwarder.psm1 | 43 +++++++++++++------ .../MSFT_xDnsServerForwarder.schema.mof | 1 + 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/DSCResources/MSFT_xDnsServerForwarder/MSFT_xDnsServerForwarder.psm1 b/DSCResources/MSFT_xDnsServerForwarder/MSFT_xDnsServerForwarder.psm1 index d88bb190..1b06bdb7 100644 --- a/DSCResources/MSFT_xDnsServerForwarder/MSFT_xDnsServerForwarder.psm1 +++ b/DSCResources/MSFT_xDnsServerForwarder/MSFT_xDnsServerForwarder.psm1 @@ -6,17 +6,16 @@ function Get-TargetResource [Parameter(Mandatory = $true)] [ValidateSet('Yes')] [string] - $IsSingleInstance, - - [Parameter()] - [string[]] - $IPAddresses + $IsSingleInstance ) Write-Verbose 'Getting current DNS forwarders.' - [array]$currentIPs = (Get-CimInstance -Namespace root\MicrosoftDNS -ClassName microsoftdns_server).Forwarders + $CurrentServerForwarders = Get-DnsServerForwarder + [array]$currentIPs = $CurrentServerForwarders.IPAddress + $CurrentUseRootHint = $CurrentServerForwarders.UseRootHint $targetResource = @{ IsSingleInstance = $IsSingleInstance IPAddresses = @() + UseRootHint = $CurrentUseRootHint } if ($currentIPs) { @@ -36,7 +35,11 @@ function Set-TargetResource [Parameter()] [string[]] - $IPAddresses + $IPAddresses, + + [Parameter()] + [System.Boolean] + $UseRootHint ) if (!$IPAddresses) { @@ -44,11 +47,15 @@ function Set-TargetResource } Write-Verbose -Message 'Setting DNS forwarders.' $setParams = @{ - Namespace = 'root\MicrosoftDNS' - Query = 'select * from microsoftdns_server' - Property = @{Forwarders = $IPAddresses} + IPAddress = $IPAddresses + } + + if ($PSBoundParameters.ContainsKey('UseRootHint')) + { + $setParams.Add('UseRootHint', $UseRootHint) } - Set-CimInstance @setParams + + Set-DnsServerForwarder @setParams -WarningAction 'SilentlyContinue' } function Test-TargetResource @@ -63,10 +70,16 @@ function Test-TargetResource [Parameter()] [string[]] - $IPAddresses + $IPAddresses, + + [Parameter()] + [System.Boolean] + $UseRootHint ) + Write-Verbose -Message 'Validate IP addresses.' - [array]$currentIPs = (Get-TargetResource @PSBoundParameters).IPAddresses + $currentConfiguration = Get-TargetResource -IsSingleInstance $IsSingleInstance + [array]$currentIPs = $currentConfiguration.IPAddresses if ($currentIPs.Count -ne $IPAddresses.Count) { return $false @@ -78,5 +91,9 @@ function Test-TargetResource return $false } } + if($currentConfiguration.UseRootHint -ne $UseRootHint){ + return $false + } + return $true } diff --git a/DSCResources/MSFT_xDnsServerForwarder/MSFT_xDnsServerForwarder.schema.mof b/DSCResources/MSFT_xDnsServerForwarder/MSFT_xDnsServerForwarder.schema.mof index 1afe74ba..de65c8c1 100644 --- a/DSCResources/MSFT_xDnsServerForwarder/MSFT_xDnsServerForwarder.schema.mof +++ b/DSCResources/MSFT_xDnsServerForwarder/MSFT_xDnsServerForwarder.schema.mof @@ -3,4 +3,5 @@ class MSFT_xDnsServerForwarder : OMI_BaseResource { [Key, Description("Specifies the resource is a single instance, the value must be 'Yes'"), ValueMap{"Yes"}, Values{"Yes"}] String IsSingleInstance; [Write] String IPAddresses[]; + [Write, Description("Validate if you want to use root hint on DNS Server.")] Boolean UseRootHint; }; From 876312683bd7e2174f9df8f1720456d59f586ff0 Mon Sep 17 00:00:00 2001 From: NicolasB Date: Wed, 31 Oct 2018 10:32:28 +0100 Subject: [PATCH 05/13] Update pester tests for xDnsServerForwarder and documentation --- README.md | 3 ++ Tests/Unit/MSFT_xDnsServerForwarder.Tests.ps1 | 46 ++++++++++++------- 2 files changed, 32 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 79cc4659..a6fbef7b 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,7 @@ Please check out common DSC Resources [contributing guidelines](https://github.c * **IsSingleInstance**: Specifies the resource is a single instance, the value must be 'Yes' * **IPAddresses**: IP addresses of the forwarders +* **UseRootHint**: Specifies if you want to use root hint or not ### xDnsServerADZone @@ -263,6 +264,7 @@ configuration Sample_Set_Forwarders { IsSingleInstance = 'Yes' IPAddresses = '192.168.0.10','192.168.0.11' + UseRootHint = $false } } Sample_Set_Forwarders @@ -278,6 +280,7 @@ configuration Sample_Remove_All_Forwarders { IsSingleInstance = 'Yes' IPAddresses = @() + UseRootHint = $false } } Sample_Remove_All_Forwarders diff --git a/Tests/Unit/MSFT_xDnsServerForwarder.Tests.ps1 b/Tests/Unit/MSFT_xDnsServerForwarder.Tests.ps1 index ffdcc768..adbeafce 100644 --- a/Tests/Unit/MSFT_xDnsServerForwarder.Tests.ps1 +++ b/Tests/Unit/MSFT_xDnsServerForwarder.Tests.ps1 @@ -16,7 +16,7 @@ Import-Module (Join-Path -Path $moduleRoot -ChildPath 'DSCResource.Tests\TestHel $TestEnvironment = Initialize-TestEnvironment ` -DSCModuleName $Global:DSCModuleName ` -DSCResourceName $Global:DSCResourceName ` - -TestType Unit + -TestType Unit #endregion # Begin Testing @@ -26,13 +26,19 @@ try InModuleScope $Global:DSCResourceName { #region Pester Test Initialization + function Get-DnsServerForwarder {} + function Set-DnsServerForwarder {} + $forwarders = '192.168.0.1','192.168.0.2' + $UseRootHint = $true $testParams = @{ IsSingleInstance = 'Yes' IPAddresses = $forwarders + UseRootHint = $UseRootHint } - $fakeCimInstance = @{ - Forwarders = $forwarders + $fakeDNSForwarder = @{ + IPAddress = $forwarders + UseRootHint = $UseRootHint } #endregion @@ -40,21 +46,23 @@ try #region Function Get-TargetResource Describe "$($Global:DSCResourceName)\Get-TargetResource" { It 'Returns a "System.Collections.Hashtable" object type' { - Mock -CommandName Get-CimInstance -MockWith {return $fakeCimInstance} - $targetResource = Get-TargetResource @testParams + Mock -CommandName Get-DnsServerForwarder -MockWith {return $fakeDNSForwarder} + $targetResource = Get-TargetResource -IsSingleInstance $testParams.IsSingleInstance $targetResource -is [System.Collections.Hashtable] | Should Be $true } - It "Returns IPAddresses = $($testParams.IPAddresses) when forwarders exist" { - Mock -CommandName Get-CimInstance -MockWith {return $fakeCimInstance} - $targetResource = Get-TargetResource @testParams + It "Returns IPAddresses = $($testParams.IPAddresses) and UseRootHint = $($testParams.UseRootHint) when forwarders exist" { + Mock -CommandName Get-DnsServerForwarder -MockWith {return $fakeDNSForwarder} + $targetResource = Get-TargetResource -IsSingleInstance $testParams.IsSingleInstance $targetResource.IPAddresses | Should Be $testParams.IPAddresses + $targetResource.UseRootHint | Should Be $testParams.UseRootHint } - It "Returns an empty IPAddresses when forwarders don't exist" { - Mock -CommandName Get-CimInstance -MockWith {} - $targetResource = Get-TargetResource @testParams + It "Returns an empty IPAddresses and UseRootHint at True when forwarders don't exist" { + Mock -CommandName Get-DnsServerForwarder -MockWith {return @{IPAddress = @(); UseRootHint = $true}} + $targetResource = Get-TargetResource -IsSingleInstance $testParams.IsSingleInstance $targetResource.IPAddresses | Should Be $null + $targetResource.UseRootHint | Should Be $true } } #endregion @@ -63,18 +71,22 @@ try #region Function Test-TargetResource Describe "$($Global:DSCResourceName)\Test-TargetResource" { It 'Returns a "System.Boolean" object type' { - Mock -CommandName Get-CimInstance -MockWith {return $fakeCimInstance} + Mock -CommandName Get-DnsServerForwarder -MockWith {return $fakeDNSForwarder} $targetResource = Test-TargetResource @testParams $targetResource -is [System.Boolean] | Should Be $true } It 'Passes when forwarders match' { - Mock -CommandName Get-CimInstance -MockWith {return $fakeCimInstance} + Mock -CommandName Get-DnsServerForwarder -MockWith {return $fakeDNSForwarder} Test-TargetResource @testParams | Should Be $true } It "Fails when forwarders don't match" { - Mock -CommandName Get-CimInstance -MockWith {} + Mock -CommandName Get-DnsServerForwarder -MockWith {return @{IPAddress = @(); UseRootHint = $true}} + Test-TargetResource @testParams | Should Be $false + } + It "Fails when UseRootHint don't match" { + Mock -CommandName Get-DnsServerForwarder -MockWith {return @{IPAddress = $fakeDNSForwarder.IpAddress; UseRootHint = $false}} Test-TargetResource @testParams | Should Be $false } } @@ -83,10 +95,10 @@ try #region Function Set-TargetResource Describe "$($Global:DSCResourceName)\Set-TargetResource" { - It "Calls Set-CimInstance once" { - Mock -CommandName Set-CimInstance -MockWith {} + It "Calls Set-DnsServerForwarder once" { + Mock -CommandName Set-DnsServerForwarder -MockWith {} Set-TargetResource @testParams - Assert-MockCalled -CommandName Set-CimInstance -Times 1 -Exactly -Scope It + Assert-MockCalled -CommandName Set-DnsServerForwarder -Times 1 -Exactly -Scope It } } } #end InModuleScope From 4908c4cc9192d98c93635e8fe8ed96891b7c0de5 Mon Sep 17 00:00:00 2001 From: NicolasB Date: Wed, 31 Oct 2018 11:01:37 +0100 Subject: [PATCH 06/13] Add an entry under the Unreleased section --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a6fbef7b..305c5e34 100644 --- a/README.md +++ b/README.md @@ -167,6 +167,7 @@ Please check out common DSC Resources [contributing guidelines](https://github.c * Update appveyor.yml to use the default template. * Added default template files .codecov.yml, .gitattributes, and .gitignore, and .vscode folder. +* Added UseRootHint property to xDnsServerForwarder resource. ### 1.11.0.0 From 2161f8e2d99f775dc1873c55bb1e9ac80ce208d0 Mon Sep 17 00:00:00 2001 From: japatton Date: Tue, 14 May 2019 08:25:04 -0500 Subject: [PATCH 07/13] Added xDnsServerDiagnosticsResources --- .../MSFT_xDnsRecord.schema.mof | 22 +- .../MSFT_xDnsServerDiagnostics.psm1 | Bin 0 -> 15454 bytes .../MSFT_xDnsServerDiagnostics.schema.mof | Bin 0 -> 7742 bytes .../MSFT_xDnsServerSetting.psm1 | 940 +++++++++--------- .../MSFT_xDnsServerSetting.schema.mof | 102 +- Misc/MockObjects/DnsServerClass.xml | 288 +++--- ...MSFT_xDnsServerDiagnostics.Integration.ps1 | 60 ++ .../MSFT_xDnsServerDiagnostics.config.ps1 | 81 ++ .../Unit/MSFT_xDnsServerDiagnostics.Tests.ps1 | 232 +++++ 9 files changed, 1049 insertions(+), 676 deletions(-) create mode 100644 DSCResources/MSFT_xDnsServerDiagnostics/MSFT_xDnsServerDiagnostics.psm1 create mode 100644 DSCResources/MSFT_xDnsServerDiagnostics/MSFT_xDnsServerDiagnostics.schema.mof create mode 100644 Tests/Integration/MSFT_xDnsServerDiagnostics.Integration.ps1 create mode 100644 Tests/Integration/MSFT_xDnsServerDiagnostics.config.ps1 create mode 100644 Tests/Unit/MSFT_xDnsServerDiagnostics.Tests.ps1 diff --git a/DSCResources/MSFT_xDnsRecord/MSFT_xDnsRecord.schema.mof b/DSCResources/MSFT_xDnsRecord/MSFT_xDnsRecord.schema.mof index 31ce61e9..3ee7560a 100644 --- a/DSCResources/MSFT_xDnsRecord/MSFT_xDnsRecord.schema.mof +++ b/DSCResources/MSFT_xDnsRecord/MSFT_xDnsRecord.schema.mof @@ -1,11 +1,11 @@ -[ClassVersion("1.0.0.0"), FriendlyName("xDnsRecord")] -class MSFT_xDnsRecord : OMI_BaseResource -{ - [Key, Description("Specifies the name of the DNS server resource record object.")] string Name; - [Key, Description("Specifies the name of a DNS zone.")] string Zone; - [Required, Description("Specifies the type of DNS record."), ValueMap{"ARecord","CName","Ptr"}, Values{"ARecord","CName","Ptr"}] string Type; - [Key, Description("Specifies the Target Hostname or IP Address.")] string Target; - [Write, Description("Name of the DnsServer to create the record on.")] string DnsServer; - [Write, Description("Should this DNS resource record be present or absent"), ValueMap{"Present","Absent"}, Values{"Present","Absent"}] String Ensure; -}; - +[ClassVersion("1.0.0.0"), FriendlyName("xDnsRecord")] +class MSFT_xDnsRecord : OMI_BaseResource +{ + [Key, Description("Specifies the name of the DNS server resource record object.")] string Name; + [Key, Description("Specifies the name of a DNS zone.")] string Zone; + [Required, Description("Specifies the type of DNS record."), ValueMap{"ARecord","CName","Ptr"}, Values{"ARecord","CName","Ptr"}] string Type; + [Key, Description("Specifies the Target Hostname or IP Address.")] string Target; + [Write, Description("Name of the DnsServer to create the record on.")] string DnsServer; + [Write, Description("Should this DNS resource record be present or absent"), ValueMap{"Present","Absent"}, Values{"Present","Absent"}] String Ensure; +}; + diff --git a/DSCResources/MSFT_xDnsServerDiagnostics/MSFT_xDnsServerDiagnostics.psm1 b/DSCResources/MSFT_xDnsServerDiagnostics/MSFT_xDnsServerDiagnostics.psm1 new file mode 100644 index 0000000000000000000000000000000000000000..94e3d4ed2fa5c046c784447be34c175875190d35 GIT binary patch literal 15454 zcmeHOYj4{&6y@gu`wzlk!09j>YxiwHfFyOY21wJaaXMgWF{HNR8TBKul&;y(zrO99 z%h04GN~RRW`C=G;NhHs?4?gY{`QN|CYNl?~LM>III_fok4b`ohs*#FROP#56yau>C zL8(N&#r*}o->WWO@6{`mo8rz0CA#>I(b{v=?5KBg?ITLZ`1Lc|x>i>x%YWahZ{$71 zl?3ldouJ%6?oZU;C^1yM`+F?=kCcv3j<1&}J6E5j{X`uBc>&Z8cqYPguEwj{Wa7WR zr`po$DQYL`7%leDVhlN#g3nrHH&VOmJ23cBeZ_Z#ax5RA+#H|7RGkR*O|35O9;z>* zn}M`5gcc%c>-l|K`;a+-wy76$?}gm!3b!6GV#qs1i5M@<^#}}Zac2l-ufc=Xp_UiW zZ~`e#A@Lu0(OAgTwG@Lvx}KHVt;?&v+8UW9sbwPi%jpt^+ph3RgabX3t+Q?sN(8^udTOJL*2`ze zGKChY9p0t?wD0xbR(s+rU*(g%Ju-E{<^Zo1+ zo;QP?Y3)QEpf&m&KgViEJyRc~j_H+`>J8dT;P3qGt2^=h9d!x$?|?+#n1M5Uul69z zFvj&);1;VtQSJ(UK+F$0j2q!kUn5(Cyp#H8u3iE^>zO;~FIOT3dp5_sJG8QkcMJcQ zU_Q!W+V;|NoJ$R@jkG3AjTSsv_Y0TpGhypq*@xUQkbNU?XVr%B8`o3Wirdm}Xk!9i zqulr#!D6kFQMQ}u8KFHYFHH+R64o2F=8bQLB637Ogq$4nmP(JH#?NV!1?-;HOA96G z!}RqzW+vO4X!||%C|8Tde#Uy{fBkRmVWvGF*1qWMFYyA74fS6dE7S&EXpq)2$Ubg| zC}H{}=jk!#+==v1t_Ikb7pr-uoOe}j;mBdU$M>TbXV9h78z|L6eS&}7z_&PO&fzUq zmWT7MhFnLQGuYu4w&94>6RY?np-fFnQ-)ke63$Em>8o6g(HceeXt_&P^IoBqTOpm~>R87khid;vkJ}flD`Xd%O=CGA3i5(G|??q+E zbtL&6l90cNqwLxsD^b(-2|<2{L>vvSRx8o0G>_k%mg(!&ITs=OcxvtGX!963ihX#)P}X={NuOZWVE;`s^8c&K zGYr|!nOT)7*j{0F`vlDL{hU&8zY(M)vXi6)P>qo)dgl=jLj+ zD$g`>F*o*Qt-C&WGJcQo>1GdH7XIJ$xUEO_vDT}|5jb;9dq{t;%DN2M$MhU}H0$dz zw95J6OuT_BZ%VHtp>zCV#Ker6zn@iQS`XPT133;Kq-X6j)n)J@`#ARDtv3xYtiI~> zA^R9!K!Z=i(1+}2ILFGIfd@Zt{8MWnRGwm8$&%=Hm`K#5LtwZ+lwUJ97mS^6Nd5${klB#@*kX@EG?{4%{ zlx<`!Tblp!nR>>yd=B@RnR=TScjYL`qPu?5mH3`(1wI2gpR#=4rn!V>?4E*GdCqOqj5xBG=fPah73J$T z&5LW!qKw<7xtKgpSwAd z%X1h_Dna`njE+zxhnnVlnT>`roHw$}Y#GIwp~-;<^@M{c_v*@-n1 zoVnzt(mc4&Cch`k>koD3Q_D=8&%o45fgo9oe>KzJvHg3-1 zls$bWZ>YCzIhKGwb1Mz@7!- z-nTOSbfA4^5zP6}Y|Ub6nRU=7kKW*k|26*UvvDuQs@w~zpQlr^?|`wy{&Rb3Hhtwx zY$AJ(%$a%T`}m)~zqBvxt-Y~J>sq1DuXbi*{q}8WSN6i5*|)ZC-%P*H z?4^BenQduSUvsbQRBLZ-PwNM|XT^@Xzfe0dc*v(5 zWVWl7TXtx_--A+SKZvWJwRT(UUb{4BcA&ir?RYJ2bB)>QPrqiG&F8KCr02IT(}vH^ zU9yq$m@tSrnVpN)SgR&>p}CpHP5SFjb6f8-;WG5MSN7cR2jXd>5BO&GQ53k(ghX5m zjnP3SB-pn%y=TUAe{-$pefvZ5u=__}d!g%F&oFWR86f9Ha5Y=yYtPIk|RWR}cyL&PtvFv7w$~FI{^l3E@9+jJ!R4kOQfQqQicB z;xl19a;XZZ9&#+_sgm`zRt|l~uH*Dd*FxBZo&Vo5hpbpqzeHi|-0?g-WijWQHS~5g zzb7vVDhD$(9#^Wc{iGjsGA?-!+wD!QIG46Br9-3}+I!jKNOxyG`%3yR6jve!Wb)aj zp5~=Z7P6(8V*`Pp&nQvfoYGze3{DkUu=s)WlsgXC`1^A7PEvIBz195-+53(@FEt(s zuWM;{%{`(my!K0~aIm5ArL7iL#M0a&7TE`1cpSSSCp7n2UHbu(foz)?oXK12p4N^R zfkxV)p08KSHky)CKj1gyO=9|~V>1y>?M0V57G%rVj}g197CP`WP*w#ODhF((9qTxp zqx?9Mzj3~)NyyZnuOIG~bv{iIIF-)O8?^|vYWPq)xcpY`vQh4F*Geg}-Q!?LMcJ&l z?u!^%y6fK5E=t5#=th0FTGAtPReP?v2dz!3vxihC_)MzH+N?pMdaX2*YAt@_>7}Zv zOdT9GSKsyc!N+t9_!KdW*l_G4Itl7+>gY|q!S}{~mtyLko)Aqc6pnn&#J;!hd=*)m zIt~r@bWMD;FE_kXEm12)f3R))8e>y3FIUSrV2ayEpRz@|DaR4)%$DxHoK9g zC4dU?s4H8bR?qz&x(S_gy(R9ZK8D>hb)Sp4>N{^~mosq^J7ODGOODkWO}sEx{i>a^-(b+;?OrRSyVv%x;sf)S+{B zaU(qrgaj5(h5pIyJ$y0Eo0S0zKNL@4OUQ#qaZVK0lB^8>jVOkV$9YKIFYqm%&i8~V z($03km7mV9NquBJQm3f#mG~V?%EeJ{*Rj}Dznb>$lxVbx{6nofVn>|B&>g3hkpEIh&}9)z3$1`Qwv_0k7$3TixhcYh$2Kjz^4;0%AOfhu}WheTu=q$fAT8Ngk2+bLJ9 zidHLG4)sqA_2XS7Ih1XWw4#cLtKoG=I$^wz97n1cS5XfBZ;AhH$OF{ui~o-}(Ysl% zI+|NgT%oR~v%+#$!Gk!JkJA!(TO9X~YV)3s?`y}co{tN4MG^C;O+VKmr~mE3(^CDn wOj2~ysnOk>{;v=b^6BKSqD6JC#ks|WqI{}xmTB>RXH``172S~fuhMG&1x;c@(f|Me literal 0 HcmV?d00001 diff --git a/DSCResources/MSFT_xDnsServerSetting/MSFT_xDnsServerSetting.psm1 b/DSCResources/MSFT_xDnsServerSetting/MSFT_xDnsServerSetting.psm1 index eebd2ede..743dd8df 100644 --- a/DSCResources/MSFT_xDnsServerSetting/MSFT_xDnsServerSetting.psm1 +++ b/DSCResources/MSFT_xDnsServerSetting/MSFT_xDnsServerSetting.psm1 @@ -1,470 +1,470 @@ -Import-Module $PSScriptRoot\..\Helper.psm1 -Verbose:$false - -data LocalizedData -{ - ConvertFrom-StringData -StringData @' -NotInDesiredState="{0}" not in desired state. Expected: "{1}" Actual: "{2}". -DnsClassNotFound=MicrosoftDNS_Server class not found. DNS role is not installed. -ParameterExpectedNull={0} expected to be NULL nut is not. -GettingDnsServerSettings=Getting DNS Server Settings. -SetDnsServerSetting=Setting Dns setting '{0}' to value '{1}'. -'@ -} - -$properties = 'LocalNetPriority', 'AutoConfigFileZones', 'MaxCacheTTL', 'AddressAnswerLimit', 'UpdateOptions', 'DisableAutoReverseZones', 'StrictFileParsing', 'ForwardingTimeout', 'NoRecursion', 'ScavengingInterval', 'DisjointNets', 'Forwarders', 'DefaultAgingState', 'EnableDirectoryPartitions', 'LogFilePath', 'XfrConnectTimeout', 'AllowUpdate', 'Name', 'DsAvailable', 'BootMethod', 'LooseWildcarding', 'DsPollingInterval', 'BindSecondaries', 'LogLevel', 'AutoCacheUpdate', 'EnableDnsSec', 'EnableEDnsProbes', 'NameCheckFlag', 'EDnsCacheTimeout', 'SendPort', 'WriteAuthorityNS', 'IsSlave', 'LogIPFilterList', 'RecursionTimeout', 'ListenAddresses', 'DsTombstoneInterval', 'EventLogLevel', 'RecursionRetry', 'RpcProtocol', 'SecureResponses', 'RoundRobin', 'ForwardDelegations', 'LogFileMaxSize', 'DefaultNoRefreshInterval', 'MaxNegativeCacheTTL', 'DefaultRefreshInterval' - -function Get-TargetResource -{ - [CmdletBinding()] - [OutputType([hashtable])] - param - ( - [Parameter(Mandatory = $true)] - [string] - $Name - ) - - Assert-Module -Name DnsServer - - Write-Verbose ($LocalizedData.GettingDnsServerSettings) - $dnsServerInstance = Get-CimInstance -Namespace root\MicrosoftDNS -ClassName MicrosoftDNS_Server -ErrorAction Stop - - $returnValue = @{} - - foreach ($property in $properties) - { - $returnValue.Add($property, $dnsServerInstance."$property") - } - $returnValue.LogIPFilterList = (Get-PsDnsServerDiagnosticsClass).FilterIPAddressList - $returnValue.Name = $Name - - $returnValue -} - -function Set-TargetResource -{ - [CmdletBinding()] - param - ( - [Parameter(Mandatory = $true)] - [string] - $Name, - - [Parameter()] - [uint32] - $AddressAnswerLimit, - - [Parameter()] - [uint32] - $AllowUpdate, - - [Parameter()] - [bool] - $AutoCacheUpdate, - - [Parameter()] - [uint32] - $AutoConfigFileZones, - - [Parameter()] - [bool] - $BindSecondaries, - - [Parameter()] - [uint32] - $BootMethod, - - [Parameter()] - [bool] - $DefaultAgingState, - - [Parameter()] - [uint32] - $DefaultNoRefreshInterval, - - [Parameter()] - [uint32] - $DefaultRefreshInterval, - - [Parameter()] - [bool] - $DisableAutoReverseZones, - - [Parameter()] - [bool] - $DisjointNets, - - [Parameter()] - [uint32] - $DsPollingInterval, - - [Parameter()] - [uint32] - $DsTombstoneInterval, - - [Parameter()] - [uint32] - $EDnsCacheTimeout, - - [Parameter()] - [bool] - $EnableDirectoryPartitions, - - [Parameter()] - [uint32] - $EnableDnsSec, - - [Parameter()] - [bool] - $EnableEDnsProbes, - - [Parameter()] - [uint32] - $EventLogLevel, - - [Parameter()] - [uint32] - $ForwardDelegations, - - [Parameter()] - [string[]] - $Forwarders, - - [Parameter()] - [uint32] - $ForwardingTimeout, - - [Parameter()] - [bool] - $IsSlave, - - [Parameter()] - [string[]] - $ListenAddresses, - - [Parameter()] - [bool] - $LocalNetPriority, - - [Parameter()] - [uint32] - $LogFileMaxSize, - - [Parameter()] - [string] - $LogFilePath, - - [Parameter()] - [string[]] - $LogIPFilterList, - - [Parameter()] - [uint32] - $LogLevel, - - [Parameter()] - [bool] - $LooseWildcarding, - - [Parameter()] - [uint32] - $MaxCacheTTL, - - [Parameter()] - [uint32] - $MaxNegativeCacheTTL, - - [Parameter()] - [uint32] - $NameCheckFlag, - - [Parameter()] - [bool] - $NoRecursion, - - [Parameter()] - [uint32] - $RecursionRetry, - - [Parameter()] - [uint32] - $RecursionTimeout, - - [Parameter()] - [bool] - $RoundRobin, - - [Parameter()] - [int16] - $RpcProtocol, - - [Parameter()] - [uint32] - $ScavengingInterval, - - [Parameter()] - [bool] - $SecureResponses, - - [Parameter()] - [uint32] - $SendPort, - - [Parameter()] - [bool] - $StrictFileParsing, - - [Parameter()] - [uint32] - $UpdateOptions, - - [Parameter()] - [bool] - $WriteAuthorityNS, - - [Parameter()] - [uint32] - $XfrConnectTimeout - ) - - Assert-Module -Name DnsServer - - $PSBoundParameters.Remove('Name') - $dnsProperties = Remove-CommonParameter -Hashtable $PSBoundParameters - - $dnsServerInstance = Get-CimInstance -Namespace root\MicrosoftDNS -ClassName MicrosoftDNS_Server - - try - { - Foreach($property in $dnsProperties.keys) - { - Write-Verbose -Message ($LocalizedData.SetDnsServerSetting -f $property, $dnsProperties[$property]) - } - - Set-CimInstance -InputObject $dnsServerInstance -Property $dnsProperties -ErrorAction Stop - } - catch - { - throw $_ - } -} - -function Test-TargetResource -{ - [CmdletBinding()] - [OutputType([bool])] - param - ( - [Parameter(Mandatory = $true)] - [string] - $Name, - - [Parameter()] - [uint32] - $AddressAnswerLimit, - - [Parameter()] - [uint32] - $AllowUpdate, - - [Parameter()] - [bool] - $AutoCacheUpdate, - - [Parameter()] - [uint32] - $AutoConfigFileZones, - - [Parameter()] - [bool] - $BindSecondaries, - - [Parameter()] - [uint32] - $BootMethod, - - [Parameter()] - [bool] - $DefaultAgingState, - - [Parameter()] - [uint32] - $DefaultNoRefreshInterval, - - [Parameter()] - [uint32] - $DefaultRefreshInterval, - - [Parameter()] - [bool] - $DisableAutoReverseZones, - - [Parameter()] - [bool] - $DisjointNets, - - [Parameter()] - [uint32] - $DsPollingInterval, - - [Parameter()] - [uint32] - $DsTombstoneInterval, - - [Parameter()] - [uint32] - $EDnsCacheTimeout, - - [Parameter()] - [bool] - $EnableDirectoryPartitions, - - [Parameter()] - [uint32] - $EnableDnsSec, - - [Parameter()] - [bool] - $EnableEDnsProbes, - - [Parameter()] - [uint32] - $EventLogLevel, - - [Parameter()] - [uint32] - $ForwardDelegations, - - [Parameter()] - [string[]] - $Forwarders, - - [Parameter()] - [uint32] - $ForwardingTimeout, - - [Parameter()] - [bool] - $IsSlave, - - [Parameter()] - [string[]] - $ListenAddresses, - - [Parameter()] - [bool] - $LocalNetPriority, - - [Parameter()] - [uint32] - $LogFileMaxSize, - - [Parameter()] - [string] - $LogFilePath, - - [Parameter()] - [string[]] - $LogIPFilterList, - - [Parameter()] - [uint32] - $LogLevel, - - [Parameter()] - [bool] - $LooseWildcarding, - - [Parameter()] - [uint32] - $MaxCacheTTL, - - [Parameter()] - [uint32] - $MaxNegativeCacheTTL, - - [Parameter()] - [uint32] - $NameCheckFlag, - - [Parameter()] - [bool] - $NoRecursion, - - [Parameter()] - [uint32] - $RecursionRetry, - - [Parameter()] - [uint32] - $RecursionTimeout, - - [Parameter()] - [bool] - $RoundRobin, - - [Parameter()] - [int16] - $RpcProtocol, - - [Parameter()] - [uint32] - $ScavengingInterval, - - [Parameter()] - [bool] - $SecureResponses, - - [Parameter()] - [uint32] - $SendPort, - - [Parameter()] - [bool] - $StrictFileParsing, - - [Parameter()] - [uint32] - $UpdateOptions, - - [Parameter()] - [bool] - $WriteAuthorityNS, - - [Parameter()] - [uint32] - $XfrConnectTimeout - ) - - Write-Verbose -Message 'Evaluating the DNS server settings.' - - $currentState = Get-TargetResource -Name $Name - - $desiredState = $PSBoundParameters - $result = Test-DscParameterState -CurrentValues $currentState -DesiredValues $desiredState -TurnOffTypeChecking -Verbose:$VerbosePreference - - return $result -} - -<# - .SYNOPSIS - Internal function to get results from the PS_DnsServerDiagnostics. - This is needed because LogIpFilterList is not returned by querying the MicrosoftDNS_Server class. -#> -function Get-PsDnsServerDiagnosticsClass -{ - [CmdletBinding()] - [OutputType([Microsoft.Management.Infrastructure.CimInstance])] - - $invokeCimMethodParameters = @{ - NameSpace = 'root/Microsoft/Windows/DNS' - ClassName = 'PS_DnsServerDiagnostics' - MethodName = 'Get' - ErrorAction = 'Stop' - } - - $cimDnsServerDiagnostics = Invoke-CimMethod @invokeCimMethodParameters - $cimDnsServerDiagnostics.cmdletOutput -} - -Export-ModuleMember -Function *-TargetResource +Import-Module $PSScriptRoot\..\Helper.psm1 -Verbose:$false + +data LocalizedData +{ + ConvertFrom-StringData -StringData @' +NotInDesiredState="{0}" not in desired state. Expected: "{1}" Actual: "{2}". +DnsClassNotFound=MicrosoftDNS_Server class not found. DNS role is not installed. +ParameterExpectedNull={0} expected to be NULL nut is not. +GettingDnsServerSettings=Getting DNS Server Settings. +SetDnsServerSetting=Setting Dns setting '{0}' to value '{1}'. +'@ +} + +$properties = 'LocalNetPriority', 'AutoConfigFileZones', 'MaxCacheTTL', 'AddressAnswerLimit', 'UpdateOptions', 'DisableAutoReverseZones', 'StrictFileParsing', 'ForwardingTimeout', 'NoRecursion', 'ScavengingInterval', 'DisjointNets', 'Forwarders', 'DefaultAgingState', 'EnableDirectoryPartitions', 'LogFilePath', 'XfrConnectTimeout', 'AllowUpdate', 'Name', 'DsAvailable', 'BootMethod', 'LooseWildcarding', 'DsPollingInterval', 'BindSecondaries', 'LogLevel', 'AutoCacheUpdate', 'EnableDnsSec', 'EnableEDnsProbes', 'NameCheckFlag', 'EDnsCacheTimeout', 'SendPort', 'WriteAuthorityNS', 'IsSlave', 'LogIPFilterList', 'RecursionTimeout', 'ListenAddresses', 'DsTombstoneInterval', 'EventLogLevel', 'RecursionRetry', 'RpcProtocol', 'SecureResponses', 'RoundRobin', 'ForwardDelegations', 'LogFileMaxSize', 'DefaultNoRefreshInterval', 'MaxNegativeCacheTTL', 'DefaultRefreshInterval' + +function Get-TargetResource +{ + [CmdletBinding()] + [OutputType([hashtable])] + param + ( + [Parameter(Mandatory = $true)] + [string] + $Name + ) + + Assert-Module -Name DnsServer + + Write-Verbose ($LocalizedData.GettingDnsServerSettings) + $dnsServerInstance = Get-CimInstance -Namespace root\MicrosoftDNS -ClassName MicrosoftDNS_Server -ErrorAction Stop + + $returnValue = @{} + + foreach ($property in $properties) + { + $returnValue.Add($property, $dnsServerInstance."$property") + } + $returnValue.LogIPFilterList = (Get-PsDnsServerDiagnosticsClass).FilterIPAddressList + $returnValue.Name = $Name + + $returnValue +} + +function Set-TargetResource +{ + [CmdletBinding()] + param + ( + [Parameter(Mandatory = $true)] + [string] + $Name, + + [Parameter()] + [uint32] + $AddressAnswerLimit, + + [Parameter()] + [uint32] + $AllowUpdate, + + [Parameter()] + [bool] + $AutoCacheUpdate, + + [Parameter()] + [uint32] + $AutoConfigFileZones, + + [Parameter()] + [bool] + $BindSecondaries, + + [Parameter()] + [uint32] + $BootMethod, + + [Parameter()] + [bool] + $DefaultAgingState, + + [Parameter()] + [uint32] + $DefaultNoRefreshInterval, + + [Parameter()] + [uint32] + $DefaultRefreshInterval, + + [Parameter()] + [bool] + $DisableAutoReverseZones, + + [Parameter()] + [bool] + $DisjointNets, + + [Parameter()] + [uint32] + $DsPollingInterval, + + [Parameter()] + [uint32] + $DsTombstoneInterval, + + [Parameter()] + [uint32] + $EDnsCacheTimeout, + + [Parameter()] + [bool] + $EnableDirectoryPartitions, + + [Parameter()] + [uint32] + $EnableDnsSec, + + [Parameter()] + [bool] + $EnableEDnsProbes, + + [Parameter()] + [uint32] + $EventLogLevel, + + [Parameter()] + [uint32] + $ForwardDelegations, + + [Parameter()] + [string[]] + $Forwarders, + + [Parameter()] + [uint32] + $ForwardingTimeout, + + [Parameter()] + [bool] + $IsSlave, + + [Parameter()] + [string[]] + $ListenAddresses, + + [Parameter()] + [bool] + $LocalNetPriority, + + [Parameter()] + [uint32] + $LogFileMaxSize, + + [Parameter()] + [string] + $LogFilePath, + + [Parameter()] + [string[]] + $LogIPFilterList, + + [Parameter()] + [uint32] + $LogLevel, + + [Parameter()] + [bool] + $LooseWildcarding, + + [Parameter()] + [uint32] + $MaxCacheTTL, + + [Parameter()] + [uint32] + $MaxNegativeCacheTTL, + + [Parameter()] + [uint32] + $NameCheckFlag, + + [Parameter()] + [bool] + $NoRecursion, + + [Parameter()] + [uint32] + $RecursionRetry, + + [Parameter()] + [uint32] + $RecursionTimeout, + + [Parameter()] + [bool] + $RoundRobin, + + [Parameter()] + [int16] + $RpcProtocol, + + [Parameter()] + [uint32] + $ScavengingInterval, + + [Parameter()] + [bool] + $SecureResponses, + + [Parameter()] + [uint32] + $SendPort, + + [Parameter()] + [bool] + $StrictFileParsing, + + [Parameter()] + [uint32] + $UpdateOptions, + + [Parameter()] + [bool] + $WriteAuthorityNS, + + [Parameter()] + [uint32] + $XfrConnectTimeout + ) + + Assert-Module -Name DnsServer + + $PSBoundParameters.Remove('Name') + $dnsProperties = Remove-CommonParameter -Hashtable $PSBoundParameters + + $dnsServerInstance = Get-CimInstance -Namespace root\MicrosoftDNS -ClassName MicrosoftDNS_Server + + try + { + Foreach($property in $dnsProperties.keys) + { + Write-Verbose -Message ($LocalizedData.SetDnsServerSetting -f $property, $dnsProperties[$property]) + } + + Set-CimInstance -InputObject $dnsServerInstance -Property $dnsProperties -ErrorAction Stop + } + catch + { + throw $_ + } +} + +function Test-TargetResource +{ + [CmdletBinding()] + [OutputType([bool])] + param + ( + [Parameter(Mandatory = $true)] + [string] + $Name, + + [Parameter()] + [uint32] + $AddressAnswerLimit, + + [Parameter()] + [uint32] + $AllowUpdate, + + [Parameter()] + [bool] + $AutoCacheUpdate, + + [Parameter()] + [uint32] + $AutoConfigFileZones, + + [Parameter()] + [bool] + $BindSecondaries, + + [Parameter()] + [uint32] + $BootMethod, + + [Parameter()] + [bool] + $DefaultAgingState, + + [Parameter()] + [uint32] + $DefaultNoRefreshInterval, + + [Parameter()] + [uint32] + $DefaultRefreshInterval, + + [Parameter()] + [bool] + $DisableAutoReverseZones, + + [Parameter()] + [bool] + $DisjointNets, + + [Parameter()] + [uint32] + $DsPollingInterval, + + [Parameter()] + [uint32] + $DsTombstoneInterval, + + [Parameter()] + [uint32] + $EDnsCacheTimeout, + + [Parameter()] + [bool] + $EnableDirectoryPartitions, + + [Parameter()] + [uint32] + $EnableDnsSec, + + [Parameter()] + [bool] + $EnableEDnsProbes, + + [Parameter()] + [uint32] + $EventLogLevel, + + [Parameter()] + [uint32] + $ForwardDelegations, + + [Parameter()] + [string[]] + $Forwarders, + + [Parameter()] + [uint32] + $ForwardingTimeout, + + [Parameter()] + [bool] + $IsSlave, + + [Parameter()] + [string[]] + $ListenAddresses, + + [Parameter()] + [bool] + $LocalNetPriority, + + [Parameter()] + [uint32] + $LogFileMaxSize, + + [Parameter()] + [string] + $LogFilePath, + + [Parameter()] + [string[]] + $LogIPFilterList, + + [Parameter()] + [uint32] + $LogLevel, + + [Parameter()] + [bool] + $LooseWildcarding, + + [Parameter()] + [uint32] + $MaxCacheTTL, + + [Parameter()] + [uint32] + $MaxNegativeCacheTTL, + + [Parameter()] + [uint32] + $NameCheckFlag, + + [Parameter()] + [bool] + $NoRecursion, + + [Parameter()] + [uint32] + $RecursionRetry, + + [Parameter()] + [uint32] + $RecursionTimeout, + + [Parameter()] + [bool] + $RoundRobin, + + [Parameter()] + [int16] + $RpcProtocol, + + [Parameter()] + [uint32] + $ScavengingInterval, + + [Parameter()] + [bool] + $SecureResponses, + + [Parameter()] + [uint32] + $SendPort, + + [Parameter()] + [bool] + $StrictFileParsing, + + [Parameter()] + [uint32] + $UpdateOptions, + + [Parameter()] + [bool] + $WriteAuthorityNS, + + [Parameter()] + [uint32] + $XfrConnectTimeout + ) + + Write-Verbose -Message 'Evaluating the DNS server settings.' + + $currentState = Get-TargetResource -Name $Name + + $desiredState = $PSBoundParameters + $result = Test-DscParameterState -CurrentValues $currentState -DesiredValues $desiredState -TurnOffTypeChecking -Verbose:$VerbosePreference + + return $result +} + +<# + .SYNOPSIS + Internal function to get results from the PS_DnsServerDiagnostics. + This is needed because LogIpFilterList is not returned by querying the MicrosoftDNS_Server class. +#> +function Get-PsDnsServerDiagnosticsClass +{ + [CmdletBinding()] + [OutputType([Microsoft.Management.Infrastructure.CimInstance])] + + $invokeCimMethodParameters = @{ + NameSpace = 'root/Microsoft/Windows/DNS' + ClassName = 'PS_DnsServerDiagnostics' + MethodName = 'Get' + ErrorAction = 'Stop' + } + + $cimDnsServerDiagnostics = Invoke-CimMethod @invokeCimMethodParameters + $cimDnsServerDiagnostics.cmdletOutput +} + +Export-ModuleMember -Function *-TargetResource diff --git a/DSCResources/MSFT_xDnsServerSetting/MSFT_xDnsServerSetting.schema.mof b/DSCResources/MSFT_xDnsServerSetting/MSFT_xDnsServerSetting.schema.mof index 8fadd933..d5064fe8 100644 --- a/DSCResources/MSFT_xDnsServerSetting/MSFT_xDnsServerSetting.schema.mof +++ b/DSCResources/MSFT_xDnsServerSetting/MSFT_xDnsServerSetting.schema.mof @@ -1,51 +1,51 @@ - -[ClassVersion("1.0.0.0"), FriendlyName("xDnsServerSetting")] -class MSFT_xDnsServerSetting : OMI_BaseResource -{ - [Key, Description("Key for the resource. It doesn't matter what it is as long as it's unique within the configuration.")] String Name; - [Write, Description("Maximum number of host records returned in response to an address request. Values between 5 and 28 are valid.")] Uint32 AddressAnswerLimit; - [Write, Description("Specifies whether the DNS Server accepts dynamic update requests.")] Uint32 AllowUpdate; - [Write, Description("Indicates whether the DNS Server attempts to update its cache entries using data from root servers.")] Boolean AutoCacheUpdate; - [Write, Description("Indicates which standard primary zones that are authoritative for the name of the DNS Server must be updated when the name server changes.")] Uint32 AutoConfigFileZones; - [Write, Description("Determines the AXFR message format when sending to non-Microsoft DNS Server secondaries")] Boolean BindSecondaries; - [Write, Description("Initialization method for the DNS Server.")] Uint32 BootMethod; - [Write, Description("Default ScavengingInterval value set for all Active Directory-integrated zones created on this DNS Server.")] Boolean DefaultAgingState; - [Write, Description("No-refresh interval, in hours, set for all Active Directory-integrated zones created on this DNS Server.")] Uint32 DefaultNoRefreshInterval; - [Write, Description("Refresh interval, in hours, set for all Active Directory-integrated zones created on this DNS Server.")] Uint32 DefaultRefreshInterval; - [Write, Description("Indicates whether the DNS Server automatically creates standard reverse look up zones.")] Boolean DisableAutoReverseZones; - [Write, Description("Indicates whether the default port binding for a socket used to send queries to remote DNS Servers can be overridden.")] Boolean DisjointNets; - [Write, Description("Interval, in seconds, to poll the DS-integrated zones.")] Uint32 DsPollingInterval; - [Write, Description("Lifetime of tombstoned records in Directory Service integrated zones, expressed in seconds.")] Uint32 DsTombstoneInterval; - [Write, Description("Lifetime, in seconds, of the cached information describing the EDNS version supported by other DNS Servers.")] Uint32 EDnsCacheTimeout; - [Write, Description("Specifies whether support for application directory partitions is enabled on the DNS Server.")] Boolean EnableDirectoryPartitions; - [Write, Description("Specifies whether the DNS Server includes DNSSEC-specific RRs, KEY, SIG, and NXT in a response.")] Uint32 EnableDnsSec; - [Write, Description("Specifies the behavior of the DNS Server. When TRUE, the DNS Server always responds with OPT resource records according to RFC 2671, unless the remote server has indicated it does not support EDNS in a prior exchange. If FALSE, the DNS Server responds to queries with OPTs only if OPTs are sent in the original query.")] Boolean EnableEDnsProbes; - [Write, Description("Indicates which events the DNS Server records in the Event Viewer system log.")] Uint32 EventLogLevel; - [Write, Description("Specifies whether queries to delegated sub-zones are forwarded.")] Uint32 ForwardDelegations; - [Write, Description("Enumerates the list of IP addresses of Forwarders to which the DNS Server forwards queries.")] String Forwarders[]; - [Write, Description("Time, in seconds, a DNS Server forwarding a query will wait for resolution from the forwarder before attempting to resolve the query itself.")] Uint32 ForwardingTimeout; - [Write, Description("TRUE if the DNS server does not use recursion when name-resolution through forwarders fails.")] Boolean IsSlave; - [Write, Description("Enumerates the list of IP addresses on which the DNS Server can receive queries.")] String ListenAddresses[]; - [Write, Description("Indicates whether the DNS Server gives priority to the local net address when returning A records.")] Boolean LocalNetPriority; - [Write, Description("Size of the DNS Server debug log, in bytes.")] Uint32 LogFileMaxSize; - [Write, Description("File name and path for the DNS Server debug log.")] String LogFilePath; - [Write, Description("List of IP addresses used to filter DNS events written to the debug log.")] String LogIPFilterList[]; - [Write, Description("Indicates which policies are activated in the Event Viewer system log.")] Uint32 LogLevel; - [Write, Description("Indicates whether the DNS Server performs loose wildcarding.")] Boolean LooseWildcarding; - [Write, Description("Maximum time, in seconds, the record of a recursive name query may remain in the DNS Server cache.")] Uint32 MaxCacheTTL; - [Write, Description("Maximum time, in seconds, a name error result from a recursive query may remain in the DNS Server cache.")] Uint32 MaxNegativeCacheTTL; - [Write, Description("Indicates the set of eligible characters to be used in DNS names.")] Uint32 NameCheckFlag; - [Write, Description("Indicates whether the DNS Server performs recursive look ups. TRUE indicates recursive look ups are not performed.")] Boolean NoRecursion; - [Write, Description("Elapsed seconds before retrying a recursive look up.")] Uint32 RecursionRetry; - [Write, Description("Elapsed seconds before the DNS Server gives up recursive query.")] Uint32 RecursionTimeout; - [Write, Description("Indicates whether the DNS Server round robins multiple A records.")] Boolean RoundRobin; - [Write, Description("RPC protocol or protocols over which administrative RPC runs.")] Sint16 RpcProtocol; - [Write, Description("Interval, in hours, between two consecutive scavenging operations performed by the DNS Server.")] Uint32 ScavengingInterval; - [Write, Description("Indicates whether the DNS Server exclusively saves records of names in the same subtree as the server that provided them.")] Boolean SecureResponses; - [Write, Description("Port on which the DNS Server sends UDP queries to other servers.")] Uint32 SendPort; - [Write, Description("Indicates whether the DNS Server parses zone files strictly.")] Boolean StrictFileParsing; - [Write, Description("Restricts the type of records that can be dynamically updated on the server, used in addition to the AllowUpdate settings on Server and Zone objects.")] Uint32 UpdateOptions; - [Write, Description("Specifies whether the DNS Server writes NS and SOA records to the authority section on successful response.")] Boolean WriteAuthorityNS; - [Write, Description("Time, in seconds, the DNS Server waits for a successful TCP connection to a remote server when attempting a zone transfer.")] Uint32 XfrConnectTimeout; - [Read, Description("Indicates whether there is an available DS on the DNS Server.")] Boolean DsAvailable; -}; + +[ClassVersion("1.0.0.0"), FriendlyName("xDnsServerSetting")] +class MSFT_xDnsServerSetting : OMI_BaseResource +{ + [Key, Description("Key for the resource. It doesn't matter what it is as long as it's unique within the configuration.")] String Name; + [Write, Description("Maximum number of host records returned in response to an address request. Values between 5 and 28 are valid.")] Uint32 AddressAnswerLimit; + [Write, Description("Specifies whether the DNS Server accepts dynamic update requests.")] Uint32 AllowUpdate; + [Write, Description("Indicates whether the DNS Server attempts to update its cache entries using data from root servers.")] Boolean AutoCacheUpdate; + [Write, Description("Indicates which standard primary zones that are authoritative for the name of the DNS Server must be updated when the name server changes.")] Uint32 AutoConfigFileZones; + [Write, Description("Determines the AXFR message format when sending to non-Microsoft DNS Server secondaries")] Boolean BindSecondaries; + [Write, Description("Initialization method for the DNS Server.")] Uint32 BootMethod; + [Write, Description("Default ScavengingInterval value set for all Active Directory-integrated zones created on this DNS Server.")] Boolean DefaultAgingState; + [Write, Description("No-refresh interval, in hours, set for all Active Directory-integrated zones created on this DNS Server.")] Uint32 DefaultNoRefreshInterval; + [Write, Description("Refresh interval, in hours, set for all Active Directory-integrated zones created on this DNS Server.")] Uint32 DefaultRefreshInterval; + [Write, Description("Indicates whether the DNS Server automatically creates standard reverse look up zones.")] Boolean DisableAutoReverseZones; + [Write, Description("Indicates whether the default port binding for a socket used to send queries to remote DNS Servers can be overridden.")] Boolean DisjointNets; + [Write, Description("Interval, in seconds, to poll the DS-integrated zones.")] Uint32 DsPollingInterval; + [Write, Description("Lifetime of tombstoned records in Directory Service integrated zones, expressed in seconds.")] Uint32 DsTombstoneInterval; + [Write, Description("Lifetime, in seconds, of the cached information describing the EDNS version supported by other DNS Servers.")] Uint32 EDnsCacheTimeout; + [Write, Description("Specifies whether support for application directory partitions is enabled on the DNS Server.")] Boolean EnableDirectoryPartitions; + [Write, Description("Specifies whether the DNS Server includes DNSSEC-specific RRs, KEY, SIG, and NXT in a response.")] Uint32 EnableDnsSec; + [Write, Description("Specifies the behavior of the DNS Server. When TRUE, the DNS Server always responds with OPT resource records according to RFC 2671, unless the remote server has indicated it does not support EDNS in a prior exchange. If FALSE, the DNS Server responds to queries with OPTs only if OPTs are sent in the original query.")] Boolean EnableEDnsProbes; + [Write, Description("Indicates which events the DNS Server records in the Event Viewer system log.")] Uint32 EventLogLevel; + [Write, Description("Specifies whether queries to delegated sub-zones are forwarded.")] Uint32 ForwardDelegations; + [Write, Description("Enumerates the list of IP addresses of Forwarders to which the DNS Server forwards queries.")] String Forwarders[]; + [Write, Description("Time, in seconds, a DNS Server forwarding a query will wait for resolution from the forwarder before attempting to resolve the query itself.")] Uint32 ForwardingTimeout; + [Write, Description("TRUE if the DNS server does not use recursion when name-resolution through forwarders fails.")] Boolean IsSlave; + [Write, Description("Enumerates the list of IP addresses on which the DNS Server can receive queries.")] String ListenAddresses[]; + [Write, Description("Indicates whether the DNS Server gives priority to the local net address when returning A records.")] Boolean LocalNetPriority; + [Write, Description("Size of the DNS Server debug log, in bytes.")] Uint32 LogFileMaxSize; + [Write, Description("File name and path for the DNS Server debug log.")] String LogFilePath; + [Write, Description("List of IP addresses used to filter DNS events written to the debug log.")] String LogIPFilterList[]; + [Write, Description("Indicates which policies are activated in the Event Viewer system log.")] Uint32 LogLevel; + [Write, Description("Indicates whether the DNS Server performs loose wildcarding.")] Boolean LooseWildcarding; + [Write, Description("Maximum time, in seconds, the record of a recursive name query may remain in the DNS Server cache.")] Uint32 MaxCacheTTL; + [Write, Description("Maximum time, in seconds, a name error result from a recursive query may remain in the DNS Server cache.")] Uint32 MaxNegativeCacheTTL; + [Write, Description("Indicates the set of eligible characters to be used in DNS names.")] Uint32 NameCheckFlag; + [Write, Description("Indicates whether the DNS Server performs recursive look ups. TRUE indicates recursive look ups are not performed.")] Boolean NoRecursion; + [Write, Description("Elapsed seconds before retrying a recursive look up.")] Uint32 RecursionRetry; + [Write, Description("Elapsed seconds before the DNS Server gives up recursive query.")] Uint32 RecursionTimeout; + [Write, Description("Indicates whether the DNS Server round robins multiple A records.")] Boolean RoundRobin; + [Write, Description("RPC protocol or protocols over which administrative RPC runs.")] Sint16 RpcProtocol; + [Write, Description("Interval, in hours, between two consecutive scavenging operations performed by the DNS Server.")] Uint32 ScavengingInterval; + [Write, Description("Indicates whether the DNS Server exclusively saves records of names in the same subtree as the server that provided them.")] Boolean SecureResponses; + [Write, Description("Port on which the DNS Server sends UDP queries to other servers.")] Uint32 SendPort; + [Write, Description("Indicates whether the DNS Server parses zone files strictly.")] Boolean StrictFileParsing; + [Write, Description("Restricts the type of records that can be dynamically updated on the server, used in addition to the AllowUpdate settings on Server and Zone objects.")] Uint32 UpdateOptions; + [Write, Description("Specifies whether the DNS Server writes NS and SOA records to the authority section on successful response.")] Boolean WriteAuthorityNS; + [Write, Description("Time, in seconds, the DNS Server waits for a successful TCP connection to a remote server when attempting a zone transfer.")] Uint32 XfrConnectTimeout; + [Read, Description("Indicates whether there is an available DS on the DNS Server.")] Boolean DsAvailable; +}; diff --git a/Misc/MockObjects/DnsServerClass.xml b/Misc/MockObjects/DnsServerClass.xml index 93d4fd36..76d1f61d 100644 --- a/Misc/MockObjects/DnsServerClass.xml +++ b/Misc/MockObjects/DnsServerClass.xml @@ -1,144 +1,144 @@ - - - - Microsoft.Management.Infrastructure.CimInstance#root/MicrosoftDNS/MicrosoftDNS_Server - Microsoft.Management.Infrastructure.CimInstance#ROOT/MicrosoftDNS/CIM_Service - Microsoft.Management.Infrastructure.CimInstance#ROOT/MicrosoftDNS/CIM_LogicalElement - Microsoft.Management.Infrastructure.CimInstance#ROOT/MicrosoftDNS/CIM_ManagedSystemElement - Microsoft.Management.Infrastructure.CimInstance#MicrosoftDNS_Server - Microsoft.Management.Infrastructure.CimInstance#CIM_Service - Microsoft.Management.Infrastructure.CimInstance#CIM_LogicalElement - Microsoft.Management.Infrastructure.CimInstance#CIM_ManagedSystemElement - Microsoft.Management.Infrastructure.CimInstance - System.Object - - MicrosoftDNS_Server (Name = "DC1.contoso.com") - - - - - DC1.contoso.com - OK - - true - Automatic - - - 0 - 1 - false - 1 - false - 3 - false - 168 - 168 - false - false - true - 180 - 1209600 - 900 - true - 1 - true - 4 - 0 - - - System.String[] - System.Array - System.Object - - - 168.63.129.16 - 8.8.8.8 - - - 3 - true - - - - 10.0.0.4 - - - true - 500000000 - C:\Windows\System32\DNS\DNS.log - - 50393905 - false - 86400 - 900 - 2 - false - 3 - 8 - true - 5 - 168 - true - 0 - - - - fe80::7da3:a014:6581:2cdc - 10.0.0.4 - - - false - 783 - 629146374 - false - 30 - - - - - - System.Collections.ArrayList - System.Object - - - - - CIM_ManagedSystemElement - ROOT/MicrosoftDNS - DC1 - -549583800 - <CLASS NAME="CIM_ManagedSystemElement"><QUALIFIER NAME="Abstract" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Description" TYPE="string"><VALUE>The ManagedSystemElement class is the base class for the system element hierarchy. Membership Criteria: Any distinguishable component of a system is a candidate for inclusion in this class.&lt;P&gt;Examples: Software components, such as files; and devices, such as disk drives and controllers, and physical components such as chips and cards.</VALUE></QUALIFIER><QUALIFIER NAME="Locale" TYPE="sint32" TOSUBCLASS="false"><VALUE>1033</VALUE></QUALIFIER><QUALIFIER NAME="UUID" TYPE="string" TOSUBCLASS="false"><VALUE>{8502C517-5FBB-11D2-AAC1-006008C78BC7}</VALUE></QUALIFIER><PROPERTY NAME="Caption" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The Caption property is a short textual description (one-line string) of the object.</VALUE></QUALIFIER><QUALIFIER NAME="MaxLen" TYPE="sint32"><VALUE>64</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Description" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The Description property provides a textual description of the object. </VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="InstallDate" TYPE="datetime"><QUALIFIER NAME="Description" TYPE="string"><VALUE>A datetime value indicating when the object was installed. A lack of a value does not indicate that the object is not installed.</VALUE></QUALIFIER><QUALIFIER NAME="MappingStrings" TYPE="string"><VALUE.ARRAY><VALUE>MIF.DMTF|ComponentID|001.5</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Name" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The Name property defines the label by which the object is known. When subclassed, the Name property can be overridden to be a Key property.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Status" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>A string indicating the current status of the object.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="ValueMap" TYPE="string"><VALUE.ARRAY><VALUE>OK</VALUE><VALUE>Error</VALUE><VALUE>Degraded</VALUE><VALUE>Unknown</VALUE></VALUE.ARRAY></QUALIFIER></PROPERTY></CLASS> - - - - - CIM_LogicalElement - ROOT/MicrosoftDNS - DC1 - -549567160 - <CLASS NAME="CIM_LogicalElement" SUPERCLASS="CIM_ManagedSystemElement"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The CIM_LogicalElement class is the base class for all the components of the system that represent abstract system components.&lt;P&gt;Example: Profiles, processes, or system capabilities in the form of logical devices.</VALUE></QUALIFIER><QUALIFIER NAME="Abstract" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Locale" TYPE="sint32" TOSUBCLASS="false"><VALUE>1033</VALUE></QUALIFIER><QUALIFIER NAME="UUID" TYPE="string" TOSUBCLASS="false"><VALUE>{8502C518-5FBB-11D2-AAC1-006008C78BC7}</VALUE></QUALIFIER></CLASS> - - - - - CIM_Service - ROOT/MicrosoftDNS - DC1 - -549556760 - <CLASS NAME="CIM_Service" SUPERCLASS="CIM_LogicalElement"><QUALIFIER NAME="Description" TYPE="string"><VALUE>A logical element that contains the information necessary to represent and manage the functionality provided by a Device and/or SoftwareFeature. A Service is a general-purpose object to configure and manage the implementation of functionality. It is not the functionality itself.</VALUE></QUALIFIER><QUALIFIER NAME="Abstract" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Locale" TYPE="sint32" TOSUBCLASS="false"><VALUE>1033</VALUE></QUALIFIER><QUALIFIER NAME="UUID" TYPE="string" TOSUBCLASS="false"><VALUE>{8502C527-5FBB-11D2-AAC1-006008C78BC7}</VALUE></QUALIFIER><PROPERTY NAME="Name" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The Name property uniquely identifies the Service and provides an indication of the functionality that is managed. This functionality is described in more detail in the object&apos;s Description property. </VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="key" TYPE="boolean" OVERRIDABLE="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Override" TYPE="string"><VALUE>Name</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="CreationClassName" TYPE="string"><QUALIFIER NAME="CIM_Key" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Started" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>ServiceStarted is a boolean indicating whether the Service has been started (TRUE), or stopped (FALSE).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="StartMode" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>StartMode is a string value indicating whether the Service is automatically started by a System, Operating System, etc. or only started upon request.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="ValueMap" TYPE="string"><VALUE.ARRAY><VALUE>Automatic</VALUE><VALUE>Manual</VALUE></VALUE.ARRAY></QUALIFIER></PROPERTY><PROPERTY NAME="SystemCreationClassName" TYPE="string"><QUALIFIER NAME="CIM_Key" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Description" TYPE="string"><VALUE>The type name of the system that hosts this service</VALUE></QUALIFIER><QUALIFIER NAME="Propagated" TYPE="string"><VALUE>CIM_System.CreationClassName</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="SystemName" TYPE="string"><QUALIFIER NAME="CIM_Key" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Description" TYPE="string"><VALUE>The name of the system that hosts this service</VALUE></QUALIFIER><QUALIFIER NAME="Propagated" TYPE="string"><VALUE>CIM_System.Name</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><METHOD NAME="StartService" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The StartService method places the Service in the started state. It returns an integer value of 0 if the Service was successfully started, 1 if the request is not supported and any other number to indicate an error.</VALUE></QUALIFIER></METHOD><METHOD NAME="StopService" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The StopService method places the Service in the stopped state. It returns an integer value of 0 if the Service was successfully stopped, 1 if the request is not supported and any other number to indicate an error.</VALUE></QUALIFIER></METHOD></CLASS> - - - - - MicrosoftDNS_Server - root/MicrosoftDNS - DC1 - -549553640 - <CLASS NAME="MicrosoftDNS_Server" SUPERCLASS="CIM_Service"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This class describes a DNS server. Every instance of this class may be associated with (or more intuitively &apos;may contain&apos;) one instance of class MicrosoftDNS_Cache, one instance of class MicrosoftDNS_RootHints and multiple instances of class MicrosoftDNS_Zone.</VALUE></QUALIFIER><QUALIFIER NAME="dynamic" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Locale" TYPE="sint32" TOSUBCLASS="false"><VALUE>1033</VALUE></QUALIFIER><QUALIFIER NAME="provider" TYPE="string" TOSUBCLASS="false"><VALUE>MS_NT_DNS_PROVIDER</VALUE></QUALIFIER><QUALIFIER NAME="Schema" TYPE="string"><VALUE>MicrosoftDNS</VALUE></QUALIFIER><QUALIFIER NAME="UUID" TYPE="string" TOSUBCLASS="false"><VALUE>{3E9F9B09-AA43-11d2-85DD-0000F8102E5F}</VALUE></QUALIFIER><PROPERTY NAME="Name" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the Fully Qualified Domain Name or IP address of the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="key" TYPE="boolean" OVERRIDABLE="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Override" TYPE="string"><VALUE>Name</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="AddressAnswerLimit" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the maximum number of host records returned in response to an address request. Values between 5 and 28 are valid.</VALUE></QUALIFIER><QUALIFIER NAME="Not_NULL" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="AllowUpdate" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This UInt32 indicates whether the DNS server accepts dynamic update requests.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>Do not allow dynamic updates</VALUE><VALUE>Allow unsecure dynamic updates</VALUE><VALUE>Allow only secure dynamic updates</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="AutoCacheUpdate" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server attempts to update its cache entries using data from root servers. When a DNS server boots, it needs a list of root server &apos;hints&apos; - NS and A records for the servers - historically called the cache file. The Microsoft DNS server has a feature to allow it to attempt to write back a new cache file based on the responses from the root servers.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="AutoConfigFileZones" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Uint32 indicates which standard primary zones authoritative for the name of the DNS server must be updated when the name of the server changes. The default value of this property is 1.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Valuemap" TYPE="string"><VALUE.ARRAY><VALUE>0</VALUE><VALUE>1</VALUE><VALUE>2</VALUE><VALUE>3</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>None</VALUE><VALUE>Only those that allow dynamic updates</VALUE><VALUE>Only those that do not allow dynamic updates</VALUE><VALUE>All</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="BindSecondaries" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This property determines the AXFR message format when sending to non-Microsoft DNS secondaries. If this property is TRUE, the server will send transfers to non-Microsoft DNS secondaries in the uncompressed format. If this property is FALSE, the server will send all transfers in the fast format.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="BootMethod" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the DNS server&apos;s initialization method.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>Uninitialized</VALUE><VALUE>Boot from file</VALUE><VALUE>Boot from registry</VALUE><VALUE>Boot from directory and registry</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DefaultAgingState" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the value of Enable Scavenging flag to be set for all Active Directory-integrated zones created on this server. The default value 0 corresponds to the Disabled scavenging of a zone.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DefaultNoRefreshInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the value of No-Refresh Interval to be set for all Active Directory-integrated zones created on this server. The default value of this property is 168 hours (7 days).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Hours</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DefaultRefreshInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the value of Refresh Interval to be set for all Active Directory-integrated zones created on this server. The default value of this property is 168 hours (7 days).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Hours</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DisableAutoReverseZones" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This property indicates whether the DNS server automatically creates standard reverse lookup zones.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DisjointNets" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether override is allowed of the default binding for a socket used to send queries to remote DNS servers.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DsAvailable" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether there is an available DS on the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DsPollingInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the interval (in seconds) to poll for changes in DS-integrated zones.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DsTombstoneInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The lifetime (in seconds) of tombstoned records in DS-integrated zones.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EDnsCacheTimeout" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the lifetime in seconds of the cached information describing the EDNS version supported by other DNS servers.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EnableDirectoryPartitions" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This value is TRUE if support for application directory partitions is enabled on this server.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EnableDnsSec" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies whether the DNS server includes the DNSSEC specific RRs, KEY,SIG and NXT, in the response. If this value is 0, then no DNSSEC records are included in response, unless the query was requesting an RRset of the DNSSEC record type. If this value is 1, then DNSSEC records are included in response according to the RFC 2535. If this value is 2, then DNSSEC records are included in response only if the original client query contained the OPT RR according to the RFC 2671. If a query was requesting an RRset of the DNSSEC record type the DNS server will always respond with such records if they are available.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EnableEDnsProbes" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the behavior of the DNS server with regard to the EDNS specified in the RFC 2671. If this value is FALSE, then the DNS server responds to the queries with response containing OPTs if OPTs are send in the original query, but doesn&apos;t include unsolicited OPTs in queries to other servers.If this value is TRUE then the server always OPT RRs according to RFC 2671 unless the remote server hasindicated that it does not support EDNS in a prior exchange.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EventLogLevel" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates which events the DNS server records in the Event Viewer system log.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Valuemap" TYPE="string"><VALUE.ARRAY><VALUE>0</VALUE><VALUE>1</VALUE><VALUE>2</VALUE><VALUE>4</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>None</VALUE><VALUE>Log only errors</VALUE><VALUE>Log only warnings and errors</VALUE><VALUE>Log all events</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="ForwardDelegations" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This property indicates whether queries to delegated sub-zones are forwarded.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY.ARRAY NAME="Forwarders" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE> This array of IP addresses are the servers to which this DNS server forwards queries that cannot be resolved with local data.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY.ARRAY><PROPERTY NAME="ForwardingTimeout" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates how long (in seconds) a DNS server, forwarding a query to a remote server listed in &quot;Forwarders&quot; will wait for a reply.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="IsSlave" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>A slave server will not attempt recursion if forwarding fails.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY.ARRAY NAME="ListenAddresses" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This array of strings enumerates the list of IP addresses on which the DNS server is allowed to receive queries.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY.ARRAY><PROPERTY NAME="LocalNetPriority" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server gives priority to the local net address returning A records.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="LogFileMaxSize" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The size in bytes of the DNS server&apos;s debug log.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="LogFilePath" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The file name for the DNS server&apos;s debug log. By the file is system32\dns\dns.log. You may change this value. A relative path path is relative to SystemRoot\System32. You may also use absolute paths, but UNC paths are not supported.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY.ARRAY NAME="LogIPFilterList" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>List of IP addresses used to filter DNS events written to DNS server&apos;s debug log.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY.ARRAY><PROPERTY NAME="LogLevel" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This property controls what packets and events are written to the DNS server&apos;s debug log. This property should be set to specific values based on the following algorithm: Each policy is assigned a specific value: Query - 1, Notify - 16, Update - 32, Non-query transactions - 254, Questions - 256, Answers - 512, Send - 4096, Receive - 8192, UDP - 16384, TCP - 32768, All packets - 65535, Directory Service write transaction - 65536, Directory Service update transaction - 131072, Full Packets - 16777216, and Write Through - 2147483648. The sum of the values corresponding to all the policies to be activated is indicated in this property.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Valuemap" TYPE="string"><VALUE.ARRAY><VALUE>1</VALUE><VALUE>16</VALUE><VALUE>32</VALUE><VALUE>254</VALUE><VALUE>256</VALUE><VALUE>512</VALUE><VALUE>4096</VALUE><VALUE>8192</VALUE><VALUE>16384</VALUE><VALUE>32768</VALUE><VALUE>65535</VALUE><VALUE>65536</VALUE><VALUE>131072</VALUE><VALUE>16777216</VALUE><VALUE>2147483648</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>Query</VALUE><VALUE>Notify</VALUE><VALUE>Update</VALUE><VALUE>Non-query transactions</VALUE><VALUE>Questions</VALUE><VALUE>Answers</VALUE><VALUE>Send</VALUE><VALUE>Receive</VALUE><VALUE>UDP</VALUE><VALUE>TCP</VALUE><VALUE>All packets</VALUE><VALUE>NT Directory Service write transaction</VALUE><VALUE>NT Directory Service update transaction</VALUE><VALUE>Full Packets</VALUE><VALUE>Write Through</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="LooseWildcarding" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server does wildcarding loosely. If the LooseWildcarding property is undefined or zero, the server will follow the wildcarding behavior specified in the DNS RFC. In this case, an admin is advised to include MX records for all hosts that are not capable of receiving mail. If the LooseWildcarding property is non-zero, the server seeks out the closest wildcard node. In this case, an admin should put MX records at both the zone root and in a wildcard node (&apos;*&apos;) directly below the zone root. Also, the admin should put self-referent MX records on hosts, which are to receive their own mail.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="MaxCacheTTL" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates a maximum time (in seconds) a record from a recursive name query may remain in the DNS server cache. The DNS server deletes records from the cache when the value of this entry expires, even if the value of the TTL field in the record is greater. The default value of this property is 86,400 seconds (1 day).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="MaxNegativeCacheTTL" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates a maximum time (in seconds) a name error result from a recursive name query may remain in the DNS server cache. The DNS server deletes records from the cache when the value of this entry expires, even if the value of the TTL field in the record is greater. The default value of this property is 86,400 seconds (1 day).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="NameCheckFlag" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the set of eligible characters to be used in DNS names.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Valuemap" TYPE="string"><VALUE.ARRAY><VALUE>0</VALUE><VALUE>1</VALUE><VALUE>2</VALUE><VALUE>3</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>Strict RFC (ANSI)</VALUE><VALUE>Non RFC (ANSI)</VALUE><VALUE>Multibyte (UTF8)</VALUE><VALUE>Any</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="NoRecursion" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server does NOT do recursive lookups. If set to TRUE, recursive lookups are not done.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="RecursionRetry" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the interval (in seconds) before retrying a recursive lookup. If the RecursionRetry property is undefined or zero, retries are made after three seconds. Users are discouraged from altering this property. However, there are some scenarios where the property should be changed. One example is when the DNS server contacts remote servers over a slow link, and the DNS server is retrying BEFORE reception of a response from the remote DNS. In this case, raising the RecursionRetry timeout to be slightly longer than the observed response time from the remote DNS would be reasonable.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="RecursionTimeout" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the timeout (in seconds) before the DNS server gives up recursive query. If the RecursionTimeout property is undefined or zero, the DNS server gives up after fifteen seconds. In general, the fifteen-second timeout is sufficient to allow any outstanding response to get back to the DNS server. Users are discouraged from altering this property. One scenario where the property should be changed is when the DNS server contacts remote servers over a slow link, and the DNS server is observed rejecting queries (with SERVER_FAILURE) before responses are received. (Note, that client resolvers also retry queries, so careful investigation is required to determine that remote responses are really for the query that was timed out.) In this case, raising the RecursionTimeout to be slightly longer than the observed response time from the remote DNS would be reasonable.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="RoundRobin" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server round robins multiple A records.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="RpcProtocol" TYPE="sint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the protocols over which administrative RPC runs. This property should be set to specific value based on the following algorithm: Every protocol to be used in RPC is assigned a specific value: None: 0, TCP/IP: 1, Named Pipes: 2, LPC: 4. The sum of the values corresponding to all the protocols to be used in RPC is indicated in this property.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="ScavengingInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the time interval between two consecutive scavenging operations performed by the server. Zero value means that scavenging is not enabled on the server.The default value of this property is 168 hours (7 days).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Hours</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="SecureResponses" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server onlycaches resource records that are in the same subtree as the DNS server that provided them.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="SendPort" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the port on which the DNS server sends UDP queries to other servers. By default, the DNS server sends queries on a socket bound to the DNS port. Sometimes this situation is NOT desirable. The most obvious case occurs when an admin firewalls off the DNS port, to prevent outside access to the DNS server, but still wants the server to be able to contact Internet DNS servers to provide name resolution for internal clients. This is also desirable if the DNS server is supporting disjoint nets (if true, the boolean property, DisjointNets, would be set to TRUE). In these cases, setting the SendPort property to a non-zero value causes the DNS server to bind to an arbitrary port for sending to remote DNS servers.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY.ARRAY NAME="ServerAddresses" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This array of strings enumerates the list of the DNS server&apos;s IP addresses.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY.ARRAY><PROPERTY NAME="StrictFileParsing" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server parses zone files strictly. If the StrictFileParsing property is undefined or zero, the server will log and ignore bad data in the zone file and continue to load. If the StrictFileParsing property is non-zero, the server will log and fail on zone file errors.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="UpdateOptions" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This value restricts the type of records that can be dynamically updated on the server. This parameter is a further restriction on dynamic updates applied after the AllowUpdate setting on Server and Zone objects. Use these values: &quot;No restrictions&quot; = 0, &quot;Do not allow dynamic updates of SOA records&quot; = 1, &quot;Do not allow dynamic updates of NS records at the zone root&quot; = 2, &quot;Do not allow dynamic updates of NS records not at the zone root (delegation NS records)&quot; = 4. Sum these values to determine the setting value. </VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Version" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the version of the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="WriteAuthorityNS" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server writes NS and SOA records to the authority section on successful response.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="XfrConnectTimeout" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Timeout in seconds the DNS server will wait for a successful TCP connection to a remote server when attempting a zone transfer.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><METHOD NAME="StartService" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This method starts the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="Implemented" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER></METHOD><METHOD NAME="StopService" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This method stops the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="Implemented" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER></METHOD><METHOD NAME="StartScavenging" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This method starts the scavenging of stale records in the zones subjected to scavenging.</VALUE></QUALIFIER><QUALIFIER NAME="Implemented" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER></METHOD><METHOD NAME="GetDistinguishedName" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This method get DS distinguished Name for the zone.</VALUE></QUALIFIER><QUALIFIER NAME="Implemented" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER></METHOD></CLASS> - - - - - - - + + + + Microsoft.Management.Infrastructure.CimInstance#root/MicrosoftDNS/MicrosoftDNS_Server + Microsoft.Management.Infrastructure.CimInstance#ROOT/MicrosoftDNS/CIM_Service + Microsoft.Management.Infrastructure.CimInstance#ROOT/MicrosoftDNS/CIM_LogicalElement + Microsoft.Management.Infrastructure.CimInstance#ROOT/MicrosoftDNS/CIM_ManagedSystemElement + Microsoft.Management.Infrastructure.CimInstance#MicrosoftDNS_Server + Microsoft.Management.Infrastructure.CimInstance#CIM_Service + Microsoft.Management.Infrastructure.CimInstance#CIM_LogicalElement + Microsoft.Management.Infrastructure.CimInstance#CIM_ManagedSystemElement + Microsoft.Management.Infrastructure.CimInstance + System.Object + + MicrosoftDNS_Server (Name = "DC1.contoso.com") + + + + + DC1.contoso.com + OK + + true + Automatic + + + 0 + 1 + false + 1 + false + 3 + false + 168 + 168 + false + false + true + 180 + 1209600 + 900 + true + 1 + true + 4 + 0 + + + System.String[] + System.Array + System.Object + + + 168.63.129.16 + 8.8.8.8 + + + 3 + true + + + + 10.0.0.4 + + + true + 500000000 + C:\Windows\System32\DNS\DNS.log + + 50393905 + false + 86400 + 900 + 2 + false + 3 + 8 + true + 5 + 168 + true + 0 + + + + fe80::7da3:a014:6581:2cdc + 10.0.0.4 + + + false + 783 + 629146374 + false + 30 + + + + + + System.Collections.ArrayList + System.Object + + + + + CIM_ManagedSystemElement + ROOT/MicrosoftDNS + DC1 + -549583800 + <CLASS NAME="CIM_ManagedSystemElement"><QUALIFIER NAME="Abstract" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Description" TYPE="string"><VALUE>The ManagedSystemElement class is the base class for the system element hierarchy. Membership Criteria: Any distinguishable component of a system is a candidate for inclusion in this class.&lt;P&gt;Examples: Software components, such as files; and devices, such as disk drives and controllers, and physical components such as chips and cards.</VALUE></QUALIFIER><QUALIFIER NAME="Locale" TYPE="sint32" TOSUBCLASS="false"><VALUE>1033</VALUE></QUALIFIER><QUALIFIER NAME="UUID" TYPE="string" TOSUBCLASS="false"><VALUE>{8502C517-5FBB-11D2-AAC1-006008C78BC7}</VALUE></QUALIFIER><PROPERTY NAME="Caption" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The Caption property is a short textual description (one-line string) of the object.</VALUE></QUALIFIER><QUALIFIER NAME="MaxLen" TYPE="sint32"><VALUE>64</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Description" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The Description property provides a textual description of the object. </VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="InstallDate" TYPE="datetime"><QUALIFIER NAME="Description" TYPE="string"><VALUE>A datetime value indicating when the object was installed. A lack of a value does not indicate that the object is not installed.</VALUE></QUALIFIER><QUALIFIER NAME="MappingStrings" TYPE="string"><VALUE.ARRAY><VALUE>MIF.DMTF|ComponentID|001.5</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Name" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The Name property defines the label by which the object is known. When subclassed, the Name property can be overridden to be a Key property.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Status" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>A string indicating the current status of the object.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="ValueMap" TYPE="string"><VALUE.ARRAY><VALUE>OK</VALUE><VALUE>Error</VALUE><VALUE>Degraded</VALUE><VALUE>Unknown</VALUE></VALUE.ARRAY></QUALIFIER></PROPERTY></CLASS> + + + + + CIM_LogicalElement + ROOT/MicrosoftDNS + DC1 + -549567160 + <CLASS NAME="CIM_LogicalElement" SUPERCLASS="CIM_ManagedSystemElement"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The CIM_LogicalElement class is the base class for all the components of the system that represent abstract system components.&lt;P&gt;Example: Profiles, processes, or system capabilities in the form of logical devices.</VALUE></QUALIFIER><QUALIFIER NAME="Abstract" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Locale" TYPE="sint32" TOSUBCLASS="false"><VALUE>1033</VALUE></QUALIFIER><QUALIFIER NAME="UUID" TYPE="string" TOSUBCLASS="false"><VALUE>{8502C518-5FBB-11D2-AAC1-006008C78BC7}</VALUE></QUALIFIER></CLASS> + + + + + CIM_Service + ROOT/MicrosoftDNS + DC1 + -549556760 + <CLASS NAME="CIM_Service" SUPERCLASS="CIM_LogicalElement"><QUALIFIER NAME="Description" TYPE="string"><VALUE>A logical element that contains the information necessary to represent and manage the functionality provided by a Device and/or SoftwareFeature. A Service is a general-purpose object to configure and manage the implementation of functionality. It is not the functionality itself.</VALUE></QUALIFIER><QUALIFIER NAME="Abstract" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Locale" TYPE="sint32" TOSUBCLASS="false"><VALUE>1033</VALUE></QUALIFIER><QUALIFIER NAME="UUID" TYPE="string" TOSUBCLASS="false"><VALUE>{8502C527-5FBB-11D2-AAC1-006008C78BC7}</VALUE></QUALIFIER><PROPERTY NAME="Name" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The Name property uniquely identifies the Service and provides an indication of the functionality that is managed. This functionality is described in more detail in the object&apos;s Description property. </VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="key" TYPE="boolean" OVERRIDABLE="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Override" TYPE="string"><VALUE>Name</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="CreationClassName" TYPE="string"><QUALIFIER NAME="CIM_Key" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Started" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>ServiceStarted is a boolean indicating whether the Service has been started (TRUE), or stopped (FALSE).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="StartMode" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>StartMode is a string value indicating whether the Service is automatically started by a System, Operating System, etc. or only started upon request.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="ValueMap" TYPE="string"><VALUE.ARRAY><VALUE>Automatic</VALUE><VALUE>Manual</VALUE></VALUE.ARRAY></QUALIFIER></PROPERTY><PROPERTY NAME="SystemCreationClassName" TYPE="string"><QUALIFIER NAME="CIM_Key" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Description" TYPE="string"><VALUE>The type name of the system that hosts this service</VALUE></QUALIFIER><QUALIFIER NAME="Propagated" TYPE="string"><VALUE>CIM_System.CreationClassName</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="SystemName" TYPE="string"><QUALIFIER NAME="CIM_Key" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Description" TYPE="string"><VALUE>The name of the system that hosts this service</VALUE></QUALIFIER><QUALIFIER NAME="Propagated" TYPE="string"><VALUE>CIM_System.Name</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><METHOD NAME="StartService" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The StartService method places the Service in the started state. It returns an integer value of 0 if the Service was successfully started, 1 if the request is not supported and any other number to indicate an error.</VALUE></QUALIFIER></METHOD><METHOD NAME="StopService" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The StopService method places the Service in the stopped state. It returns an integer value of 0 if the Service was successfully stopped, 1 if the request is not supported and any other number to indicate an error.</VALUE></QUALIFIER></METHOD></CLASS> + + + + + MicrosoftDNS_Server + root/MicrosoftDNS + DC1 + -549553640 + <CLASS NAME="MicrosoftDNS_Server" SUPERCLASS="CIM_Service"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This class describes a DNS server. Every instance of this class may be associated with (or more intuitively &apos;may contain&apos;) one instance of class MicrosoftDNS_Cache, one instance of class MicrosoftDNS_RootHints and multiple instances of class MicrosoftDNS_Zone.</VALUE></QUALIFIER><QUALIFIER NAME="dynamic" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Locale" TYPE="sint32" TOSUBCLASS="false"><VALUE>1033</VALUE></QUALIFIER><QUALIFIER NAME="provider" TYPE="string" TOSUBCLASS="false"><VALUE>MS_NT_DNS_PROVIDER</VALUE></QUALIFIER><QUALIFIER NAME="Schema" TYPE="string"><VALUE>MicrosoftDNS</VALUE></QUALIFIER><QUALIFIER NAME="UUID" TYPE="string" TOSUBCLASS="false"><VALUE>{3E9F9B09-AA43-11d2-85DD-0000F8102E5F}</VALUE></QUALIFIER><PROPERTY NAME="Name" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the Fully Qualified Domain Name or IP address of the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="key" TYPE="boolean" OVERRIDABLE="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Override" TYPE="string"><VALUE>Name</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="AddressAnswerLimit" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the maximum number of host records returned in response to an address request. Values between 5 and 28 are valid.</VALUE></QUALIFIER><QUALIFIER NAME="Not_NULL" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="AllowUpdate" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This UInt32 indicates whether the DNS server accepts dynamic update requests.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>Do not allow dynamic updates</VALUE><VALUE>Allow unsecure dynamic updates</VALUE><VALUE>Allow only secure dynamic updates</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="AutoCacheUpdate" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server attempts to update its cache entries using data from root servers. When a DNS server boots, it needs a list of root server &apos;hints&apos; - NS and A records for the servers - historically called the cache file. The Microsoft DNS server has a feature to allow it to attempt to write back a new cache file based on the responses from the root servers.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="AutoConfigFileZones" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Uint32 indicates which standard primary zones authoritative for the name of the DNS server must be updated when the name of the server changes. The default value of this property is 1.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Valuemap" TYPE="string"><VALUE.ARRAY><VALUE>0</VALUE><VALUE>1</VALUE><VALUE>2</VALUE><VALUE>3</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>None</VALUE><VALUE>Only those that allow dynamic updates</VALUE><VALUE>Only those that do not allow dynamic updates</VALUE><VALUE>All</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="BindSecondaries" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This property determines the AXFR message format when sending to non-Microsoft DNS secondaries. If this property is TRUE, the server will send transfers to non-Microsoft DNS secondaries in the uncompressed format. If this property is FALSE, the server will send all transfers in the fast format.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="BootMethod" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the DNS server&apos;s initialization method.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>Uninitialized</VALUE><VALUE>Boot from file</VALUE><VALUE>Boot from registry</VALUE><VALUE>Boot from directory and registry</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DefaultAgingState" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the value of Enable Scavenging flag to be set for all Active Directory-integrated zones created on this server. The default value 0 corresponds to the Disabled scavenging of a zone.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DefaultNoRefreshInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the value of No-Refresh Interval to be set for all Active Directory-integrated zones created on this server. The default value of this property is 168 hours (7 days).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Hours</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DefaultRefreshInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the value of Refresh Interval to be set for all Active Directory-integrated zones created on this server. The default value of this property is 168 hours (7 days).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Hours</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DisableAutoReverseZones" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This property indicates whether the DNS server automatically creates standard reverse lookup zones.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DisjointNets" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether override is allowed of the default binding for a socket used to send queries to remote DNS servers.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DsAvailable" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether there is an available DS on the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DsPollingInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the interval (in seconds) to poll for changes in DS-integrated zones.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DsTombstoneInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The lifetime (in seconds) of tombstoned records in DS-integrated zones.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EDnsCacheTimeout" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the lifetime in seconds of the cached information describing the EDNS version supported by other DNS servers.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EnableDirectoryPartitions" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This value is TRUE if support for application directory partitions is enabled on this server.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EnableDnsSec" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies whether the DNS server includes the DNSSEC specific RRs, KEY,SIG and NXT, in the response. If this value is 0, then no DNSSEC records are included in response, unless the query was requesting an RRset of the DNSSEC record type. If this value is 1, then DNSSEC records are included in response according to the RFC 2535. If this value is 2, then DNSSEC records are included in response only if the original client query contained the OPT RR according to the RFC 2671. If a query was requesting an RRset of the DNSSEC record type the DNS server will always respond with such records if they are available.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EnableEDnsProbes" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the behavior of the DNS server with regard to the EDNS specified in the RFC 2671. If this value is FALSE, then the DNS server responds to the queries with response containing OPTs if OPTs are send in the original query, but doesn&apos;t include unsolicited OPTs in queries to other servers.If this value is TRUE then the server always OPT RRs according to RFC 2671 unless the remote server hasindicated that it does not support EDNS in a prior exchange.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EventLogLevel" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates which events the DNS server records in the Event Viewer system log.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Valuemap" TYPE="string"><VALUE.ARRAY><VALUE>0</VALUE><VALUE>1</VALUE><VALUE>2</VALUE><VALUE>4</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>None</VALUE><VALUE>Log only errors</VALUE><VALUE>Log only warnings and errors</VALUE><VALUE>Log all events</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="ForwardDelegations" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This property indicates whether queries to delegated sub-zones are forwarded.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY.ARRAY NAME="Forwarders" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE> This array of IP addresses are the servers to which this DNS server forwards queries that cannot be resolved with local data.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY.ARRAY><PROPERTY NAME="ForwardingTimeout" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates how long (in seconds) a DNS server, forwarding a query to a remote server listed in &quot;Forwarders&quot; will wait for a reply.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="IsSlave" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>A slave server will not attempt recursion if forwarding fails.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY.ARRAY NAME="ListenAddresses" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This array of strings enumerates the list of IP addresses on which the DNS server is allowed to receive queries.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY.ARRAY><PROPERTY NAME="LocalNetPriority" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server gives priority to the local net address returning A records.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="LogFileMaxSize" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The size in bytes of the DNS server&apos;s debug log.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="LogFilePath" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The file name for the DNS server&apos;s debug log. By the file is system32\dns\dns.log. You may change this value. A relative path path is relative to SystemRoot\System32. You may also use absolute paths, but UNC paths are not supported.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY.ARRAY NAME="LogIPFilterList" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>List of IP addresses used to filter DNS events written to DNS server&apos;s debug log.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY.ARRAY><PROPERTY NAME="LogLevel" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This property controls what packets and events are written to the DNS server&apos;s debug log. This property should be set to specific values based on the following algorithm: Each policy is assigned a specific value: Query - 1, Notify - 16, Update - 32, Non-query transactions - 254, Questions - 256, Answers - 512, Send - 4096, Receive - 8192, UDP - 16384, TCP - 32768, All packets - 65535, Directory Service write transaction - 65536, Directory Service update transaction - 131072, Full Packets - 16777216, and Write Through - 2147483648. The sum of the values corresponding to all the policies to be activated is indicated in this property.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Valuemap" TYPE="string"><VALUE.ARRAY><VALUE>1</VALUE><VALUE>16</VALUE><VALUE>32</VALUE><VALUE>254</VALUE><VALUE>256</VALUE><VALUE>512</VALUE><VALUE>4096</VALUE><VALUE>8192</VALUE><VALUE>16384</VALUE><VALUE>32768</VALUE><VALUE>65535</VALUE><VALUE>65536</VALUE><VALUE>131072</VALUE><VALUE>16777216</VALUE><VALUE>2147483648</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>Query</VALUE><VALUE>Notify</VALUE><VALUE>Update</VALUE><VALUE>Non-query transactions</VALUE><VALUE>Questions</VALUE><VALUE>Answers</VALUE><VALUE>Send</VALUE><VALUE>Receive</VALUE><VALUE>UDP</VALUE><VALUE>TCP</VALUE><VALUE>All packets</VALUE><VALUE>NT Directory Service write transaction</VALUE><VALUE>NT Directory Service update transaction</VALUE><VALUE>Full Packets</VALUE><VALUE>Write Through</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="LooseWildcarding" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server does wildcarding loosely. If the LooseWildcarding property is undefined or zero, the server will follow the wildcarding behavior specified in the DNS RFC. In this case, an admin is advised to include MX records for all hosts that are not capable of receiving mail. If the LooseWildcarding property is non-zero, the server seeks out the closest wildcard node. In this case, an admin should put MX records at both the zone root and in a wildcard node (&apos;*&apos;) directly below the zone root. Also, the admin should put self-referent MX records on hosts, which are to receive their own mail.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="MaxCacheTTL" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates a maximum time (in seconds) a record from a recursive name query may remain in the DNS server cache. The DNS server deletes records from the cache when the value of this entry expires, even if the value of the TTL field in the record is greater. The default value of this property is 86,400 seconds (1 day).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="MaxNegativeCacheTTL" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates a maximum time (in seconds) a name error result from a recursive name query may remain in the DNS server cache. The DNS server deletes records from the cache when the value of this entry expires, even if the value of the TTL field in the record is greater. The default value of this property is 86,400 seconds (1 day).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="NameCheckFlag" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the set of eligible characters to be used in DNS names.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Valuemap" TYPE="string"><VALUE.ARRAY><VALUE>0</VALUE><VALUE>1</VALUE><VALUE>2</VALUE><VALUE>3</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>Strict RFC (ANSI)</VALUE><VALUE>Non RFC (ANSI)</VALUE><VALUE>Multibyte (UTF8)</VALUE><VALUE>Any</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="NoRecursion" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server does NOT do recursive lookups. If set to TRUE, recursive lookups are not done.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="RecursionRetry" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the interval (in seconds) before retrying a recursive lookup. If the RecursionRetry property is undefined or zero, retries are made after three seconds. Users are discouraged from altering this property. However, there are some scenarios where the property should be changed. One example is when the DNS server contacts remote servers over a slow link, and the DNS server is retrying BEFORE reception of a response from the remote DNS. In this case, raising the RecursionRetry timeout to be slightly longer than the observed response time from the remote DNS would be reasonable.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="RecursionTimeout" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the timeout (in seconds) before the DNS server gives up recursive query. If the RecursionTimeout property is undefined or zero, the DNS server gives up after fifteen seconds. In general, the fifteen-second timeout is sufficient to allow any outstanding response to get back to the DNS server. Users are discouraged from altering this property. One scenario where the property should be changed is when the DNS server contacts remote servers over a slow link, and the DNS server is observed rejecting queries (with SERVER_FAILURE) before responses are received. (Note, that client resolvers also retry queries, so careful investigation is required to determine that remote responses are really for the query that was timed out.) In this case, raising the RecursionTimeout to be slightly longer than the observed response time from the remote DNS would be reasonable.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="RoundRobin" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server round robins multiple A records.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="RpcProtocol" TYPE="sint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the protocols over which administrative RPC runs. This property should be set to specific value based on the following algorithm: Every protocol to be used in RPC is assigned a specific value: None: 0, TCP/IP: 1, Named Pipes: 2, LPC: 4. The sum of the values corresponding to all the protocols to be used in RPC is indicated in this property.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="ScavengingInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the time interval between two consecutive scavenging operations performed by the server. Zero value means that scavenging is not enabled on the server.The default value of this property is 168 hours (7 days).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Hours</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="SecureResponses" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server onlycaches resource records that are in the same subtree as the DNS server that provided them.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="SendPort" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the port on which the DNS server sends UDP queries to other servers. By default, the DNS server sends queries on a socket bound to the DNS port. Sometimes this situation is NOT desirable. The most obvious case occurs when an admin firewalls off the DNS port, to prevent outside access to the DNS server, but still wants the server to be able to contact Internet DNS servers to provide name resolution for internal clients. This is also desirable if the DNS server is supporting disjoint nets (if true, the boolean property, DisjointNets, would be set to TRUE). In these cases, setting the SendPort property to a non-zero value causes the DNS server to bind to an arbitrary port for sending to remote DNS servers.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY.ARRAY NAME="ServerAddresses" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This array of strings enumerates the list of the DNS server&apos;s IP addresses.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY.ARRAY><PROPERTY NAME="StrictFileParsing" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server parses zone files strictly. If the StrictFileParsing property is undefined or zero, the server will log and ignore bad data in the zone file and continue to load. If the StrictFileParsing property is non-zero, the server will log and fail on zone file errors.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="UpdateOptions" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This value restricts the type of records that can be dynamically updated on the server. This parameter is a further restriction on dynamic updates applied after the AllowUpdate setting on Server and Zone objects. Use these values: &quot;No restrictions&quot; = 0, &quot;Do not allow dynamic updates of SOA records&quot; = 1, &quot;Do not allow dynamic updates of NS records at the zone root&quot; = 2, &quot;Do not allow dynamic updates of NS records not at the zone root (delegation NS records)&quot; = 4. Sum these values to determine the setting value. </VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Version" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the version of the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="WriteAuthorityNS" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server writes NS and SOA records to the authority section on successful response.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="XfrConnectTimeout" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Timeout in seconds the DNS server will wait for a successful TCP connection to a remote server when attempting a zone transfer.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><METHOD NAME="StartService" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This method starts the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="Implemented" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER></METHOD><METHOD NAME="StopService" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This method stops the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="Implemented" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER></METHOD><METHOD NAME="StartScavenging" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This method starts the scavenging of stale records in the zones subjected to scavenging.</VALUE></QUALIFIER><QUALIFIER NAME="Implemented" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER></METHOD><METHOD NAME="GetDistinguishedName" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This method get DS distinguished Name for the zone.</VALUE></QUALIFIER><QUALIFIER NAME="Implemented" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER></METHOD></CLASS> + + + + + + + diff --git a/Tests/Integration/MSFT_xDnsServerDiagnostics.Integration.ps1 b/Tests/Integration/MSFT_xDnsServerDiagnostics.Integration.ps1 new file mode 100644 index 00000000..55c9f538 --- /dev/null +++ b/Tests/Integration/MSFT_xDnsServerDiagnostics.Integration.ps1 @@ -0,0 +1,60 @@ + +$script:DSCModuleName = 'xDnsServer' +$script:DSCResourceName = 'MSFT_xDnsServerDiagnostics' + +#region HEADER +# Integration Test Template Version: 1.1.1 +$script:moduleRoot = Split-Path -Parent (Split-Path -Parent $PSScriptRoot) +if ( (-not (Test-Path -Path (Join-Path -Path $script:moduleRoot -ChildPath 'DSCResource.Tests'))) -or ` +(-not (Test-Path -Path (Join-Path -Path $script:moduleRoot -ChildPath 'DSCResource.Tests\TestHelper.psm1'))) ) +{ + & git @('clone','https://github.com/PowerShell/DscResource.Tests.git',(Join-Path -Path $script:moduleRoot -ChildPath '\DSCResource.Tests\')) +} + +Import-Module -Name (Join-Path -Path $script:moduleRoot -ChildPath (Join-Path -Path 'DSCResource.Tests' -ChildPath 'TestHelper.psm1')) -Force +$testEnvironment = Initialize-TestEnvironment ` +-DSCModuleName $script:DSCModuleName ` +-DSCResourceName $script:DSCResourceName ` +-TestType Integration + +#endregion + +try +{ + #region Integration Tests + $configFile = Join-Path -Path $PSScriptRoot -ChildPath "$($script:DSCResourceName).config.ps1" + . $configFile + + Describe "$($script:DSCResourceName)_Integration" { + #region DEFAULT TESTS + It 'Should compile and apply the MOF without throwing' { + { + & "$($script:DSCResourceName)_Config" -OutputPath $testEnvironment.WorkingFolder + Start-DscConfiguration -Path $testEnvironment.WorkingFolder ` + -ComputerName localhost -Wait -Verbose -Force + } | Should not throw + } + + It 'Should be able to call Get-DscConfiguration without throwing' { + { Get-DscConfiguration -Verbose -ErrorAction Stop } | Should Not throw + } + #endregion + + It 'Should have set the resource and all the parameters should match' { + Import-Module "$PSScriptRoot\..\..\DSCResources\MSFT_xDnsServerSetting\MSFT_xDnsServerDiagnostics.psm1" -Force + + Test-TargetResource @testParameters | Should be $true + } + } + #endregion + +} +finally +{ + #region FOOTER + + Restore-TestEnvironment -TestEnvironment $testEnvironment + + #endregion + +} diff --git a/Tests/Integration/MSFT_xDnsServerDiagnostics.config.ps1 b/Tests/Integration/MSFT_xDnsServerDiagnostics.config.ps1 new file mode 100644 index 00000000..65fbae0a --- /dev/null +++ b/Tests/Integration/MSFT_xDnsServerDiagnostics.config.ps1 @@ -0,0 +1,81 @@ + +$testParameters = @{ + Name = 'xDnsServerSetting_Integration' + Answers = $true + EnableLogFileRollover = $true + EnableLoggingForLocalLookupEvent = $true + EnableLoggingForPluginDllEvent = $true + EnableLoggingForRecursiveLookupEvent = $true + EnableLoggingForRemoteServerEvent = $true + EnableLoggingForServerStartStopEvent = $true + EnableLoggingForTombstoneEvent = $true + EnableLoggingForZoneDataWriteEvent = $true + EnableLoggingForZoneLoadingEvent = $true + EnableLoggingToFile = $true + EventLogLevel = 4 + FilterIPAddressList = "192.168.1.1","192.168.1.2" + FullPackets = $true + LogFilePath = 'C:\Windows\System32\DNS\DNSDiagnostics.log' + MaxMBFileSize = 500000000 + Notifications = $true + Queries = $true + QuestionTransactions = $true + ReceivePackets = $true + SaveLogsToPersistentStorage = $true + SendPackets = $true + TcpPackets = $true + UdpPackets = $true + UnmatchedResponse = $true + Update = $true + UseSystemEventLog = $true + WriteThrough = $true +} + +configuration MSFT_xDnsServerDiagnostics_config { + + Import-DscResource -ModuleName xDnsServer + + node localhost + { + WindowsFeature InstallDns + { + Name = 'DNS' + Ensure = 'Present' + IncludeAllSubFeature = $true + } + + xDnsServerDiagnostics Integration_Test { + + Name = $testParameters.Name + Answers = $testParameters.Answers + EnableLogFileRollover = $testParameters.EnableLogFileRollover + EnableLoggingForLocalLookupEvent = $testParameters.EnableLoggingForLocalLookupEvent + EnableLoggingForPluginDllEvent = $testParameters.EnableLoggingForPluginDllEvent + EnableLoggingForRecursiveLookupEvent = $testParameters.EnableLoggingForRecursiveLookupEvent + EnableLoggingForRemoteServerEvent = $testParameters.EnableLoggingForRemoteServerEvent + EnableLoggingForServerStartStopEvent = $testParameters.EnableLoggingForServerStartStopEvent + EnableLoggingForTombstoneEvent = $testParameters.EnableLoggingForTombstoneEvent + EnableLoggingForZoneDataWriteEvent = $testParameters.EnableLoggingForZoneDataWriteEvent + EnableLoggingForZoneLoadingEvent = $testParameters.EnableLoggingForZoneLoadingEvent + EnableLoggingToFile = $testParameters.EnableLoggingToFile + EventLogLevel = $testParameters.EventLogLevel + FilterIPAddressList = $testParameters.FilterIPAddressList + FullPackets = $testParameters.FullPackets + LogFilePath = $testParameters.LogFilePath + MaxMBFileSize = $testParameters.MaxMBFileSize + Notifications = $testParameters.Notifications + Queries = $testParameters.Queries + QuestionTransactions = $testParameters.QuestionTransactions + ReceivePackets = $testParameters.ReceivePackets + SaveLogsToPersistentStorage = $testParameters.SaveLogsToPersistentStorage + SendPackets = $testParameters.SendPackets + TcpPackets = $testParameters.TcpPackets + UdpPackets = $testParameters.UdpPackets + UnmatchedResponse = $testParameters.UnmatchedResponse + Update = $testParameters.Update + UseSystemEventLog = $testParameters.UseSystemEventLog + WriteThrough = $testParameters.WriteThrough + DependsOn = '[WindowsFeature]InstallDns' + } + } +} diff --git a/Tests/Unit/MSFT_xDnsServerDiagnostics.Tests.ps1 b/Tests/Unit/MSFT_xDnsServerDiagnostics.Tests.ps1 new file mode 100644 index 00000000..5567a2c0 --- /dev/null +++ b/Tests/Unit/MSFT_xDnsServerDiagnostics.Tests.ps1 @@ -0,0 +1,232 @@ + +$script:DSCModuleName = 'xDnsServer' +$script:DSCResourceName = 'MSFT_xDnsServerDiagnostics' + +#region HEADER +# Unit Test Template Version: 1.1.0 +$moduleRoot = Split-Path -Parent (Split-Path -Parent (Split-Path -Parent $Script:MyInvocation.MyCommand.Path)) +if ( (-not (Test-Path -Path (Join-Path -Path $moduleRoot -ChildPath 'DSCResource\Tests'))) -or ` +(-not (Test-Path -Path (Join-Path -Path $moduleRoot -ChildPath 'DSCResource\Tests\TestHelper.psm1'))) ) +{ + & git @('clone','https://github.com/PowerShell/DscResource.Tests.git',(Join-Path -Path $moduleRoot -ChildPath '\DSCResource.Tests\')) +} + +Import-Module (Join-Path -Path $moduleRoot -ChildPath 'DSCResource.Tests\TestHelper.psm1') -Force +$testEnvironment = Initialize-TestEnvironment ` +-DSCModuleName $script:DSCModuleName ` +-DSCResourceName $script:DSCResourceName ` +-TestType Unit +#endregion HEADER + +# Begin Testing +try +{ + InModuleScope $script:DSCResourceName { + function Get-DnsServerDiagnostics {} + function Set-DnsServerDiagnostics {} + #region Pester Test Initialization + $testParameters = @{ + Name = 'xDnsServerDiagnostics_Integration' + Answers = $true + EnableLogFileRollover = $true + EnableLoggingForLocalLookupEvent = $true + EnableLoggingForPluginDllEvent = $true + EnableLoggingForRecursiveLookupEvent = $true + EnableLoggingForRemoteServerEvent = $true + EnableLoggingForServerStartStopEvent = $true + EnableLoggingForTombstoneEvent = $true + EnableLoggingForZoneDataWriteEvent = $true + EnableLoggingForZoneLoadingEvent = $true + EnableLoggingToFile = $true + EventLogLevel = 4 + FilterIPAddressList = "192.168.1.1","192.168.1.2" + FullPackets = $true + LogFilePath = 'C:\Windows\System32\DNS\DNSDiagnostics.log' + MaxMBFileSize = 500000000 + Notifications = $true + Queries = $true + QuestionTransactions = $true + ReceivePackets = $true + SaveLogsToPersistentStorage = $true + SendPackets = $true + TcpPackets = $true + UdpPackets = $true + UnmatchedResponse = $true + Update = $true + UseSystemEventLog = $true + WriteThrough = $true + } + + $mockGetDnsServerDiagnostics = @{ + Name = 'xDnsServerDiagnostics_Integration' + Answers = $true + EnableLogFileRollover = $true + EnableLoggingForLocalLookupEvent = $true + EnableLoggingForPluginDllEvent = $true + EnableLoggingForRecursiveLookupEvent = $true + EnableLoggingForRemoteServerEvent = $true + EnableLoggingForServerStartStopEvent = $true + EnableLoggingForTombstoneEvent = $true + EnableLoggingForZoneDataWriteEvent = $true + EnableLoggingForZoneLoadingEvent = $true + EnableLoggingToFile = $true + EventLogLevel = 4 + FilterIPAddressList = "192.168.1.1","192.168.1.2" + FullPackets = $true + LogFilePath = 'C:\Windows\System32\DNS\DNSDiagnostics.log' + MaxMBFileSize = 500000000 + Notifications = $true + Queries = $true + QuestionTransactions = $true + ReceivePackets = $true + SaveLogsToPersistentStorage = $true + SendPackets = $true + TcpPackets = $true + UdpPackets = $true + UnmatchedResponse = $true + Update = $true + UseSystemEventLog = $true + WriteThrough = $true + } + + $commonParameters += [System.Management.Automation.PSCmdlet]::CommonParameters + $commonParameters += [System.Management.Automation.PSCmdlet]::OptionalCommonParameters + + $mockParameters = @{ + Verbose = $true + Debug = $true + ErrorAction = 'stop' + WarningAction = 'Continue' + InformationAction = 'Continue' + ErrorVariable = 'err' + WarningVariable = 'warn' + OutVariable = 'out' + OutBuffer = 'outbuff' + PipelineVariable = 'pipe' + InformationVariable = 'info' + WhatIf = $true + Confirm = $true + UseTransaction = $true + Name = 'DnsServerDiagnostic' + } + + #endregion Pester Test Initialization + + #region Example state 1 + Describe 'The system is not in the desired state' { + + Context 'Get-TargetResource' { + It "Get method returns 'something'" { + Mock Get-DnsServerDiagnostics -MockWith {$mockGetDnsServerDiagnostics} + Mock Assert-Module + $getResult = Get-TargetResource -Name 'DnsServerDiagnostic' + + foreach ($key in $getResult.Keys) + { + if ($null -ne $getResult[$key] -and $key -ne 'Name') + { + $getResult[$key] | Should be $mockGetDnsServerDiagnostics[$key] + } + } + } + + It 'Get throws when DnsServerDiagnostics is not found' { + $mockThrow = @{Exception = @{Message = 'Invalid Class'}} + Mock Get-DnsServerDiagnostics -MockWith {throw $mockThrow} + + {Get-TargetResource -Name 'DnsServerDiagnostics'} | should throw + } + } + + Context 'Test-TargetResource' { + + $falseParameters = @{Name = 'DnsServerDiagnostic'} + + foreach ($key in $testParameters.Keys) + { + if ($key -ne 'Name') + { + $falseTestParameters = $falseParameters.Clone() + $falseTestParameters.Add($key,$testParameters[$key]) + It "Test method returns false when testing $key" { + Mock Get-TargetResource -MockWith {$mockGetDnsServerDiagnostics} + Test-TargetResource @falseTestParameters | Should be $false + } + } + } + } + + Context 'Error handling' { + It 'Test throws when DnsServerDiagnostics is not found' { + $mockThrow = @{Exception = @{Message = 'What to put here???'}} + Mock Get-DnsServerDiagnostics -MockWith {throw $mockThrow} + + {Get-TargetResource -Name 'xDnsServerSetting_Integration'} | should throw + } + } + + Context 'Set-TargetResource' { + It 'Set method calls Set-CimInstance' { + Mock Get-DnsServerDiagnostics -MockWith {$mockGetDnsServerDiagnostics} + Mock Set-DnsServerDiagnostics {} + + Set-TargetResource @testParameters + + Assert-MockCalled Set-DnsServerDiagnostics -Exactly 1 + } + } + } + #endregion Example state 1 + + #region Example state 2 + Describe 'The system is in the desired state' { + + Context 'Test-TargetResource' { + + Mock Get-TargetResource -MockWith { $mockGetDnsServerDiagnostics } + + $trueParameters = @{ Name = 'xDnsServerDiagnostics_Integration' } + + foreach ($key in $testParameters.Keys) + { + if ($key -ne 'Name') + { + $trueTestParameters = $trueParameters.Clone() + + $trueTestParameters.Add($key,$mockGetDnsServerDiagnostics[$key]) + + It "Test method returns true when testing $key" { + $result = Test-TargetResource @trueTestParameters + $result | Should be $true + } + } + } + + } + } + #endregion Example state 2 + + #region Non-Exported Function Unit Tests + + Describe 'Private functions' { + + Context 'Remove-CommonParameters' { + It 'Should not contain any common parameters' { + $removeResults = Remove-CommonParameter $mockParameters + + foreach ($key in $removeResults.Keys) + { + $commonParameters -notcontains $key | should be $true + } + } + } + } + #endregion Non-Exported Function Unit Tests + } +} +finally +{ + #region FOOTER + Restore-TestEnvironment -TestEnvironment $testEnvironment + #endregion +} From 24f0b81be0531ad90368123999e108cb7f4a5db0 Mon Sep 17 00:00:00 2001 From: japatton Date: Tue, 14 May 2019 08:44:26 -0500 Subject: [PATCH 08/13] Added entries into README.md --- .../MSFT_xDnsServerDiagnostics.schema.mof | Bin 7742 -> 7670 bytes README.md | 34 ++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/DSCResources/MSFT_xDnsServerDiagnostics/MSFT_xDnsServerDiagnostics.schema.mof b/DSCResources/MSFT_xDnsServerDiagnostics/MSFT_xDnsServerDiagnostics.schema.mof index 1a910690411cd260a2e648e81a01825fbd4bd006..a80000c46cc0d8c9a8aac6913dab7101d8e13f14 100644 GIT binary patch delta 20 ccmdmI^UZog5clLuEPb0 Date: Tue, 14 May 2019 09:32:46 -0500 Subject: [PATCH 09/13] Fixed encoding on files to meet requirements. --- .../MSFT_xDnsServerDiagnostics.psm1 | Bin 15454 -> 7453 bytes .../MSFT_xDnsServerDiagnostics.schema.mof | Bin 7670 -> 3800 bytes ...MSFT_xDnsServerDiagnostics.Integration.ps1 | 2 +- .../MSFT_xDnsServerDiagnostics.config.ps1 | 8 ++++---- .../Unit/MSFT_xDnsServerDiagnostics.Tests.ps1 | 6 +++--- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/DSCResources/MSFT_xDnsServerDiagnostics/MSFT_xDnsServerDiagnostics.psm1 b/DSCResources/MSFT_xDnsServerDiagnostics/MSFT_xDnsServerDiagnostics.psm1 index 94e3d4ed2fa5c046c784447be34c175875190d35..5028c2d475b5af237be5e7ee1d6568917c899bd3 100644 GIT binary patch literal 7453 zcmeHM-*4MC5PsKRK?DYz4wJBUZv_k_v6D4`oq3Vd0ZWU4k7X6BgOm3yUubhl)vI}kph{l!!Qy_u5LM3pMv1i2S{@eK`yhm#QzB5 zflGKl+0s;k=fzY}vg8p>lYb#z;4kmHNANS}>A6N51C18c9GB><5DG&oRw|HaOqU5Iq*VI zh-*E<2byeF{wLT79=l3 z1m#5C&$BoMb&;?bjhw#uY^Lx2_d?}`+I-95^gjG16=cDjV^|EE3_ei#sOUoqpG!cl zV`ZSH=C57@_vWDv;OUAoTq<0ABQr8lqJR=+x|RHPnOOV!`Q!$pZ^+(w=HI!LxTLCu z>g#453>!q-X@QVMnl?7v(WnPdTIqtF zHf|v*giM|=Zp~=Mj-(GfU@7AY?4qs*G~Uu4*lETZz)e>uy=<+ev1ak}JxIkF z)T6;=FxFBR?6mP0((43c-v7$ZSR04nK|4!M^;TI~89x?nrw#76vf=u@+apWo=ZA~11+EEK^y}(EPfmzpr^C|v;UesSYf98A$u^0oP9M%;yC^&0 zn(~hVL;_AS>#B>g1h>ghwQ#l(lu2rne`~NmBs&1t%(y24Zl}XD?sBsWt~o=h_vfA5 z@HJ*jT$#A~adQ)N*P1RD=K#1d04yH%7$f2|(12^gO_cwT&q>&TYrebqfABTnhL2@b zMUN1pYRqwow&K_<1J{7>_Q4Hpj%u)%t6_Bx`_6zHE(umZnhhDJzeQ1hb-K6@u4zps z**pqf?A+Uji?$6mj3~vmFKt<<<$0seQQW^opZCh`Aszj*bwE2&>G=ze#~#XBg1c0T zqx#l5N^gjjihLQ;q4SO+>B_jHDEd^|kwkkU>?oE#jdc`JS3(^{aj1}vrfCbHmy=k1 z(}TOaX6n~>t+ib321fey0PJb={&Ne`qfUB&hp)|5BR+ci9~^62(xRvP!9Y5~p$Bm2 zPe&JwLX>HLY~O>dJ_^`P+M^%?Ie8quNx7r?HyL$Q_a%N~4$DvHR8`pI|n~g#p zB&+H!WF21UJF@y3Oa`}*;bp<;R9{X^-`JGado3~}wyQtqS;kpSLHzpWNZ&N>@!K4w zQ(-UZS>Mxc8r^_=Q6BBP=c-<)p_{FGK*!%~jhdU+jJ$v8GAeAfI4LEDUW}bPm7`c* zGqRSCWYUT5Yeue*3~pilnvu=Q!L<{W06<`!{{HF}>84AG||i zJE9)3CW0j`yH~aAM8UK?gW^TDFc%~G2yROo-O3QLrIm>(LD(c;R^m*JP9Mx2sTnXo)x4I-Xe}w3Z9&Hti_mi?P rxfZYm937UojN`TpqtD&iFRc}@me*7}SCBnm?ZdyS%49$7AHx3wN`TbZ literal 15454 zcmeHOYj4{&6y@gu`wzlk!09j>YxiwHfFyOY21wJaaXMgWF{HNR8TBKul&;y(zrO99 z%h04GN~RRW`C=G;NhHs?4?gY{`QN|CYNl?~LM>III_fok4b`ohs*#FROP#56yau>C zL8(N&#r*}o->WWO@6{`mo8rz0CA#>I(b{v=?5KBg?ITLZ`1Lc|x>i>x%YWahZ{$71 zl?3ldouJ%6?oZU;C^1yM`+F?=kCcv3j<1&}J6E5j{X`uBc>&Z8cqYPguEwj{Wa7WR zr`po$DQYL`7%leDVhlN#g3nrHH&VOmJ23cBeZ_Z#ax5RA+#H|7RGkR*O|35O9;z>* zn}M`5gcc%c>-l|K`;a+-wy76$?}gm!3b!6GV#qs1i5M@<^#}}Zac2l-ufc=Xp_UiW zZ~`e#A@Lu0(OAgTwG@Lvx}KHVt;?&v+8UW9sbwPi%jpt^+ph3RgabX3t+Q?sN(8^udTOJL*2`ze zGKChY9p0t?wD0xbR(s+rU*(g%Ju-E{<^Zo1+ zo;QP?Y3)QEpf&m&KgViEJyRc~j_H+`>J8dT;P3qGt2^=h9d!x$?|?+#n1M5Uul69z zFvj&);1;VtQSJ(UK+F$0j2q!kUn5(Cyp#H8u3iE^>zO;~FIOT3dp5_sJG8QkcMJcQ zU_Q!W+V;|NoJ$R@jkG3AjTSsv_Y0TpGhypq*@xUQkbNU?XVr%B8`o3Wirdm}Xk!9i zqulr#!D6kFQMQ}u8KFHYFHH+R64o2F=8bQLB637Ogq$4nmP(JH#?NV!1?-;HOA96G z!}RqzW+vO4X!||%C|8Tde#Uy{fBkRmVWvGF*1qWMFYyA74fS6dE7S&EXpq)2$Ubg| zC}H{}=jk!#+==v1t_Ikb7pr-uoOe}j;mBdU$M>TbXV9h78z|L6eS&}7z_&PO&fzUq zmWT7MhFnLQGuYu4w&94>6RY?np-fFnQ-)ke63$Em>8o6g(HceeXt_&P^IoBqTOpm~>R87khid;vkJ}flD`Xd%O=CGA3i5(G|??q+E zbtL&6l90cNqwLxsD^b(-2|<2{L>vvSRx8o0G>_k%mg(!&ITs=OcxvtGX!963ihX#)P}X={NuOZWVE;`s^8c&K zGYr|!nOT)7*j{0F`vlDL{hU&8zY(M)vXi6)P>qo)dgl=jLj+ zD$g`>F*o*Qt-C&WGJcQo>1GdH7XIJ$xUEO_vDT}|5jb;9dq{t;%DN2M$MhU}H0$dz zw95J6OuT_BZ%VHtp>zCV#Ker6zn@iQS`XPT133;Kq-X6j)n)J@`#ARDtv3xYtiI~> zA^R9!K!Z=i(1+}2ILFGIfd@Zt{8MWnRGwm8$&%=Hm`K#5LtwZ+lwUJ97mS^6Nd5${klB#@*kX@EG?{4%{ zlx<`!Tblp!nR>>yd=B@RnR=TScjYL`qPu?5mH3`(1wI2gpR#=4rn!V>?4E*GdCqOqj5xBG=fPah73J$T z&5LW!qKw<7xtKgpSwAd z%X1h_Dna`njE+zxhnnVlnT>`roHw$}Y#GIwp~-;<^@M{c_v*@-n1 zoVnzt(mc4&Cch`k>koD3Q_D=8&%o45fgo9oe>KzJvHg3-1 zls$bWZ>YCzIhKGwb1Mz@7!- z-nTOSbfA4^5zP6}Y|Ub6nRU=7kKW*k|26*UvvDuQs@w~zpQlr^?|`wy{&Rb3Hhtwx zYB4C?S-HGY3qCw}9vYvpdt^7% zDmT^#o%(~LyIv~%beUXCzig$UKj^Q^(U()@`I^10UCO<0J;K-RpS?DMGI*ya}?xn5Dc4+*XpYkUkg zT$_u3Q&r;AKGYTQBby*L-qG5k7gTY_g>_@0A4l?Yq25`6Y-!X&r&Mb5fRB5p+>#E5 zhs8fK;1dS?)(E$7zkSdE|F^=6cPuPwzNh*ud+Eb#TOWWN6BHKfYLH zix0{LQYIrGY^PLdlt_dx0n2{033hQ01q^q|is_oTJNB710p<6qFKj8AuY#Ycpy)|@ zOBYrC0m~2^u^Dw&=cPNnrA28~))jvYT2%3V&{rMuIM`$9S#LLusg;J+sZXGTvNRQG zO;qB~azLL|sWW<1WsPR79Mg?*23GXx+&Sy|F(t3y-KfD#oACQ@6iq~{9E*&u(8@Wr zl#V}|kjgUjd^CKS3$PD^X+Spx8(P|WJt$T#=u>cNK1UA&trW=I*@a9I&uvkdXu`tT zfJXBuD6?d2ARnjE63ojM$9Bo8EL&7EDOYk|4L~>@N{=R=8cW97hugbOuJ}>T&1-;H zDt+LMIdOrDNps!_M8z0O=0IF1V(?a@8*!72nc%pSDA_0$>RB)91$q6IC4_PYpTu!G zplJaYRmx!}kPQR>I7WIYWSVXQ;W^ODs1x+{fQ*3m#M2;X?LlfFHeO# zff}83|B}_Q?~LDh%Bwti;c0p-kSSekB`VD4ebHB03cd zSC9%tBD zI}kPjmOWrw&ST=s-Fwphjd*+Y2!BV*kXMzg>^`~~qt2zQ@}rJ|1=s zPF-Q=*hu$AJ(%$a%T`}m)~zqBvxt-Y~J>sq1DuXbi*{q}8WSN6i5*|)ZC-%P*H z?4^BenQduSUvsbQRBLZ-PwNM|XT^@Xzfe0dc*v(5 zWVWl7TXtx_--A+SKZvWJwRT(UUb{4BcA&ir?RYJ2bB)>QPrqiG&F8KCr02IT(}vH^ zU9yq$m@tSrnVpN)SgR&>p}CpHP5SFjb6f8-;WG5MSN7cR2jXd>5BO&GQ53k(ghX5m zjnP3SB-pn%y=TUAe{-$pefvZ5u=__}d!g%F&oFWR86f9Ha5Y=yYtPIk|RWR}cyL&PtvFv7w$~FI{^l3E@9+jJ!R4kOQfQqQicB z;xl19a;XZZ9&#+_sgm`zRt|l~uH*Dd*FxBZo&Vo5hpbpqzeHi|-0?g-WijWQHS~5g zzb7vVDhD$(9#^Wc{iGjsGA?-!+wD!QIG46Br9-3}+I!jKNOxyG`%3yR6jve!Wb)aj zp5~=Z7P6(8V*`Pp&nQvfoYGze3{DkUu=s)WlsgXC`1^A7PEvIBz195-+53(@FEt(s zuWM;{%{`(my!K0~aIm5ArL7iL#M0a&7TE`1cpSSSCp7n2UHbu(foz)?oXK12p4N^R zfkxV)p08KSHky)CKj1gyO=9|~V>1y>?M0V57G%rVj}g197CP`WP*w#ODhF((9qTxp zqx?9Mzj3~)NyyZnuOIG~bv{iIIF-)O8?^|vYWPq)xcpY`vQh3)RZ5S857lC`nz}C< zWZ!ji;BYlrnW^ z)Kh)e;|Cwp3E(fpC;a}{M|26)($vVCdV^n${Vv7JJv|{(R45$znu&dH-}x#sFf|$) z?&+HNXkTu4rxKzLirRnM_BF8m_iQz2b;|FcYF=b8>mrGa)xS z^Sfw|`|ym7P<1b&Mb8PAO@31yPL3m9MlTlD9!Nv)RYNB`PHCbp`o!9_i-*R$bLl>0 z9|_T1l{QgxS(mX@uGnwPZ&MaBP#~S`7F&Wp`rpd`nz--CPOAP6?wH*sU#a`%T;fK0 z90&<4p6dIP+k5z8nl~#07Jew6!j_N+kKzm{tR-0){u@yY8;`S&x?kX1Je}|NQly>j zZYw{XUz2*odZbQK<16tymXwR5-mYV@t6nti-6_#%6ZwZ)cf^i3Wufy;=Q_*mn>f$B zh;#KdPbX2tr=jXHqEMV>MHh?}C9frh-{_8WGGb9Z{xgr95b>E7kkfy1;c2PD1_MPX9BA2>EpKSJ9$6v*O(1LQy`|ILowHokLNXS8GC|ze Date: Tue, 14 May 2019 09:55:58 -0500 Subject: [PATCH 10/13] Fixed Set-TargetResource --- .../MSFT_xDnsServerDiagnostics/MSFT_xDnsServerDiagnostics.psm1 | 1 + 1 file changed, 1 insertion(+) diff --git a/DSCResources/MSFT_xDnsServerDiagnostics/MSFT_xDnsServerDiagnostics.psm1 b/DSCResources/MSFT_xDnsServerDiagnostics/MSFT_xDnsServerDiagnostics.psm1 index 5028c2d4..cd9c7481 100644 --- a/DSCResources/MSFT_xDnsServerDiagnostics/MSFT_xDnsServerDiagnostics.psm1 +++ b/DSCResources/MSFT_xDnsServerDiagnostics/MSFT_xDnsServerDiagnostics.psm1 @@ -69,6 +69,7 @@ function Set-TargetResource [CmdletBinding()] param ( + [Parameter(Mandatory = $true)] [System.String] $Name, From 83cc49360bf88c608d8ae06b4a02bb9eca9d1d40 Mon Sep 17 00:00:00 2001 From: japatton Date: Tue, 14 May 2019 10:15:17 -0500 Subject: [PATCH 11/13] Fixed error with schema mof file. --- .../MSFT_xDnsServerDiagnostics.schema.mof | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DSCResources/MSFT_xDnsServerDiagnostics/MSFT_xDnsServerDiagnostics.schema.mof b/DSCResources/MSFT_xDnsServerDiagnostics/MSFT_xDnsServerDiagnostics.schema.mof index 78e5fa3b..503e9e50 100644 --- a/DSCResources/MSFT_xDnsServerDiagnostics/MSFT_xDnsServerDiagnostics.schema.mof +++ b/DSCResources/MSFT_xDnsServerDiagnostics/MSFT_xDnsServerDiagnostics.schema.mof @@ -3,7 +3,7 @@ class MSFT_xDnsServerDiagnostics : OMI_BaseResource { [Key, Description("Key for the resource. It doesn't matter what it is as long as it's unique within the configuration.")] String Name; - [Write, Description("Specifies whether to enable the logging of DNS responses."), Description(".")] Boolean Answers; + [Write, Description("Specifies whether to enable the logging of DNS responses.")] Boolean Answers; [Write, Description("Specifies whether to enable log file rollover.")] Boolean EnableLogFileRollover; [Write, Description("Specifies whether the DNS server logs local lookup events.")] Boolean EnableLoggingForLocalLookupEvent; [Write, Description("Specifies whether the DNS server logs dynamic link library (DLL) plug-in events.")] Boolean EnableLoggingForPluginDllEvent; From f64c438f54fe05cf60bb6d0153b27771304fef61 Mon Sep 17 00:00:00 2001 From: japatton <46757047+japatton@users.noreply.github.com> Date: Tue, 14 May 2019 11:53:57 -0500 Subject: [PATCH 12/13] Revert "xDnsServerDiagnostics: Added this resource to configure additional diagnostic settings." --- .../MSFT_xDnsRecord.schema.mof | 22 +- .../MSFT_xDnsServerDiagnostics.psm1 | 274 ----- .../MSFT_xDnsServerDiagnostics.schema.mof | 34 - .../MSFT_xDnsServerSetting.psm1 | 940 +++++++++--------- .../MSFT_xDnsServerSetting.schema.mof | 102 +- Misc/MockObjects/DnsServerClass.xml | 288 +++--- README.md | 34 - ...MSFT_xDnsServerDiagnostics.Integration.ps1 | 60 -- .../MSFT_xDnsServerDiagnostics.config.ps1 | 81 -- .../Unit/MSFT_xDnsServerDiagnostics.Tests.ps1 | 232 ----- 10 files changed, 676 insertions(+), 1391 deletions(-) delete mode 100644 DSCResources/MSFT_xDnsServerDiagnostics/MSFT_xDnsServerDiagnostics.psm1 delete mode 100644 DSCResources/MSFT_xDnsServerDiagnostics/MSFT_xDnsServerDiagnostics.schema.mof delete mode 100644 Tests/Integration/MSFT_xDnsServerDiagnostics.Integration.ps1 delete mode 100644 Tests/Integration/MSFT_xDnsServerDiagnostics.config.ps1 delete mode 100644 Tests/Unit/MSFT_xDnsServerDiagnostics.Tests.ps1 diff --git a/DSCResources/MSFT_xDnsRecord/MSFT_xDnsRecord.schema.mof b/DSCResources/MSFT_xDnsRecord/MSFT_xDnsRecord.schema.mof index 3ee7560a..31ce61e9 100644 --- a/DSCResources/MSFT_xDnsRecord/MSFT_xDnsRecord.schema.mof +++ b/DSCResources/MSFT_xDnsRecord/MSFT_xDnsRecord.schema.mof @@ -1,11 +1,11 @@ -[ClassVersion("1.0.0.0"), FriendlyName("xDnsRecord")] -class MSFT_xDnsRecord : OMI_BaseResource -{ - [Key, Description("Specifies the name of the DNS server resource record object.")] string Name; - [Key, Description("Specifies the name of a DNS zone.")] string Zone; - [Required, Description("Specifies the type of DNS record."), ValueMap{"ARecord","CName","Ptr"}, Values{"ARecord","CName","Ptr"}] string Type; - [Key, Description("Specifies the Target Hostname or IP Address.")] string Target; - [Write, Description("Name of the DnsServer to create the record on.")] string DnsServer; - [Write, Description("Should this DNS resource record be present or absent"), ValueMap{"Present","Absent"}, Values{"Present","Absent"}] String Ensure; -}; - +[ClassVersion("1.0.0.0"), FriendlyName("xDnsRecord")] +class MSFT_xDnsRecord : OMI_BaseResource +{ + [Key, Description("Specifies the name of the DNS server resource record object.")] string Name; + [Key, Description("Specifies the name of a DNS zone.")] string Zone; + [Required, Description("Specifies the type of DNS record."), ValueMap{"ARecord","CName","Ptr"}, Values{"ARecord","CName","Ptr"}] string Type; + [Key, Description("Specifies the Target Hostname or IP Address.")] string Target; + [Write, Description("Name of the DnsServer to create the record on.")] string DnsServer; + [Write, Description("Should this DNS resource record be present or absent"), ValueMap{"Present","Absent"}, Values{"Present","Absent"}] String Ensure; +}; + diff --git a/DSCResources/MSFT_xDnsServerDiagnostics/MSFT_xDnsServerDiagnostics.psm1 b/DSCResources/MSFT_xDnsServerDiagnostics/MSFT_xDnsServerDiagnostics.psm1 deleted file mode 100644 index cd9c7481..00000000 --- a/DSCResources/MSFT_xDnsServerDiagnostics/MSFT_xDnsServerDiagnostics.psm1 +++ /dev/null @@ -1,274 +0,0 @@ -Import-Module $PSScriptRoot\..\Helper.psm1 -Verbose:$false - -data LocalizedData -{ - ConvertFrom-StringData -StringData @' -NotInDesiredState="{0}" not in desired state. Expected: "{1}" Actual: "{2}". -DnsClassNotFound=MicrosoftDNS_Server class not found. DNS role is not installed. -ParameterExpectedNull={0} expected to be NULL nut is not. -GettingDnsServerDiagnostics=Getting DNS Server Diagnostics. -SetDnsDiagnosticsSetting=Setting Dns Diagnostics '{0}' to value '{1}'. -'@ -} - -function Get-TargetResource -{ - [CmdletBinding()] - [OutputType([System.Collections.Hashtable])] - param - ( - [parameter(Mandatory = $true)] - [System.String] - $Name - ) - - Assert-Module -Name DnsServer - - Write-Verbose ($LocalizedData.GettingDnsServerDiagnostics) - - $dnsServerDiagnostics = Get-DnsServerDiagnostics -ErrorAction Stop - - $returnValue = @{ - Name = $Name - Answers = $dnsServerDiagnostics.Answers - EnableLogFileRollover = $dnsServerDiagnostics.EnableLogFileRollover - EnableLoggingForLocalLookupEvent = $dnsServerDiagnostics.EnableLoggingForLocalLookupEvent - EnableLoggingForPluginDllEvent = $dnsServerDiagnostics.EnableLoggingForPluginDllEvent - EnableLoggingForRecursiveLookupEvent = $dnsServerDiagnostics.EnableLoggingForRecursiveLookupEvent - EnableLoggingForRemoteServerEvent = $dnsServerDiagnostics.EnableLoggingForRemoteServerEvent - EnableLoggingForServerStartStopEvent = $dnsServerDiagnostics.EnableLoggingForServerStartStopEvent - EnableLoggingForTombstoneEvent = $dnsServerDiagnostics.EnableLoggingForTombstoneEvent - EnableLoggingForZoneDataWriteEvent = $dnsServerDiagnostics.EnableLoggingForZoneDataWriteEvent - EnableLoggingForZoneLoadingEvent = $dnsServerDiagnostics.EnableLoggingForZoneLoadingEvent - EnableLoggingToFile = $dnsServerDiagnostics.EnableLoggingToFile - EventLogLevel = $dnsServerDiagnostics.EventLogLevel - FilterIPAddressList = $dnsServerDiagnostics.FilterIPAddressList - FullPackets = $dnsServerDiagnostics.FullPackets - LogFilePath = $dnsServerDiagnostics.LogFilePath - MaxMBFileSize = $dnsServerDiagnostics.MaxMBFileSize - Notifications = $dnsServerDiagnostics.Notifications - Queries = $dnsServerDiagnostics.Queries - QuestionTransactions = $dnsServerDiagnostics.QuestionTransactions - ReceivePackets = $dnsServerDiagnostics.ReceivePackets - SaveLogsToPersistentStorage = $dnsServerDiagnostics.SaveLogsToPersistentStorage - SendPackets = $dnsServerDiagnostics.SendPackets - TcpPackets = $dnsServerDiagnostics.TcpPackets - UdpPackets = $dnsServerDiagnostics.UdpPackets - UnmatchedResponse = $dnsServerDiagnostics.UnmatchedResponse - Update = $dnsServerDiagnostics.Update - UseSystemEventLog = $dnsServerDiagnostics.UseSystemEventLog - WriteThrough = $dnsServerDiagnostics.WriteThrough - } - - $returnValue -} - - -function Set-TargetResource -{ - [CmdletBinding()] - param - ( - [Parameter(Mandatory = $true)] - [System.String] - $Name, - - [System.Boolean] - $Answers, - - [System.Boolean] - $EnableLogFileRollover, - - [System.Boolean] - $EnableLoggingForLocalLookupEvent, - - [System.Boolean] - $EnableLoggingForPluginDllEvent, - - [System.Boolean] - $EnableLoggingForRecursiveLookupEvent, - - [System.Boolean] - $EnableLoggingForRemoteServerEvent, - - [System.Boolean] - $EnableLoggingForServerStartStopEvent, - - [System.Boolean] - $EnableLoggingForTombstoneEvent, - - [System.Boolean] - $EnableLoggingForZoneDataWriteEvent, - - [System.Boolean] - $EnableLoggingForZoneLoadingEvent, - - [System.Boolean] - $EnableLoggingToFile, - - [System.UInt32] - $EventLogLevel, - - [System.String[]] - $FilterIPAddressList, - - [System.Boolean] - $FullPackets, - - [System.String] - $LogFilePath, - - [System.UInt32] - $MaxMBFileSize, - - [System.Boolean] - $Notifications, - - [System.Boolean] - $Queries, - - [System.Boolean] - $QuestionTransactions, - - [System.Boolean] - $ReceivePackets, - - [System.Boolean] - $SaveLogsToPersistentStorage, - - [System.Boolean] - $SendPackets, - - [System.Boolean] - $TcpPackets, - - [System.Boolean] - $UdpPackets, - - [System.Boolean] - $UnmatchedResponse, - - [System.Boolean] - $Update, - - [System.Boolean] - $UseSystemEventLog, - - [System.Boolean] - $WriteThrough - ) - - $PSBoundParameters.Remove('Name') - $DnsServerDiagnostics = Remove-CommonParameter -Hashtable $PSBoundParameters - - Set-DnsServerDiagnostics @DnsServerDiagnostics -} - - -function Test-TargetResource -{ - [CmdletBinding()] - [OutputType([System.Boolean])] - param - ( - [Parameter(Mandatory = $true)] - [System.String] - $Name, - - [System.Boolean] - $Answers, - - [System.Boolean] - $EnableLogFileRollover, - - [System.Boolean] - $EnableLoggingForLocalLookupEvent, - - [System.Boolean] - $EnableLoggingForPluginDllEvent, - - [System.Boolean] - $EnableLoggingForRecursiveLookupEvent, - - [System.Boolean] - $EnableLoggingForRemoteServerEvent, - - [System.Boolean] - $EnableLoggingForServerStartStopEvent, - - [System.Boolean] - $EnableLoggingForTombstoneEvent, - - [System.Boolean] - $EnableLoggingForZoneDataWriteEvent, - - [System.Boolean] - $EnableLoggingForZoneLoadingEvent, - - [System.Boolean] - $EnableLoggingToFile, - - [System.UInt32] - $EventLogLevel, - - [System.String[]] - $FilterIPAddressList, - - [System.Boolean] - $FullPackets, - - [System.String] - $LogFilePath, - - [System.UInt32] - $MaxMBFileSize, - - [System.Boolean] - $Notifications, - - [System.Boolean] - $Queries, - - [System.Boolean] - $QuestionTransactions, - - [System.Boolean] - $ReceivePackets, - - [System.Boolean] - $SaveLogsToPersistentStorage, - - [System.Boolean] - $SendPackets, - - [System.Boolean] - $TcpPackets, - - [System.Boolean] - $UdpPackets, - - [System.Boolean] - $UnmatchedResponse, - - [System.Boolean] - $Update, - - [System.Boolean] - $UseSystemEventLog, - - [System.Boolean] - $WriteThrough - ) - - Write-Verbose -Message 'Evaluating the DNS Server Diagnostics.' - - $currentState = Get-TargetResource -Name $Name - - $desiredState = $PSBoundParameters - - $result = Test-DscParameterState -CurrentValues $currentState -DesiredValues $desiredState -TurnOffTypeChecking -Verbose:$VerbosePreference - - return $result -} - -Export-ModuleMember -Function *-TargetResource diff --git a/DSCResources/MSFT_xDnsServerDiagnostics/MSFT_xDnsServerDiagnostics.schema.mof b/DSCResources/MSFT_xDnsServerDiagnostics/MSFT_xDnsServerDiagnostics.schema.mof deleted file mode 100644 index 503e9e50..00000000 --- a/DSCResources/MSFT_xDnsServerDiagnostics/MSFT_xDnsServerDiagnostics.schema.mof +++ /dev/null @@ -1,34 +0,0 @@ - -[ClassVersion("1.0.0.0"), FriendlyName("xDnsServerDiagnostics")] -class MSFT_xDnsServerDiagnostics : OMI_BaseResource -{ - [Key, Description("Key for the resource. It doesn't matter what it is as long as it's unique within the configuration.")] String Name; - [Write, Description("Specifies whether to enable the logging of DNS responses.")] Boolean Answers; - [Write, Description("Specifies whether to enable log file rollover.")] Boolean EnableLogFileRollover; - [Write, Description("Specifies whether the DNS server logs local lookup events.")] Boolean EnableLoggingForLocalLookupEvent; - [Write, Description("Specifies whether the DNS server logs dynamic link library (DLL) plug-in events.")] Boolean EnableLoggingForPluginDllEvent; - [Write, Description("Specifies whether the DNS server logs recursive lookup events.")] Boolean EnableLoggingForRecursiveLookupEvent; - [Write, Description("Specifies whether the DNS server logs remote server events.")] Boolean EnableLoggingForRemoteServerEvent; - [Write, Description("Specifies whether the DNS server logs server start and stop events.")] Boolean EnableLoggingForServerStartStopEvent; - [Write, Description("Specifies whether the DNS server logs tombstone events.")] Boolean EnableLoggingForTombstoneEvent; - [Write, Description("Specifies Controls whether the DNS server logs zone data write events.")] Boolean EnableLoggingForZoneDataWriteEvent; - [Write, Description("Specifies whether the DNS server logs zone load events.")] Boolean EnableLoggingForZoneLoadingEvent; - [Write, Description("Specifies whether the DNS server logs logging-to-file.")] Boolean EnableLoggingToFile; - [Write, Description("Specifies an event log level. Valid values are Warning, Error, and None.")] Uint32 EventLogLevel; - [Write, Description("Specifies an array of IP addresses to filter. When you enable logging, traffic to and from these IP addresses is logged. If you do not specify any IP addresses, traffic to and from all IP addresses is logged.")] String FilterIPAddressList[]; - [Write, Description("Specifies whether the DNS server logs full packets.")] Boolean FullPackets; - [Write, Description("Specifies a log file path.")] String LogFilePath; - [Write, Description("Specifies the maximum size of the log file. This parameter is relevant if you set EnableLogFileRollover and EnableLoggingToFile to $True.")] Uint32 MaxMBFileSize; - [Write, Description("Specifies whether the DNS server logs notifications.")] Boolean Notifications; - [Write, Description("Specifies whether the DNS server allows query packet exchanges to pass through the content filter, such as the IPFilterList parameter.")] Boolean Queries; - [Write, Description("Specifies whether the DNS server logs queries.")] Boolean QuestionTransactions; - [Write, Description("Specifies whether the DNS server logs receive packets.")] Boolean ReceivePackets; - [Write, Description("Specifies whether the DNS server saves logs to persistent storage.")] Boolean SaveLogsToPersistentStorage; - [Write, Description("Specifies whether the DNS server logs send packets.")] Boolean SendPackets; - [Write, Description("Specifies whether the DNS server logs TCP packets.")] Boolean TcpPackets; - [Write, Description("Specifies whether the DNS server logs UDP packets.")] Boolean UdpPackets; - [Write, Description("Specifies whether the DNS server logs unmatched responses.")] Boolean UnmatchedResponse; - [Write, Description("Specifies whether the DNS server logs updates.")] Boolean Update; - [Write, Description("Specifies whether the DNS server uses the system event log for logging.")] Boolean UseSystemEventLog; - [Write, Description("Specifies whether the DNS server logs write-throughs.")] Boolean WriteThrough; -}; diff --git a/DSCResources/MSFT_xDnsServerSetting/MSFT_xDnsServerSetting.psm1 b/DSCResources/MSFT_xDnsServerSetting/MSFT_xDnsServerSetting.psm1 index 743dd8df..eebd2ede 100644 --- a/DSCResources/MSFT_xDnsServerSetting/MSFT_xDnsServerSetting.psm1 +++ b/DSCResources/MSFT_xDnsServerSetting/MSFT_xDnsServerSetting.psm1 @@ -1,470 +1,470 @@ -Import-Module $PSScriptRoot\..\Helper.psm1 -Verbose:$false - -data LocalizedData -{ - ConvertFrom-StringData -StringData @' -NotInDesiredState="{0}" not in desired state. Expected: "{1}" Actual: "{2}". -DnsClassNotFound=MicrosoftDNS_Server class not found. DNS role is not installed. -ParameterExpectedNull={0} expected to be NULL nut is not. -GettingDnsServerSettings=Getting DNS Server Settings. -SetDnsServerSetting=Setting Dns setting '{0}' to value '{1}'. -'@ -} - -$properties = 'LocalNetPriority', 'AutoConfigFileZones', 'MaxCacheTTL', 'AddressAnswerLimit', 'UpdateOptions', 'DisableAutoReverseZones', 'StrictFileParsing', 'ForwardingTimeout', 'NoRecursion', 'ScavengingInterval', 'DisjointNets', 'Forwarders', 'DefaultAgingState', 'EnableDirectoryPartitions', 'LogFilePath', 'XfrConnectTimeout', 'AllowUpdate', 'Name', 'DsAvailable', 'BootMethod', 'LooseWildcarding', 'DsPollingInterval', 'BindSecondaries', 'LogLevel', 'AutoCacheUpdate', 'EnableDnsSec', 'EnableEDnsProbes', 'NameCheckFlag', 'EDnsCacheTimeout', 'SendPort', 'WriteAuthorityNS', 'IsSlave', 'LogIPFilterList', 'RecursionTimeout', 'ListenAddresses', 'DsTombstoneInterval', 'EventLogLevel', 'RecursionRetry', 'RpcProtocol', 'SecureResponses', 'RoundRobin', 'ForwardDelegations', 'LogFileMaxSize', 'DefaultNoRefreshInterval', 'MaxNegativeCacheTTL', 'DefaultRefreshInterval' - -function Get-TargetResource -{ - [CmdletBinding()] - [OutputType([hashtable])] - param - ( - [Parameter(Mandatory = $true)] - [string] - $Name - ) - - Assert-Module -Name DnsServer - - Write-Verbose ($LocalizedData.GettingDnsServerSettings) - $dnsServerInstance = Get-CimInstance -Namespace root\MicrosoftDNS -ClassName MicrosoftDNS_Server -ErrorAction Stop - - $returnValue = @{} - - foreach ($property in $properties) - { - $returnValue.Add($property, $dnsServerInstance."$property") - } - $returnValue.LogIPFilterList = (Get-PsDnsServerDiagnosticsClass).FilterIPAddressList - $returnValue.Name = $Name - - $returnValue -} - -function Set-TargetResource -{ - [CmdletBinding()] - param - ( - [Parameter(Mandatory = $true)] - [string] - $Name, - - [Parameter()] - [uint32] - $AddressAnswerLimit, - - [Parameter()] - [uint32] - $AllowUpdate, - - [Parameter()] - [bool] - $AutoCacheUpdate, - - [Parameter()] - [uint32] - $AutoConfigFileZones, - - [Parameter()] - [bool] - $BindSecondaries, - - [Parameter()] - [uint32] - $BootMethod, - - [Parameter()] - [bool] - $DefaultAgingState, - - [Parameter()] - [uint32] - $DefaultNoRefreshInterval, - - [Parameter()] - [uint32] - $DefaultRefreshInterval, - - [Parameter()] - [bool] - $DisableAutoReverseZones, - - [Parameter()] - [bool] - $DisjointNets, - - [Parameter()] - [uint32] - $DsPollingInterval, - - [Parameter()] - [uint32] - $DsTombstoneInterval, - - [Parameter()] - [uint32] - $EDnsCacheTimeout, - - [Parameter()] - [bool] - $EnableDirectoryPartitions, - - [Parameter()] - [uint32] - $EnableDnsSec, - - [Parameter()] - [bool] - $EnableEDnsProbes, - - [Parameter()] - [uint32] - $EventLogLevel, - - [Parameter()] - [uint32] - $ForwardDelegations, - - [Parameter()] - [string[]] - $Forwarders, - - [Parameter()] - [uint32] - $ForwardingTimeout, - - [Parameter()] - [bool] - $IsSlave, - - [Parameter()] - [string[]] - $ListenAddresses, - - [Parameter()] - [bool] - $LocalNetPriority, - - [Parameter()] - [uint32] - $LogFileMaxSize, - - [Parameter()] - [string] - $LogFilePath, - - [Parameter()] - [string[]] - $LogIPFilterList, - - [Parameter()] - [uint32] - $LogLevel, - - [Parameter()] - [bool] - $LooseWildcarding, - - [Parameter()] - [uint32] - $MaxCacheTTL, - - [Parameter()] - [uint32] - $MaxNegativeCacheTTL, - - [Parameter()] - [uint32] - $NameCheckFlag, - - [Parameter()] - [bool] - $NoRecursion, - - [Parameter()] - [uint32] - $RecursionRetry, - - [Parameter()] - [uint32] - $RecursionTimeout, - - [Parameter()] - [bool] - $RoundRobin, - - [Parameter()] - [int16] - $RpcProtocol, - - [Parameter()] - [uint32] - $ScavengingInterval, - - [Parameter()] - [bool] - $SecureResponses, - - [Parameter()] - [uint32] - $SendPort, - - [Parameter()] - [bool] - $StrictFileParsing, - - [Parameter()] - [uint32] - $UpdateOptions, - - [Parameter()] - [bool] - $WriteAuthorityNS, - - [Parameter()] - [uint32] - $XfrConnectTimeout - ) - - Assert-Module -Name DnsServer - - $PSBoundParameters.Remove('Name') - $dnsProperties = Remove-CommonParameter -Hashtable $PSBoundParameters - - $dnsServerInstance = Get-CimInstance -Namespace root\MicrosoftDNS -ClassName MicrosoftDNS_Server - - try - { - Foreach($property in $dnsProperties.keys) - { - Write-Verbose -Message ($LocalizedData.SetDnsServerSetting -f $property, $dnsProperties[$property]) - } - - Set-CimInstance -InputObject $dnsServerInstance -Property $dnsProperties -ErrorAction Stop - } - catch - { - throw $_ - } -} - -function Test-TargetResource -{ - [CmdletBinding()] - [OutputType([bool])] - param - ( - [Parameter(Mandatory = $true)] - [string] - $Name, - - [Parameter()] - [uint32] - $AddressAnswerLimit, - - [Parameter()] - [uint32] - $AllowUpdate, - - [Parameter()] - [bool] - $AutoCacheUpdate, - - [Parameter()] - [uint32] - $AutoConfigFileZones, - - [Parameter()] - [bool] - $BindSecondaries, - - [Parameter()] - [uint32] - $BootMethod, - - [Parameter()] - [bool] - $DefaultAgingState, - - [Parameter()] - [uint32] - $DefaultNoRefreshInterval, - - [Parameter()] - [uint32] - $DefaultRefreshInterval, - - [Parameter()] - [bool] - $DisableAutoReverseZones, - - [Parameter()] - [bool] - $DisjointNets, - - [Parameter()] - [uint32] - $DsPollingInterval, - - [Parameter()] - [uint32] - $DsTombstoneInterval, - - [Parameter()] - [uint32] - $EDnsCacheTimeout, - - [Parameter()] - [bool] - $EnableDirectoryPartitions, - - [Parameter()] - [uint32] - $EnableDnsSec, - - [Parameter()] - [bool] - $EnableEDnsProbes, - - [Parameter()] - [uint32] - $EventLogLevel, - - [Parameter()] - [uint32] - $ForwardDelegations, - - [Parameter()] - [string[]] - $Forwarders, - - [Parameter()] - [uint32] - $ForwardingTimeout, - - [Parameter()] - [bool] - $IsSlave, - - [Parameter()] - [string[]] - $ListenAddresses, - - [Parameter()] - [bool] - $LocalNetPriority, - - [Parameter()] - [uint32] - $LogFileMaxSize, - - [Parameter()] - [string] - $LogFilePath, - - [Parameter()] - [string[]] - $LogIPFilterList, - - [Parameter()] - [uint32] - $LogLevel, - - [Parameter()] - [bool] - $LooseWildcarding, - - [Parameter()] - [uint32] - $MaxCacheTTL, - - [Parameter()] - [uint32] - $MaxNegativeCacheTTL, - - [Parameter()] - [uint32] - $NameCheckFlag, - - [Parameter()] - [bool] - $NoRecursion, - - [Parameter()] - [uint32] - $RecursionRetry, - - [Parameter()] - [uint32] - $RecursionTimeout, - - [Parameter()] - [bool] - $RoundRobin, - - [Parameter()] - [int16] - $RpcProtocol, - - [Parameter()] - [uint32] - $ScavengingInterval, - - [Parameter()] - [bool] - $SecureResponses, - - [Parameter()] - [uint32] - $SendPort, - - [Parameter()] - [bool] - $StrictFileParsing, - - [Parameter()] - [uint32] - $UpdateOptions, - - [Parameter()] - [bool] - $WriteAuthorityNS, - - [Parameter()] - [uint32] - $XfrConnectTimeout - ) - - Write-Verbose -Message 'Evaluating the DNS server settings.' - - $currentState = Get-TargetResource -Name $Name - - $desiredState = $PSBoundParameters - $result = Test-DscParameterState -CurrentValues $currentState -DesiredValues $desiredState -TurnOffTypeChecking -Verbose:$VerbosePreference - - return $result -} - -<# - .SYNOPSIS - Internal function to get results from the PS_DnsServerDiagnostics. - This is needed because LogIpFilterList is not returned by querying the MicrosoftDNS_Server class. -#> -function Get-PsDnsServerDiagnosticsClass -{ - [CmdletBinding()] - [OutputType([Microsoft.Management.Infrastructure.CimInstance])] - - $invokeCimMethodParameters = @{ - NameSpace = 'root/Microsoft/Windows/DNS' - ClassName = 'PS_DnsServerDiagnostics' - MethodName = 'Get' - ErrorAction = 'Stop' - } - - $cimDnsServerDiagnostics = Invoke-CimMethod @invokeCimMethodParameters - $cimDnsServerDiagnostics.cmdletOutput -} - -Export-ModuleMember -Function *-TargetResource +Import-Module $PSScriptRoot\..\Helper.psm1 -Verbose:$false + +data LocalizedData +{ + ConvertFrom-StringData -StringData @' +NotInDesiredState="{0}" not in desired state. Expected: "{1}" Actual: "{2}". +DnsClassNotFound=MicrosoftDNS_Server class not found. DNS role is not installed. +ParameterExpectedNull={0} expected to be NULL nut is not. +GettingDnsServerSettings=Getting DNS Server Settings. +SetDnsServerSetting=Setting Dns setting '{0}' to value '{1}'. +'@ +} + +$properties = 'LocalNetPriority', 'AutoConfigFileZones', 'MaxCacheTTL', 'AddressAnswerLimit', 'UpdateOptions', 'DisableAutoReverseZones', 'StrictFileParsing', 'ForwardingTimeout', 'NoRecursion', 'ScavengingInterval', 'DisjointNets', 'Forwarders', 'DefaultAgingState', 'EnableDirectoryPartitions', 'LogFilePath', 'XfrConnectTimeout', 'AllowUpdate', 'Name', 'DsAvailable', 'BootMethod', 'LooseWildcarding', 'DsPollingInterval', 'BindSecondaries', 'LogLevel', 'AutoCacheUpdate', 'EnableDnsSec', 'EnableEDnsProbes', 'NameCheckFlag', 'EDnsCacheTimeout', 'SendPort', 'WriteAuthorityNS', 'IsSlave', 'LogIPFilterList', 'RecursionTimeout', 'ListenAddresses', 'DsTombstoneInterval', 'EventLogLevel', 'RecursionRetry', 'RpcProtocol', 'SecureResponses', 'RoundRobin', 'ForwardDelegations', 'LogFileMaxSize', 'DefaultNoRefreshInterval', 'MaxNegativeCacheTTL', 'DefaultRefreshInterval' + +function Get-TargetResource +{ + [CmdletBinding()] + [OutputType([hashtable])] + param + ( + [Parameter(Mandatory = $true)] + [string] + $Name + ) + + Assert-Module -Name DnsServer + + Write-Verbose ($LocalizedData.GettingDnsServerSettings) + $dnsServerInstance = Get-CimInstance -Namespace root\MicrosoftDNS -ClassName MicrosoftDNS_Server -ErrorAction Stop + + $returnValue = @{} + + foreach ($property in $properties) + { + $returnValue.Add($property, $dnsServerInstance."$property") + } + $returnValue.LogIPFilterList = (Get-PsDnsServerDiagnosticsClass).FilterIPAddressList + $returnValue.Name = $Name + + $returnValue +} + +function Set-TargetResource +{ + [CmdletBinding()] + param + ( + [Parameter(Mandatory = $true)] + [string] + $Name, + + [Parameter()] + [uint32] + $AddressAnswerLimit, + + [Parameter()] + [uint32] + $AllowUpdate, + + [Parameter()] + [bool] + $AutoCacheUpdate, + + [Parameter()] + [uint32] + $AutoConfigFileZones, + + [Parameter()] + [bool] + $BindSecondaries, + + [Parameter()] + [uint32] + $BootMethod, + + [Parameter()] + [bool] + $DefaultAgingState, + + [Parameter()] + [uint32] + $DefaultNoRefreshInterval, + + [Parameter()] + [uint32] + $DefaultRefreshInterval, + + [Parameter()] + [bool] + $DisableAutoReverseZones, + + [Parameter()] + [bool] + $DisjointNets, + + [Parameter()] + [uint32] + $DsPollingInterval, + + [Parameter()] + [uint32] + $DsTombstoneInterval, + + [Parameter()] + [uint32] + $EDnsCacheTimeout, + + [Parameter()] + [bool] + $EnableDirectoryPartitions, + + [Parameter()] + [uint32] + $EnableDnsSec, + + [Parameter()] + [bool] + $EnableEDnsProbes, + + [Parameter()] + [uint32] + $EventLogLevel, + + [Parameter()] + [uint32] + $ForwardDelegations, + + [Parameter()] + [string[]] + $Forwarders, + + [Parameter()] + [uint32] + $ForwardingTimeout, + + [Parameter()] + [bool] + $IsSlave, + + [Parameter()] + [string[]] + $ListenAddresses, + + [Parameter()] + [bool] + $LocalNetPriority, + + [Parameter()] + [uint32] + $LogFileMaxSize, + + [Parameter()] + [string] + $LogFilePath, + + [Parameter()] + [string[]] + $LogIPFilterList, + + [Parameter()] + [uint32] + $LogLevel, + + [Parameter()] + [bool] + $LooseWildcarding, + + [Parameter()] + [uint32] + $MaxCacheTTL, + + [Parameter()] + [uint32] + $MaxNegativeCacheTTL, + + [Parameter()] + [uint32] + $NameCheckFlag, + + [Parameter()] + [bool] + $NoRecursion, + + [Parameter()] + [uint32] + $RecursionRetry, + + [Parameter()] + [uint32] + $RecursionTimeout, + + [Parameter()] + [bool] + $RoundRobin, + + [Parameter()] + [int16] + $RpcProtocol, + + [Parameter()] + [uint32] + $ScavengingInterval, + + [Parameter()] + [bool] + $SecureResponses, + + [Parameter()] + [uint32] + $SendPort, + + [Parameter()] + [bool] + $StrictFileParsing, + + [Parameter()] + [uint32] + $UpdateOptions, + + [Parameter()] + [bool] + $WriteAuthorityNS, + + [Parameter()] + [uint32] + $XfrConnectTimeout + ) + + Assert-Module -Name DnsServer + + $PSBoundParameters.Remove('Name') + $dnsProperties = Remove-CommonParameter -Hashtable $PSBoundParameters + + $dnsServerInstance = Get-CimInstance -Namespace root\MicrosoftDNS -ClassName MicrosoftDNS_Server + + try + { + Foreach($property in $dnsProperties.keys) + { + Write-Verbose -Message ($LocalizedData.SetDnsServerSetting -f $property, $dnsProperties[$property]) + } + + Set-CimInstance -InputObject $dnsServerInstance -Property $dnsProperties -ErrorAction Stop + } + catch + { + throw $_ + } +} + +function Test-TargetResource +{ + [CmdletBinding()] + [OutputType([bool])] + param + ( + [Parameter(Mandatory = $true)] + [string] + $Name, + + [Parameter()] + [uint32] + $AddressAnswerLimit, + + [Parameter()] + [uint32] + $AllowUpdate, + + [Parameter()] + [bool] + $AutoCacheUpdate, + + [Parameter()] + [uint32] + $AutoConfigFileZones, + + [Parameter()] + [bool] + $BindSecondaries, + + [Parameter()] + [uint32] + $BootMethod, + + [Parameter()] + [bool] + $DefaultAgingState, + + [Parameter()] + [uint32] + $DefaultNoRefreshInterval, + + [Parameter()] + [uint32] + $DefaultRefreshInterval, + + [Parameter()] + [bool] + $DisableAutoReverseZones, + + [Parameter()] + [bool] + $DisjointNets, + + [Parameter()] + [uint32] + $DsPollingInterval, + + [Parameter()] + [uint32] + $DsTombstoneInterval, + + [Parameter()] + [uint32] + $EDnsCacheTimeout, + + [Parameter()] + [bool] + $EnableDirectoryPartitions, + + [Parameter()] + [uint32] + $EnableDnsSec, + + [Parameter()] + [bool] + $EnableEDnsProbes, + + [Parameter()] + [uint32] + $EventLogLevel, + + [Parameter()] + [uint32] + $ForwardDelegations, + + [Parameter()] + [string[]] + $Forwarders, + + [Parameter()] + [uint32] + $ForwardingTimeout, + + [Parameter()] + [bool] + $IsSlave, + + [Parameter()] + [string[]] + $ListenAddresses, + + [Parameter()] + [bool] + $LocalNetPriority, + + [Parameter()] + [uint32] + $LogFileMaxSize, + + [Parameter()] + [string] + $LogFilePath, + + [Parameter()] + [string[]] + $LogIPFilterList, + + [Parameter()] + [uint32] + $LogLevel, + + [Parameter()] + [bool] + $LooseWildcarding, + + [Parameter()] + [uint32] + $MaxCacheTTL, + + [Parameter()] + [uint32] + $MaxNegativeCacheTTL, + + [Parameter()] + [uint32] + $NameCheckFlag, + + [Parameter()] + [bool] + $NoRecursion, + + [Parameter()] + [uint32] + $RecursionRetry, + + [Parameter()] + [uint32] + $RecursionTimeout, + + [Parameter()] + [bool] + $RoundRobin, + + [Parameter()] + [int16] + $RpcProtocol, + + [Parameter()] + [uint32] + $ScavengingInterval, + + [Parameter()] + [bool] + $SecureResponses, + + [Parameter()] + [uint32] + $SendPort, + + [Parameter()] + [bool] + $StrictFileParsing, + + [Parameter()] + [uint32] + $UpdateOptions, + + [Parameter()] + [bool] + $WriteAuthorityNS, + + [Parameter()] + [uint32] + $XfrConnectTimeout + ) + + Write-Verbose -Message 'Evaluating the DNS server settings.' + + $currentState = Get-TargetResource -Name $Name + + $desiredState = $PSBoundParameters + $result = Test-DscParameterState -CurrentValues $currentState -DesiredValues $desiredState -TurnOffTypeChecking -Verbose:$VerbosePreference + + return $result +} + +<# + .SYNOPSIS + Internal function to get results from the PS_DnsServerDiagnostics. + This is needed because LogIpFilterList is not returned by querying the MicrosoftDNS_Server class. +#> +function Get-PsDnsServerDiagnosticsClass +{ + [CmdletBinding()] + [OutputType([Microsoft.Management.Infrastructure.CimInstance])] + + $invokeCimMethodParameters = @{ + NameSpace = 'root/Microsoft/Windows/DNS' + ClassName = 'PS_DnsServerDiagnostics' + MethodName = 'Get' + ErrorAction = 'Stop' + } + + $cimDnsServerDiagnostics = Invoke-CimMethod @invokeCimMethodParameters + $cimDnsServerDiagnostics.cmdletOutput +} + +Export-ModuleMember -Function *-TargetResource diff --git a/DSCResources/MSFT_xDnsServerSetting/MSFT_xDnsServerSetting.schema.mof b/DSCResources/MSFT_xDnsServerSetting/MSFT_xDnsServerSetting.schema.mof index d5064fe8..8fadd933 100644 --- a/DSCResources/MSFT_xDnsServerSetting/MSFT_xDnsServerSetting.schema.mof +++ b/DSCResources/MSFT_xDnsServerSetting/MSFT_xDnsServerSetting.schema.mof @@ -1,51 +1,51 @@ - -[ClassVersion("1.0.0.0"), FriendlyName("xDnsServerSetting")] -class MSFT_xDnsServerSetting : OMI_BaseResource -{ - [Key, Description("Key for the resource. It doesn't matter what it is as long as it's unique within the configuration.")] String Name; - [Write, Description("Maximum number of host records returned in response to an address request. Values between 5 and 28 are valid.")] Uint32 AddressAnswerLimit; - [Write, Description("Specifies whether the DNS Server accepts dynamic update requests.")] Uint32 AllowUpdate; - [Write, Description("Indicates whether the DNS Server attempts to update its cache entries using data from root servers.")] Boolean AutoCacheUpdate; - [Write, Description("Indicates which standard primary zones that are authoritative for the name of the DNS Server must be updated when the name server changes.")] Uint32 AutoConfigFileZones; - [Write, Description("Determines the AXFR message format when sending to non-Microsoft DNS Server secondaries")] Boolean BindSecondaries; - [Write, Description("Initialization method for the DNS Server.")] Uint32 BootMethod; - [Write, Description("Default ScavengingInterval value set for all Active Directory-integrated zones created on this DNS Server.")] Boolean DefaultAgingState; - [Write, Description("No-refresh interval, in hours, set for all Active Directory-integrated zones created on this DNS Server.")] Uint32 DefaultNoRefreshInterval; - [Write, Description("Refresh interval, in hours, set for all Active Directory-integrated zones created on this DNS Server.")] Uint32 DefaultRefreshInterval; - [Write, Description("Indicates whether the DNS Server automatically creates standard reverse look up zones.")] Boolean DisableAutoReverseZones; - [Write, Description("Indicates whether the default port binding for a socket used to send queries to remote DNS Servers can be overridden.")] Boolean DisjointNets; - [Write, Description("Interval, in seconds, to poll the DS-integrated zones.")] Uint32 DsPollingInterval; - [Write, Description("Lifetime of tombstoned records in Directory Service integrated zones, expressed in seconds.")] Uint32 DsTombstoneInterval; - [Write, Description("Lifetime, in seconds, of the cached information describing the EDNS version supported by other DNS Servers.")] Uint32 EDnsCacheTimeout; - [Write, Description("Specifies whether support for application directory partitions is enabled on the DNS Server.")] Boolean EnableDirectoryPartitions; - [Write, Description("Specifies whether the DNS Server includes DNSSEC-specific RRs, KEY, SIG, and NXT in a response.")] Uint32 EnableDnsSec; - [Write, Description("Specifies the behavior of the DNS Server. When TRUE, the DNS Server always responds with OPT resource records according to RFC 2671, unless the remote server has indicated it does not support EDNS in a prior exchange. If FALSE, the DNS Server responds to queries with OPTs only if OPTs are sent in the original query.")] Boolean EnableEDnsProbes; - [Write, Description("Indicates which events the DNS Server records in the Event Viewer system log.")] Uint32 EventLogLevel; - [Write, Description("Specifies whether queries to delegated sub-zones are forwarded.")] Uint32 ForwardDelegations; - [Write, Description("Enumerates the list of IP addresses of Forwarders to which the DNS Server forwards queries.")] String Forwarders[]; - [Write, Description("Time, in seconds, a DNS Server forwarding a query will wait for resolution from the forwarder before attempting to resolve the query itself.")] Uint32 ForwardingTimeout; - [Write, Description("TRUE if the DNS server does not use recursion when name-resolution through forwarders fails.")] Boolean IsSlave; - [Write, Description("Enumerates the list of IP addresses on which the DNS Server can receive queries.")] String ListenAddresses[]; - [Write, Description("Indicates whether the DNS Server gives priority to the local net address when returning A records.")] Boolean LocalNetPriority; - [Write, Description("Size of the DNS Server debug log, in bytes.")] Uint32 LogFileMaxSize; - [Write, Description("File name and path for the DNS Server debug log.")] String LogFilePath; - [Write, Description("List of IP addresses used to filter DNS events written to the debug log.")] String LogIPFilterList[]; - [Write, Description("Indicates which policies are activated in the Event Viewer system log.")] Uint32 LogLevel; - [Write, Description("Indicates whether the DNS Server performs loose wildcarding.")] Boolean LooseWildcarding; - [Write, Description("Maximum time, in seconds, the record of a recursive name query may remain in the DNS Server cache.")] Uint32 MaxCacheTTL; - [Write, Description("Maximum time, in seconds, a name error result from a recursive query may remain in the DNS Server cache.")] Uint32 MaxNegativeCacheTTL; - [Write, Description("Indicates the set of eligible characters to be used in DNS names.")] Uint32 NameCheckFlag; - [Write, Description("Indicates whether the DNS Server performs recursive look ups. TRUE indicates recursive look ups are not performed.")] Boolean NoRecursion; - [Write, Description("Elapsed seconds before retrying a recursive look up.")] Uint32 RecursionRetry; - [Write, Description("Elapsed seconds before the DNS Server gives up recursive query.")] Uint32 RecursionTimeout; - [Write, Description("Indicates whether the DNS Server round robins multiple A records.")] Boolean RoundRobin; - [Write, Description("RPC protocol or protocols over which administrative RPC runs.")] Sint16 RpcProtocol; - [Write, Description("Interval, in hours, between two consecutive scavenging operations performed by the DNS Server.")] Uint32 ScavengingInterval; - [Write, Description("Indicates whether the DNS Server exclusively saves records of names in the same subtree as the server that provided them.")] Boolean SecureResponses; - [Write, Description("Port on which the DNS Server sends UDP queries to other servers.")] Uint32 SendPort; - [Write, Description("Indicates whether the DNS Server parses zone files strictly.")] Boolean StrictFileParsing; - [Write, Description("Restricts the type of records that can be dynamically updated on the server, used in addition to the AllowUpdate settings on Server and Zone objects.")] Uint32 UpdateOptions; - [Write, Description("Specifies whether the DNS Server writes NS and SOA records to the authority section on successful response.")] Boolean WriteAuthorityNS; - [Write, Description("Time, in seconds, the DNS Server waits for a successful TCP connection to a remote server when attempting a zone transfer.")] Uint32 XfrConnectTimeout; - [Read, Description("Indicates whether there is an available DS on the DNS Server.")] Boolean DsAvailable; -}; + +[ClassVersion("1.0.0.0"), FriendlyName("xDnsServerSetting")] +class MSFT_xDnsServerSetting : OMI_BaseResource +{ + [Key, Description("Key for the resource. It doesn't matter what it is as long as it's unique within the configuration.")] String Name; + [Write, Description("Maximum number of host records returned in response to an address request. Values between 5 and 28 are valid.")] Uint32 AddressAnswerLimit; + [Write, Description("Specifies whether the DNS Server accepts dynamic update requests.")] Uint32 AllowUpdate; + [Write, Description("Indicates whether the DNS Server attempts to update its cache entries using data from root servers.")] Boolean AutoCacheUpdate; + [Write, Description("Indicates which standard primary zones that are authoritative for the name of the DNS Server must be updated when the name server changes.")] Uint32 AutoConfigFileZones; + [Write, Description("Determines the AXFR message format when sending to non-Microsoft DNS Server secondaries")] Boolean BindSecondaries; + [Write, Description("Initialization method for the DNS Server.")] Uint32 BootMethod; + [Write, Description("Default ScavengingInterval value set for all Active Directory-integrated zones created on this DNS Server.")] Boolean DefaultAgingState; + [Write, Description("No-refresh interval, in hours, set for all Active Directory-integrated zones created on this DNS Server.")] Uint32 DefaultNoRefreshInterval; + [Write, Description("Refresh interval, in hours, set for all Active Directory-integrated zones created on this DNS Server.")] Uint32 DefaultRefreshInterval; + [Write, Description("Indicates whether the DNS Server automatically creates standard reverse look up zones.")] Boolean DisableAutoReverseZones; + [Write, Description("Indicates whether the default port binding for a socket used to send queries to remote DNS Servers can be overridden.")] Boolean DisjointNets; + [Write, Description("Interval, in seconds, to poll the DS-integrated zones.")] Uint32 DsPollingInterval; + [Write, Description("Lifetime of tombstoned records in Directory Service integrated zones, expressed in seconds.")] Uint32 DsTombstoneInterval; + [Write, Description("Lifetime, in seconds, of the cached information describing the EDNS version supported by other DNS Servers.")] Uint32 EDnsCacheTimeout; + [Write, Description("Specifies whether support for application directory partitions is enabled on the DNS Server.")] Boolean EnableDirectoryPartitions; + [Write, Description("Specifies whether the DNS Server includes DNSSEC-specific RRs, KEY, SIG, and NXT in a response.")] Uint32 EnableDnsSec; + [Write, Description("Specifies the behavior of the DNS Server. When TRUE, the DNS Server always responds with OPT resource records according to RFC 2671, unless the remote server has indicated it does not support EDNS in a prior exchange. If FALSE, the DNS Server responds to queries with OPTs only if OPTs are sent in the original query.")] Boolean EnableEDnsProbes; + [Write, Description("Indicates which events the DNS Server records in the Event Viewer system log.")] Uint32 EventLogLevel; + [Write, Description("Specifies whether queries to delegated sub-zones are forwarded.")] Uint32 ForwardDelegations; + [Write, Description("Enumerates the list of IP addresses of Forwarders to which the DNS Server forwards queries.")] String Forwarders[]; + [Write, Description("Time, in seconds, a DNS Server forwarding a query will wait for resolution from the forwarder before attempting to resolve the query itself.")] Uint32 ForwardingTimeout; + [Write, Description("TRUE if the DNS server does not use recursion when name-resolution through forwarders fails.")] Boolean IsSlave; + [Write, Description("Enumerates the list of IP addresses on which the DNS Server can receive queries.")] String ListenAddresses[]; + [Write, Description("Indicates whether the DNS Server gives priority to the local net address when returning A records.")] Boolean LocalNetPriority; + [Write, Description("Size of the DNS Server debug log, in bytes.")] Uint32 LogFileMaxSize; + [Write, Description("File name and path for the DNS Server debug log.")] String LogFilePath; + [Write, Description("List of IP addresses used to filter DNS events written to the debug log.")] String LogIPFilterList[]; + [Write, Description("Indicates which policies are activated in the Event Viewer system log.")] Uint32 LogLevel; + [Write, Description("Indicates whether the DNS Server performs loose wildcarding.")] Boolean LooseWildcarding; + [Write, Description("Maximum time, in seconds, the record of a recursive name query may remain in the DNS Server cache.")] Uint32 MaxCacheTTL; + [Write, Description("Maximum time, in seconds, a name error result from a recursive query may remain in the DNS Server cache.")] Uint32 MaxNegativeCacheTTL; + [Write, Description("Indicates the set of eligible characters to be used in DNS names.")] Uint32 NameCheckFlag; + [Write, Description("Indicates whether the DNS Server performs recursive look ups. TRUE indicates recursive look ups are not performed.")] Boolean NoRecursion; + [Write, Description("Elapsed seconds before retrying a recursive look up.")] Uint32 RecursionRetry; + [Write, Description("Elapsed seconds before the DNS Server gives up recursive query.")] Uint32 RecursionTimeout; + [Write, Description("Indicates whether the DNS Server round robins multiple A records.")] Boolean RoundRobin; + [Write, Description("RPC protocol or protocols over which administrative RPC runs.")] Sint16 RpcProtocol; + [Write, Description("Interval, in hours, between two consecutive scavenging operations performed by the DNS Server.")] Uint32 ScavengingInterval; + [Write, Description("Indicates whether the DNS Server exclusively saves records of names in the same subtree as the server that provided them.")] Boolean SecureResponses; + [Write, Description("Port on which the DNS Server sends UDP queries to other servers.")] Uint32 SendPort; + [Write, Description("Indicates whether the DNS Server parses zone files strictly.")] Boolean StrictFileParsing; + [Write, Description("Restricts the type of records that can be dynamically updated on the server, used in addition to the AllowUpdate settings on Server and Zone objects.")] Uint32 UpdateOptions; + [Write, Description("Specifies whether the DNS Server writes NS and SOA records to the authority section on successful response.")] Boolean WriteAuthorityNS; + [Write, Description("Time, in seconds, the DNS Server waits for a successful TCP connection to a remote server when attempting a zone transfer.")] Uint32 XfrConnectTimeout; + [Read, Description("Indicates whether there is an available DS on the DNS Server.")] Boolean DsAvailable; +}; diff --git a/Misc/MockObjects/DnsServerClass.xml b/Misc/MockObjects/DnsServerClass.xml index 76d1f61d..93d4fd36 100644 --- a/Misc/MockObjects/DnsServerClass.xml +++ b/Misc/MockObjects/DnsServerClass.xml @@ -1,144 +1,144 @@ - - - - Microsoft.Management.Infrastructure.CimInstance#root/MicrosoftDNS/MicrosoftDNS_Server - Microsoft.Management.Infrastructure.CimInstance#ROOT/MicrosoftDNS/CIM_Service - Microsoft.Management.Infrastructure.CimInstance#ROOT/MicrosoftDNS/CIM_LogicalElement - Microsoft.Management.Infrastructure.CimInstance#ROOT/MicrosoftDNS/CIM_ManagedSystemElement - Microsoft.Management.Infrastructure.CimInstance#MicrosoftDNS_Server - Microsoft.Management.Infrastructure.CimInstance#CIM_Service - Microsoft.Management.Infrastructure.CimInstance#CIM_LogicalElement - Microsoft.Management.Infrastructure.CimInstance#CIM_ManagedSystemElement - Microsoft.Management.Infrastructure.CimInstance - System.Object - - MicrosoftDNS_Server (Name = "DC1.contoso.com") - - - - - DC1.contoso.com - OK - - true - Automatic - - - 0 - 1 - false - 1 - false - 3 - false - 168 - 168 - false - false - true - 180 - 1209600 - 900 - true - 1 - true - 4 - 0 - - - System.String[] - System.Array - System.Object - - - 168.63.129.16 - 8.8.8.8 - - - 3 - true - - - - 10.0.0.4 - - - true - 500000000 - C:\Windows\System32\DNS\DNS.log - - 50393905 - false - 86400 - 900 - 2 - false - 3 - 8 - true - 5 - 168 - true - 0 - - - - fe80::7da3:a014:6581:2cdc - 10.0.0.4 - - - false - 783 - 629146374 - false - 30 - - - - - - System.Collections.ArrayList - System.Object - - - - - CIM_ManagedSystemElement - ROOT/MicrosoftDNS - DC1 - -549583800 - <CLASS NAME="CIM_ManagedSystemElement"><QUALIFIER NAME="Abstract" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Description" TYPE="string"><VALUE>The ManagedSystemElement class is the base class for the system element hierarchy. Membership Criteria: Any distinguishable component of a system is a candidate for inclusion in this class.&lt;P&gt;Examples: Software components, such as files; and devices, such as disk drives and controllers, and physical components such as chips and cards.</VALUE></QUALIFIER><QUALIFIER NAME="Locale" TYPE="sint32" TOSUBCLASS="false"><VALUE>1033</VALUE></QUALIFIER><QUALIFIER NAME="UUID" TYPE="string" TOSUBCLASS="false"><VALUE>{8502C517-5FBB-11D2-AAC1-006008C78BC7}</VALUE></QUALIFIER><PROPERTY NAME="Caption" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The Caption property is a short textual description (one-line string) of the object.</VALUE></QUALIFIER><QUALIFIER NAME="MaxLen" TYPE="sint32"><VALUE>64</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Description" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The Description property provides a textual description of the object. </VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="InstallDate" TYPE="datetime"><QUALIFIER NAME="Description" TYPE="string"><VALUE>A datetime value indicating when the object was installed. A lack of a value does not indicate that the object is not installed.</VALUE></QUALIFIER><QUALIFIER NAME="MappingStrings" TYPE="string"><VALUE.ARRAY><VALUE>MIF.DMTF|ComponentID|001.5</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Name" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The Name property defines the label by which the object is known. When subclassed, the Name property can be overridden to be a Key property.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Status" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>A string indicating the current status of the object.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="ValueMap" TYPE="string"><VALUE.ARRAY><VALUE>OK</VALUE><VALUE>Error</VALUE><VALUE>Degraded</VALUE><VALUE>Unknown</VALUE></VALUE.ARRAY></QUALIFIER></PROPERTY></CLASS> - - - - - CIM_LogicalElement - ROOT/MicrosoftDNS - DC1 - -549567160 - <CLASS NAME="CIM_LogicalElement" SUPERCLASS="CIM_ManagedSystemElement"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The CIM_LogicalElement class is the base class for all the components of the system that represent abstract system components.&lt;P&gt;Example: Profiles, processes, or system capabilities in the form of logical devices.</VALUE></QUALIFIER><QUALIFIER NAME="Abstract" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Locale" TYPE="sint32" TOSUBCLASS="false"><VALUE>1033</VALUE></QUALIFIER><QUALIFIER NAME="UUID" TYPE="string" TOSUBCLASS="false"><VALUE>{8502C518-5FBB-11D2-AAC1-006008C78BC7}</VALUE></QUALIFIER></CLASS> - - - - - CIM_Service - ROOT/MicrosoftDNS - DC1 - -549556760 - <CLASS NAME="CIM_Service" SUPERCLASS="CIM_LogicalElement"><QUALIFIER NAME="Description" TYPE="string"><VALUE>A logical element that contains the information necessary to represent and manage the functionality provided by a Device and/or SoftwareFeature. A Service is a general-purpose object to configure and manage the implementation of functionality. It is not the functionality itself.</VALUE></QUALIFIER><QUALIFIER NAME="Abstract" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Locale" TYPE="sint32" TOSUBCLASS="false"><VALUE>1033</VALUE></QUALIFIER><QUALIFIER NAME="UUID" TYPE="string" TOSUBCLASS="false"><VALUE>{8502C527-5FBB-11D2-AAC1-006008C78BC7}</VALUE></QUALIFIER><PROPERTY NAME="Name" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The Name property uniquely identifies the Service and provides an indication of the functionality that is managed. This functionality is described in more detail in the object&apos;s Description property. </VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="key" TYPE="boolean" OVERRIDABLE="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Override" TYPE="string"><VALUE>Name</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="CreationClassName" TYPE="string"><QUALIFIER NAME="CIM_Key" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Started" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>ServiceStarted is a boolean indicating whether the Service has been started (TRUE), or stopped (FALSE).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="StartMode" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>StartMode is a string value indicating whether the Service is automatically started by a System, Operating System, etc. or only started upon request.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="ValueMap" TYPE="string"><VALUE.ARRAY><VALUE>Automatic</VALUE><VALUE>Manual</VALUE></VALUE.ARRAY></QUALIFIER></PROPERTY><PROPERTY NAME="SystemCreationClassName" TYPE="string"><QUALIFIER NAME="CIM_Key" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Description" TYPE="string"><VALUE>The type name of the system that hosts this service</VALUE></QUALIFIER><QUALIFIER NAME="Propagated" TYPE="string"><VALUE>CIM_System.CreationClassName</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="SystemName" TYPE="string"><QUALIFIER NAME="CIM_Key" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Description" TYPE="string"><VALUE>The name of the system that hosts this service</VALUE></QUALIFIER><QUALIFIER NAME="Propagated" TYPE="string"><VALUE>CIM_System.Name</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><METHOD NAME="StartService" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The StartService method places the Service in the started state. It returns an integer value of 0 if the Service was successfully started, 1 if the request is not supported and any other number to indicate an error.</VALUE></QUALIFIER></METHOD><METHOD NAME="StopService" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The StopService method places the Service in the stopped state. It returns an integer value of 0 if the Service was successfully stopped, 1 if the request is not supported and any other number to indicate an error.</VALUE></QUALIFIER></METHOD></CLASS> - - - - - MicrosoftDNS_Server - root/MicrosoftDNS - DC1 - -549553640 - <CLASS NAME="MicrosoftDNS_Server" SUPERCLASS="CIM_Service"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This class describes a DNS server. Every instance of this class may be associated with (or more intuitively &apos;may contain&apos;) one instance of class MicrosoftDNS_Cache, one instance of class MicrosoftDNS_RootHints and multiple instances of class MicrosoftDNS_Zone.</VALUE></QUALIFIER><QUALIFIER NAME="dynamic" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Locale" TYPE="sint32" TOSUBCLASS="false"><VALUE>1033</VALUE></QUALIFIER><QUALIFIER NAME="provider" TYPE="string" TOSUBCLASS="false"><VALUE>MS_NT_DNS_PROVIDER</VALUE></QUALIFIER><QUALIFIER NAME="Schema" TYPE="string"><VALUE>MicrosoftDNS</VALUE></QUALIFIER><QUALIFIER NAME="UUID" TYPE="string" TOSUBCLASS="false"><VALUE>{3E9F9B09-AA43-11d2-85DD-0000F8102E5F}</VALUE></QUALIFIER><PROPERTY NAME="Name" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the Fully Qualified Domain Name or IP address of the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="key" TYPE="boolean" OVERRIDABLE="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Override" TYPE="string"><VALUE>Name</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="AddressAnswerLimit" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the maximum number of host records returned in response to an address request. Values between 5 and 28 are valid.</VALUE></QUALIFIER><QUALIFIER NAME="Not_NULL" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="AllowUpdate" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This UInt32 indicates whether the DNS server accepts dynamic update requests.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>Do not allow dynamic updates</VALUE><VALUE>Allow unsecure dynamic updates</VALUE><VALUE>Allow only secure dynamic updates</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="AutoCacheUpdate" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server attempts to update its cache entries using data from root servers. When a DNS server boots, it needs a list of root server &apos;hints&apos; - NS and A records for the servers - historically called the cache file. The Microsoft DNS server has a feature to allow it to attempt to write back a new cache file based on the responses from the root servers.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="AutoConfigFileZones" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Uint32 indicates which standard primary zones authoritative for the name of the DNS server must be updated when the name of the server changes. The default value of this property is 1.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Valuemap" TYPE="string"><VALUE.ARRAY><VALUE>0</VALUE><VALUE>1</VALUE><VALUE>2</VALUE><VALUE>3</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>None</VALUE><VALUE>Only those that allow dynamic updates</VALUE><VALUE>Only those that do not allow dynamic updates</VALUE><VALUE>All</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="BindSecondaries" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This property determines the AXFR message format when sending to non-Microsoft DNS secondaries. If this property is TRUE, the server will send transfers to non-Microsoft DNS secondaries in the uncompressed format. If this property is FALSE, the server will send all transfers in the fast format.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="BootMethod" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the DNS server&apos;s initialization method.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>Uninitialized</VALUE><VALUE>Boot from file</VALUE><VALUE>Boot from registry</VALUE><VALUE>Boot from directory and registry</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DefaultAgingState" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the value of Enable Scavenging flag to be set for all Active Directory-integrated zones created on this server. The default value 0 corresponds to the Disabled scavenging of a zone.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DefaultNoRefreshInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the value of No-Refresh Interval to be set for all Active Directory-integrated zones created on this server. The default value of this property is 168 hours (7 days).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Hours</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DefaultRefreshInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the value of Refresh Interval to be set for all Active Directory-integrated zones created on this server. The default value of this property is 168 hours (7 days).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Hours</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DisableAutoReverseZones" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This property indicates whether the DNS server automatically creates standard reverse lookup zones.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DisjointNets" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether override is allowed of the default binding for a socket used to send queries to remote DNS servers.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DsAvailable" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether there is an available DS on the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DsPollingInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the interval (in seconds) to poll for changes in DS-integrated zones.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DsTombstoneInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The lifetime (in seconds) of tombstoned records in DS-integrated zones.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EDnsCacheTimeout" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the lifetime in seconds of the cached information describing the EDNS version supported by other DNS servers.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EnableDirectoryPartitions" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This value is TRUE if support for application directory partitions is enabled on this server.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EnableDnsSec" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies whether the DNS server includes the DNSSEC specific RRs, KEY,SIG and NXT, in the response. If this value is 0, then no DNSSEC records are included in response, unless the query was requesting an RRset of the DNSSEC record type. If this value is 1, then DNSSEC records are included in response according to the RFC 2535. If this value is 2, then DNSSEC records are included in response only if the original client query contained the OPT RR according to the RFC 2671. If a query was requesting an RRset of the DNSSEC record type the DNS server will always respond with such records if they are available.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EnableEDnsProbes" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the behavior of the DNS server with regard to the EDNS specified in the RFC 2671. If this value is FALSE, then the DNS server responds to the queries with response containing OPTs if OPTs are send in the original query, but doesn&apos;t include unsolicited OPTs in queries to other servers.If this value is TRUE then the server always OPT RRs according to RFC 2671 unless the remote server hasindicated that it does not support EDNS in a prior exchange.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EventLogLevel" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates which events the DNS server records in the Event Viewer system log.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Valuemap" TYPE="string"><VALUE.ARRAY><VALUE>0</VALUE><VALUE>1</VALUE><VALUE>2</VALUE><VALUE>4</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>None</VALUE><VALUE>Log only errors</VALUE><VALUE>Log only warnings and errors</VALUE><VALUE>Log all events</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="ForwardDelegations" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This property indicates whether queries to delegated sub-zones are forwarded.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY.ARRAY NAME="Forwarders" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE> This array of IP addresses are the servers to which this DNS server forwards queries that cannot be resolved with local data.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY.ARRAY><PROPERTY NAME="ForwardingTimeout" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates how long (in seconds) a DNS server, forwarding a query to a remote server listed in &quot;Forwarders&quot; will wait for a reply.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="IsSlave" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>A slave server will not attempt recursion if forwarding fails.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY.ARRAY NAME="ListenAddresses" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This array of strings enumerates the list of IP addresses on which the DNS server is allowed to receive queries.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY.ARRAY><PROPERTY NAME="LocalNetPriority" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server gives priority to the local net address returning A records.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="LogFileMaxSize" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The size in bytes of the DNS server&apos;s debug log.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="LogFilePath" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The file name for the DNS server&apos;s debug log. By the file is system32\dns\dns.log. You may change this value. A relative path path is relative to SystemRoot\System32. You may also use absolute paths, but UNC paths are not supported.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY.ARRAY NAME="LogIPFilterList" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>List of IP addresses used to filter DNS events written to DNS server&apos;s debug log.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY.ARRAY><PROPERTY NAME="LogLevel" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This property controls what packets and events are written to the DNS server&apos;s debug log. This property should be set to specific values based on the following algorithm: Each policy is assigned a specific value: Query - 1, Notify - 16, Update - 32, Non-query transactions - 254, Questions - 256, Answers - 512, Send - 4096, Receive - 8192, UDP - 16384, TCP - 32768, All packets - 65535, Directory Service write transaction - 65536, Directory Service update transaction - 131072, Full Packets - 16777216, and Write Through - 2147483648. The sum of the values corresponding to all the policies to be activated is indicated in this property.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Valuemap" TYPE="string"><VALUE.ARRAY><VALUE>1</VALUE><VALUE>16</VALUE><VALUE>32</VALUE><VALUE>254</VALUE><VALUE>256</VALUE><VALUE>512</VALUE><VALUE>4096</VALUE><VALUE>8192</VALUE><VALUE>16384</VALUE><VALUE>32768</VALUE><VALUE>65535</VALUE><VALUE>65536</VALUE><VALUE>131072</VALUE><VALUE>16777216</VALUE><VALUE>2147483648</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>Query</VALUE><VALUE>Notify</VALUE><VALUE>Update</VALUE><VALUE>Non-query transactions</VALUE><VALUE>Questions</VALUE><VALUE>Answers</VALUE><VALUE>Send</VALUE><VALUE>Receive</VALUE><VALUE>UDP</VALUE><VALUE>TCP</VALUE><VALUE>All packets</VALUE><VALUE>NT Directory Service write transaction</VALUE><VALUE>NT Directory Service update transaction</VALUE><VALUE>Full Packets</VALUE><VALUE>Write Through</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="LooseWildcarding" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server does wildcarding loosely. If the LooseWildcarding property is undefined or zero, the server will follow the wildcarding behavior specified in the DNS RFC. In this case, an admin is advised to include MX records for all hosts that are not capable of receiving mail. If the LooseWildcarding property is non-zero, the server seeks out the closest wildcard node. In this case, an admin should put MX records at both the zone root and in a wildcard node (&apos;*&apos;) directly below the zone root. Also, the admin should put self-referent MX records on hosts, which are to receive their own mail.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="MaxCacheTTL" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates a maximum time (in seconds) a record from a recursive name query may remain in the DNS server cache. The DNS server deletes records from the cache when the value of this entry expires, even if the value of the TTL field in the record is greater. The default value of this property is 86,400 seconds (1 day).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="MaxNegativeCacheTTL" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates a maximum time (in seconds) a name error result from a recursive name query may remain in the DNS server cache. The DNS server deletes records from the cache when the value of this entry expires, even if the value of the TTL field in the record is greater. The default value of this property is 86,400 seconds (1 day).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="NameCheckFlag" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the set of eligible characters to be used in DNS names.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Valuemap" TYPE="string"><VALUE.ARRAY><VALUE>0</VALUE><VALUE>1</VALUE><VALUE>2</VALUE><VALUE>3</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>Strict RFC (ANSI)</VALUE><VALUE>Non RFC (ANSI)</VALUE><VALUE>Multibyte (UTF8)</VALUE><VALUE>Any</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="NoRecursion" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server does NOT do recursive lookups. If set to TRUE, recursive lookups are not done.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="RecursionRetry" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the interval (in seconds) before retrying a recursive lookup. If the RecursionRetry property is undefined or zero, retries are made after three seconds. Users are discouraged from altering this property. However, there are some scenarios where the property should be changed. One example is when the DNS server contacts remote servers over a slow link, and the DNS server is retrying BEFORE reception of a response from the remote DNS. In this case, raising the RecursionRetry timeout to be slightly longer than the observed response time from the remote DNS would be reasonable.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="RecursionTimeout" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the timeout (in seconds) before the DNS server gives up recursive query. If the RecursionTimeout property is undefined or zero, the DNS server gives up after fifteen seconds. In general, the fifteen-second timeout is sufficient to allow any outstanding response to get back to the DNS server. Users are discouraged from altering this property. One scenario where the property should be changed is when the DNS server contacts remote servers over a slow link, and the DNS server is observed rejecting queries (with SERVER_FAILURE) before responses are received. (Note, that client resolvers also retry queries, so careful investigation is required to determine that remote responses are really for the query that was timed out.) In this case, raising the RecursionTimeout to be slightly longer than the observed response time from the remote DNS would be reasonable.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="RoundRobin" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server round robins multiple A records.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="RpcProtocol" TYPE="sint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the protocols over which administrative RPC runs. This property should be set to specific value based on the following algorithm: Every protocol to be used in RPC is assigned a specific value: None: 0, TCP/IP: 1, Named Pipes: 2, LPC: 4. The sum of the values corresponding to all the protocols to be used in RPC is indicated in this property.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="ScavengingInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the time interval between two consecutive scavenging operations performed by the server. Zero value means that scavenging is not enabled on the server.The default value of this property is 168 hours (7 days).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Hours</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="SecureResponses" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server onlycaches resource records that are in the same subtree as the DNS server that provided them.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="SendPort" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the port on which the DNS server sends UDP queries to other servers. By default, the DNS server sends queries on a socket bound to the DNS port. Sometimes this situation is NOT desirable. The most obvious case occurs when an admin firewalls off the DNS port, to prevent outside access to the DNS server, but still wants the server to be able to contact Internet DNS servers to provide name resolution for internal clients. This is also desirable if the DNS server is supporting disjoint nets (if true, the boolean property, DisjointNets, would be set to TRUE). In these cases, setting the SendPort property to a non-zero value causes the DNS server to bind to an arbitrary port for sending to remote DNS servers.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY.ARRAY NAME="ServerAddresses" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This array of strings enumerates the list of the DNS server&apos;s IP addresses.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY.ARRAY><PROPERTY NAME="StrictFileParsing" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server parses zone files strictly. If the StrictFileParsing property is undefined or zero, the server will log and ignore bad data in the zone file and continue to load. If the StrictFileParsing property is non-zero, the server will log and fail on zone file errors.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="UpdateOptions" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This value restricts the type of records that can be dynamically updated on the server. This parameter is a further restriction on dynamic updates applied after the AllowUpdate setting on Server and Zone objects. Use these values: &quot;No restrictions&quot; = 0, &quot;Do not allow dynamic updates of SOA records&quot; = 1, &quot;Do not allow dynamic updates of NS records at the zone root&quot; = 2, &quot;Do not allow dynamic updates of NS records not at the zone root (delegation NS records)&quot; = 4. Sum these values to determine the setting value. </VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Version" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the version of the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="WriteAuthorityNS" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server writes NS and SOA records to the authority section on successful response.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="XfrConnectTimeout" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Timeout in seconds the DNS server will wait for a successful TCP connection to a remote server when attempting a zone transfer.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><METHOD NAME="StartService" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This method starts the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="Implemented" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER></METHOD><METHOD NAME="StopService" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This method stops the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="Implemented" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER></METHOD><METHOD NAME="StartScavenging" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This method starts the scavenging of stale records in the zones subjected to scavenging.</VALUE></QUALIFIER><QUALIFIER NAME="Implemented" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER></METHOD><METHOD NAME="GetDistinguishedName" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This method get DS distinguished Name for the zone.</VALUE></QUALIFIER><QUALIFIER NAME="Implemented" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER></METHOD></CLASS> - - - - - - - + + + + Microsoft.Management.Infrastructure.CimInstance#root/MicrosoftDNS/MicrosoftDNS_Server + Microsoft.Management.Infrastructure.CimInstance#ROOT/MicrosoftDNS/CIM_Service + Microsoft.Management.Infrastructure.CimInstance#ROOT/MicrosoftDNS/CIM_LogicalElement + Microsoft.Management.Infrastructure.CimInstance#ROOT/MicrosoftDNS/CIM_ManagedSystemElement + Microsoft.Management.Infrastructure.CimInstance#MicrosoftDNS_Server + Microsoft.Management.Infrastructure.CimInstance#CIM_Service + Microsoft.Management.Infrastructure.CimInstance#CIM_LogicalElement + Microsoft.Management.Infrastructure.CimInstance#CIM_ManagedSystemElement + Microsoft.Management.Infrastructure.CimInstance + System.Object + + MicrosoftDNS_Server (Name = "DC1.contoso.com") + + + + + DC1.contoso.com + OK + + true + Automatic + + + 0 + 1 + false + 1 + false + 3 + false + 168 + 168 + false + false + true + 180 + 1209600 + 900 + true + 1 + true + 4 + 0 + + + System.String[] + System.Array + System.Object + + + 168.63.129.16 + 8.8.8.8 + + + 3 + true + + + + 10.0.0.4 + + + true + 500000000 + C:\Windows\System32\DNS\DNS.log + + 50393905 + false + 86400 + 900 + 2 + false + 3 + 8 + true + 5 + 168 + true + 0 + + + + fe80::7da3:a014:6581:2cdc + 10.0.0.4 + + + false + 783 + 629146374 + false + 30 + + + + + + System.Collections.ArrayList + System.Object + + + + + CIM_ManagedSystemElement + ROOT/MicrosoftDNS + DC1 + -549583800 + <CLASS NAME="CIM_ManagedSystemElement"><QUALIFIER NAME="Abstract" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Description" TYPE="string"><VALUE>The ManagedSystemElement class is the base class for the system element hierarchy. Membership Criteria: Any distinguishable component of a system is a candidate for inclusion in this class.&lt;P&gt;Examples: Software components, such as files; and devices, such as disk drives and controllers, and physical components such as chips and cards.</VALUE></QUALIFIER><QUALIFIER NAME="Locale" TYPE="sint32" TOSUBCLASS="false"><VALUE>1033</VALUE></QUALIFIER><QUALIFIER NAME="UUID" TYPE="string" TOSUBCLASS="false"><VALUE>{8502C517-5FBB-11D2-AAC1-006008C78BC7}</VALUE></QUALIFIER><PROPERTY NAME="Caption" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The Caption property is a short textual description (one-line string) of the object.</VALUE></QUALIFIER><QUALIFIER NAME="MaxLen" TYPE="sint32"><VALUE>64</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Description" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The Description property provides a textual description of the object. </VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="InstallDate" TYPE="datetime"><QUALIFIER NAME="Description" TYPE="string"><VALUE>A datetime value indicating when the object was installed. A lack of a value does not indicate that the object is not installed.</VALUE></QUALIFIER><QUALIFIER NAME="MappingStrings" TYPE="string"><VALUE.ARRAY><VALUE>MIF.DMTF|ComponentID|001.5</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Name" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The Name property defines the label by which the object is known. When subclassed, the Name property can be overridden to be a Key property.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Status" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>A string indicating the current status of the object.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="ValueMap" TYPE="string"><VALUE.ARRAY><VALUE>OK</VALUE><VALUE>Error</VALUE><VALUE>Degraded</VALUE><VALUE>Unknown</VALUE></VALUE.ARRAY></QUALIFIER></PROPERTY></CLASS> + + + + + CIM_LogicalElement + ROOT/MicrosoftDNS + DC1 + -549567160 + <CLASS NAME="CIM_LogicalElement" SUPERCLASS="CIM_ManagedSystemElement"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The CIM_LogicalElement class is the base class for all the components of the system that represent abstract system components.&lt;P&gt;Example: Profiles, processes, or system capabilities in the form of logical devices.</VALUE></QUALIFIER><QUALIFIER NAME="Abstract" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Locale" TYPE="sint32" TOSUBCLASS="false"><VALUE>1033</VALUE></QUALIFIER><QUALIFIER NAME="UUID" TYPE="string" TOSUBCLASS="false"><VALUE>{8502C518-5FBB-11D2-AAC1-006008C78BC7}</VALUE></QUALIFIER></CLASS> + + + + + CIM_Service + ROOT/MicrosoftDNS + DC1 + -549556760 + <CLASS NAME="CIM_Service" SUPERCLASS="CIM_LogicalElement"><QUALIFIER NAME="Description" TYPE="string"><VALUE>A logical element that contains the information necessary to represent and manage the functionality provided by a Device and/or SoftwareFeature. A Service is a general-purpose object to configure and manage the implementation of functionality. It is not the functionality itself.</VALUE></QUALIFIER><QUALIFIER NAME="Abstract" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Locale" TYPE="sint32" TOSUBCLASS="false"><VALUE>1033</VALUE></QUALIFIER><QUALIFIER NAME="UUID" TYPE="string" TOSUBCLASS="false"><VALUE>{8502C527-5FBB-11D2-AAC1-006008C78BC7}</VALUE></QUALIFIER><PROPERTY NAME="Name" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The Name property uniquely identifies the Service and provides an indication of the functionality that is managed. This functionality is described in more detail in the object&apos;s Description property. </VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="key" TYPE="boolean" OVERRIDABLE="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Override" TYPE="string"><VALUE>Name</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="CreationClassName" TYPE="string"><QUALIFIER NAME="CIM_Key" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Started" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>ServiceStarted is a boolean indicating whether the Service has been started (TRUE), or stopped (FALSE).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="StartMode" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>StartMode is a string value indicating whether the Service is automatically started by a System, Operating System, etc. or only started upon request.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="ValueMap" TYPE="string"><VALUE.ARRAY><VALUE>Automatic</VALUE><VALUE>Manual</VALUE></VALUE.ARRAY></QUALIFIER></PROPERTY><PROPERTY NAME="SystemCreationClassName" TYPE="string"><QUALIFIER NAME="CIM_Key" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Description" TYPE="string"><VALUE>The type name of the system that hosts this service</VALUE></QUALIFIER><QUALIFIER NAME="Propagated" TYPE="string"><VALUE>CIM_System.CreationClassName</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="SystemName" TYPE="string"><QUALIFIER NAME="CIM_Key" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Description" TYPE="string"><VALUE>The name of the system that hosts this service</VALUE></QUALIFIER><QUALIFIER NAME="Propagated" TYPE="string"><VALUE>CIM_System.Name</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><METHOD NAME="StartService" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The StartService method places the Service in the started state. It returns an integer value of 0 if the Service was successfully started, 1 if the request is not supported and any other number to indicate an error.</VALUE></QUALIFIER></METHOD><METHOD NAME="StopService" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The StopService method places the Service in the stopped state. It returns an integer value of 0 if the Service was successfully stopped, 1 if the request is not supported and any other number to indicate an error.</VALUE></QUALIFIER></METHOD></CLASS> + + + + + MicrosoftDNS_Server + root/MicrosoftDNS + DC1 + -549553640 + <CLASS NAME="MicrosoftDNS_Server" SUPERCLASS="CIM_Service"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This class describes a DNS server. Every instance of this class may be associated with (or more intuitively &apos;may contain&apos;) one instance of class MicrosoftDNS_Cache, one instance of class MicrosoftDNS_RootHints and multiple instances of class MicrosoftDNS_Zone.</VALUE></QUALIFIER><QUALIFIER NAME="dynamic" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Locale" TYPE="sint32" TOSUBCLASS="false"><VALUE>1033</VALUE></QUALIFIER><QUALIFIER NAME="provider" TYPE="string" TOSUBCLASS="false"><VALUE>MS_NT_DNS_PROVIDER</VALUE></QUALIFIER><QUALIFIER NAME="Schema" TYPE="string"><VALUE>MicrosoftDNS</VALUE></QUALIFIER><QUALIFIER NAME="UUID" TYPE="string" TOSUBCLASS="false"><VALUE>{3E9F9B09-AA43-11d2-85DD-0000F8102E5F}</VALUE></QUALIFIER><PROPERTY NAME="Name" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the Fully Qualified Domain Name or IP address of the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="key" TYPE="boolean" OVERRIDABLE="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Override" TYPE="string"><VALUE>Name</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="AddressAnswerLimit" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the maximum number of host records returned in response to an address request. Values between 5 and 28 are valid.</VALUE></QUALIFIER><QUALIFIER NAME="Not_NULL" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="AllowUpdate" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This UInt32 indicates whether the DNS server accepts dynamic update requests.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>Do not allow dynamic updates</VALUE><VALUE>Allow unsecure dynamic updates</VALUE><VALUE>Allow only secure dynamic updates</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="AutoCacheUpdate" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server attempts to update its cache entries using data from root servers. When a DNS server boots, it needs a list of root server &apos;hints&apos; - NS and A records for the servers - historically called the cache file. The Microsoft DNS server has a feature to allow it to attempt to write back a new cache file based on the responses from the root servers.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="AutoConfigFileZones" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Uint32 indicates which standard primary zones authoritative for the name of the DNS server must be updated when the name of the server changes. The default value of this property is 1.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Valuemap" TYPE="string"><VALUE.ARRAY><VALUE>0</VALUE><VALUE>1</VALUE><VALUE>2</VALUE><VALUE>3</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>None</VALUE><VALUE>Only those that allow dynamic updates</VALUE><VALUE>Only those that do not allow dynamic updates</VALUE><VALUE>All</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="BindSecondaries" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This property determines the AXFR message format when sending to non-Microsoft DNS secondaries. If this property is TRUE, the server will send transfers to non-Microsoft DNS secondaries in the uncompressed format. If this property is FALSE, the server will send all transfers in the fast format.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="BootMethod" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the DNS server&apos;s initialization method.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>Uninitialized</VALUE><VALUE>Boot from file</VALUE><VALUE>Boot from registry</VALUE><VALUE>Boot from directory and registry</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DefaultAgingState" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the value of Enable Scavenging flag to be set for all Active Directory-integrated zones created on this server. The default value 0 corresponds to the Disabled scavenging of a zone.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DefaultNoRefreshInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the value of No-Refresh Interval to be set for all Active Directory-integrated zones created on this server. The default value of this property is 168 hours (7 days).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Hours</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DefaultRefreshInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the value of Refresh Interval to be set for all Active Directory-integrated zones created on this server. The default value of this property is 168 hours (7 days).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Hours</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DisableAutoReverseZones" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This property indicates whether the DNS server automatically creates standard reverse lookup zones.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DisjointNets" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether override is allowed of the default binding for a socket used to send queries to remote DNS servers.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DsAvailable" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether there is an available DS on the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DsPollingInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the interval (in seconds) to poll for changes in DS-integrated zones.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DsTombstoneInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The lifetime (in seconds) of tombstoned records in DS-integrated zones.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EDnsCacheTimeout" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the lifetime in seconds of the cached information describing the EDNS version supported by other DNS servers.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EnableDirectoryPartitions" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This value is TRUE if support for application directory partitions is enabled on this server.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EnableDnsSec" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies whether the DNS server includes the DNSSEC specific RRs, KEY,SIG and NXT, in the response. If this value is 0, then no DNSSEC records are included in response, unless the query was requesting an RRset of the DNSSEC record type. If this value is 1, then DNSSEC records are included in response according to the RFC 2535. If this value is 2, then DNSSEC records are included in response only if the original client query contained the OPT RR according to the RFC 2671. If a query was requesting an RRset of the DNSSEC record type the DNS server will always respond with such records if they are available.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EnableEDnsProbes" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the behavior of the DNS server with regard to the EDNS specified in the RFC 2671. If this value is FALSE, then the DNS server responds to the queries with response containing OPTs if OPTs are send in the original query, but doesn&apos;t include unsolicited OPTs in queries to other servers.If this value is TRUE then the server always OPT RRs according to RFC 2671 unless the remote server hasindicated that it does not support EDNS in a prior exchange.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EventLogLevel" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates which events the DNS server records in the Event Viewer system log.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Valuemap" TYPE="string"><VALUE.ARRAY><VALUE>0</VALUE><VALUE>1</VALUE><VALUE>2</VALUE><VALUE>4</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>None</VALUE><VALUE>Log only errors</VALUE><VALUE>Log only warnings and errors</VALUE><VALUE>Log all events</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="ForwardDelegations" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This property indicates whether queries to delegated sub-zones are forwarded.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY.ARRAY NAME="Forwarders" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE> This array of IP addresses are the servers to which this DNS server forwards queries that cannot be resolved with local data.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY.ARRAY><PROPERTY NAME="ForwardingTimeout" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates how long (in seconds) a DNS server, forwarding a query to a remote server listed in &quot;Forwarders&quot; will wait for a reply.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="IsSlave" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>A slave server will not attempt recursion if forwarding fails.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY.ARRAY NAME="ListenAddresses" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This array of strings enumerates the list of IP addresses on which the DNS server is allowed to receive queries.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY.ARRAY><PROPERTY NAME="LocalNetPriority" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server gives priority to the local net address returning A records.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="LogFileMaxSize" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The size in bytes of the DNS server&apos;s debug log.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="LogFilePath" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The file name for the DNS server&apos;s debug log. By the file is system32\dns\dns.log. You may change this value. A relative path path is relative to SystemRoot\System32. You may also use absolute paths, but UNC paths are not supported.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY.ARRAY NAME="LogIPFilterList" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>List of IP addresses used to filter DNS events written to DNS server&apos;s debug log.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY.ARRAY><PROPERTY NAME="LogLevel" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This property controls what packets and events are written to the DNS server&apos;s debug log. This property should be set to specific values based on the following algorithm: Each policy is assigned a specific value: Query - 1, Notify - 16, Update - 32, Non-query transactions - 254, Questions - 256, Answers - 512, Send - 4096, Receive - 8192, UDP - 16384, TCP - 32768, All packets - 65535, Directory Service write transaction - 65536, Directory Service update transaction - 131072, Full Packets - 16777216, and Write Through - 2147483648. The sum of the values corresponding to all the policies to be activated is indicated in this property.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Valuemap" TYPE="string"><VALUE.ARRAY><VALUE>1</VALUE><VALUE>16</VALUE><VALUE>32</VALUE><VALUE>254</VALUE><VALUE>256</VALUE><VALUE>512</VALUE><VALUE>4096</VALUE><VALUE>8192</VALUE><VALUE>16384</VALUE><VALUE>32768</VALUE><VALUE>65535</VALUE><VALUE>65536</VALUE><VALUE>131072</VALUE><VALUE>16777216</VALUE><VALUE>2147483648</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>Query</VALUE><VALUE>Notify</VALUE><VALUE>Update</VALUE><VALUE>Non-query transactions</VALUE><VALUE>Questions</VALUE><VALUE>Answers</VALUE><VALUE>Send</VALUE><VALUE>Receive</VALUE><VALUE>UDP</VALUE><VALUE>TCP</VALUE><VALUE>All packets</VALUE><VALUE>NT Directory Service write transaction</VALUE><VALUE>NT Directory Service update transaction</VALUE><VALUE>Full Packets</VALUE><VALUE>Write Through</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="LooseWildcarding" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server does wildcarding loosely. If the LooseWildcarding property is undefined or zero, the server will follow the wildcarding behavior specified in the DNS RFC. In this case, an admin is advised to include MX records for all hosts that are not capable of receiving mail. If the LooseWildcarding property is non-zero, the server seeks out the closest wildcard node. In this case, an admin should put MX records at both the zone root and in a wildcard node (&apos;*&apos;) directly below the zone root. Also, the admin should put self-referent MX records on hosts, which are to receive their own mail.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="MaxCacheTTL" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates a maximum time (in seconds) a record from a recursive name query may remain in the DNS server cache. The DNS server deletes records from the cache when the value of this entry expires, even if the value of the TTL field in the record is greater. The default value of this property is 86,400 seconds (1 day).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="MaxNegativeCacheTTL" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates a maximum time (in seconds) a name error result from a recursive name query may remain in the DNS server cache. The DNS server deletes records from the cache when the value of this entry expires, even if the value of the TTL field in the record is greater. The default value of this property is 86,400 seconds (1 day).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="NameCheckFlag" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the set of eligible characters to be used in DNS names.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Valuemap" TYPE="string"><VALUE.ARRAY><VALUE>0</VALUE><VALUE>1</VALUE><VALUE>2</VALUE><VALUE>3</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>Strict RFC (ANSI)</VALUE><VALUE>Non RFC (ANSI)</VALUE><VALUE>Multibyte (UTF8)</VALUE><VALUE>Any</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="NoRecursion" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server does NOT do recursive lookups. If set to TRUE, recursive lookups are not done.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="RecursionRetry" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the interval (in seconds) before retrying a recursive lookup. If the RecursionRetry property is undefined or zero, retries are made after three seconds. Users are discouraged from altering this property. However, there are some scenarios where the property should be changed. One example is when the DNS server contacts remote servers over a slow link, and the DNS server is retrying BEFORE reception of a response from the remote DNS. In this case, raising the RecursionRetry timeout to be slightly longer than the observed response time from the remote DNS would be reasonable.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="RecursionTimeout" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the timeout (in seconds) before the DNS server gives up recursive query. If the RecursionTimeout property is undefined or zero, the DNS server gives up after fifteen seconds. In general, the fifteen-second timeout is sufficient to allow any outstanding response to get back to the DNS server. Users are discouraged from altering this property. One scenario where the property should be changed is when the DNS server contacts remote servers over a slow link, and the DNS server is observed rejecting queries (with SERVER_FAILURE) before responses are received. (Note, that client resolvers also retry queries, so careful investigation is required to determine that remote responses are really for the query that was timed out.) In this case, raising the RecursionTimeout to be slightly longer than the observed response time from the remote DNS would be reasonable.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="RoundRobin" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server round robins multiple A records.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="RpcProtocol" TYPE="sint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the protocols over which administrative RPC runs. This property should be set to specific value based on the following algorithm: Every protocol to be used in RPC is assigned a specific value: None: 0, TCP/IP: 1, Named Pipes: 2, LPC: 4. The sum of the values corresponding to all the protocols to be used in RPC is indicated in this property.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="ScavengingInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the time interval between two consecutive scavenging operations performed by the server. Zero value means that scavenging is not enabled on the server.The default value of this property is 168 hours (7 days).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Hours</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="SecureResponses" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server onlycaches resource records that are in the same subtree as the DNS server that provided them.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="SendPort" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the port on which the DNS server sends UDP queries to other servers. By default, the DNS server sends queries on a socket bound to the DNS port. Sometimes this situation is NOT desirable. The most obvious case occurs when an admin firewalls off the DNS port, to prevent outside access to the DNS server, but still wants the server to be able to contact Internet DNS servers to provide name resolution for internal clients. This is also desirable if the DNS server is supporting disjoint nets (if true, the boolean property, DisjointNets, would be set to TRUE). In these cases, setting the SendPort property to a non-zero value causes the DNS server to bind to an arbitrary port for sending to remote DNS servers.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY.ARRAY NAME="ServerAddresses" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This array of strings enumerates the list of the DNS server&apos;s IP addresses.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY.ARRAY><PROPERTY NAME="StrictFileParsing" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server parses zone files strictly. If the StrictFileParsing property is undefined or zero, the server will log and ignore bad data in the zone file and continue to load. If the StrictFileParsing property is non-zero, the server will log and fail on zone file errors.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="UpdateOptions" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This value restricts the type of records that can be dynamically updated on the server. This parameter is a further restriction on dynamic updates applied after the AllowUpdate setting on Server and Zone objects. Use these values: &quot;No restrictions&quot; = 0, &quot;Do not allow dynamic updates of SOA records&quot; = 1, &quot;Do not allow dynamic updates of NS records at the zone root&quot; = 2, &quot;Do not allow dynamic updates of NS records not at the zone root (delegation NS records)&quot; = 4. Sum these values to determine the setting value. </VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Version" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the version of the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="WriteAuthorityNS" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server writes NS and SOA records to the authority section on successful response.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="XfrConnectTimeout" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Timeout in seconds the DNS server will wait for a successful TCP connection to a remote server when attempting a zone transfer.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><METHOD NAME="StartService" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This method starts the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="Implemented" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER></METHOD><METHOD NAME="StopService" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This method stops the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="Implemented" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER></METHOD><METHOD NAME="StartScavenging" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This method starts the scavenging of stale records in the zones subjected to scavenging.</VALUE></QUALIFIER><QUALIFIER NAME="Implemented" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER></METHOD><METHOD NAME="GetDistinguishedName" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This method get DS distinguished Name for the zone.</VALUE></QUALIFIER><QUALIFIER NAME="Implemented" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER></METHOD></CLASS> + + + + + + + diff --git a/README.md b/README.md index ef67b51e..305c5e34 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,6 @@ Please check out common DSC Resources [contributing guidelines](https://github.c * **xDnsServerZoneTransfer** This resource allows a DNS Server zone data to be replicated to another DNS server. * **xDnsRecord** This resource allows for the creation of IPv4 host (A) records, CNames, or PTRs against a specific zone on the DNS server. * **xDnsServerSetting** This resource manages the DNS sever settings/properties. -* **xDnsServerDiagnostics** This resource manages the DNS server diagnostic settings/properties. ### xDnsServerForwarder @@ -162,38 +161,6 @@ Please check out common DSC Resources [contributing guidelines](https://github.c * **XfrConnectTimeout**: Time, in seconds, the DNS Server waits for a successful TCP connection to a remote server when attempting a zone transfer. * **DsAvailable**: Indicates whether there is an available DS on the DNS Server. This is a read-only property. -### xDnsServerSetting - -* **Name**: Key for the resource. It doesn't matter what it is as long as it's unique within the configuration. -* **Answers**: Specifies whether to enable the logging of DNS responses. -* **NaEnableLogFileRolloverme**: Specifies whether to enable log file rollover. -* **EnableLoggingForLocalLookupEvent**: Specifies whether the DNS server logs local lookup events. -* **EnableLoggingForPluginDllEvent**: Specifies whether the DNS server logs dynamic link library (DLL) plug-in events. -* **EnableLoggingForRecursiveLookupEvent**: Specifies whether the DNS server logs recursive lookup events. -* **EnableLoggingForRemoteServerEvent**: Specifies whether the DNS server logs remote server events. -* **EnableLoggingForServerStartStopEvent**: Specifies whether the DNS server logs server start and stop events. -* **EnableLoggingForTombstoneEvent**: Specifies whether the DNS server logs tombstone events. -* **EnableLoggingForZoneDataWriteEvent**: Specifies Controls whether the DNS server logs zone data write events. -* **EnableLoggingForZoneLoadingEvent**: Specifies whether the DNS server logs zone load events. -* **EnableLoggingToFile**: Specifies whether the DNS server logs logging-to-file. -* **EventLogLevel**: Specifies an event log level. Valid values are Warning, Error, and None. -* **FilterIPAddressList**: Specifies an array of IP addresses to filter. When you enable logging, traffic to and from these IP addresses is logged. If you do not specify any IP addresses, traffic to and from all IP addresses is logged. -* **FullPackets**: Specifies whether the DNS server logs full packets. -* **LogFilePath**: Specifies a log file path. -* **MaxMBFileSize**: Specifies the maximum size of the log file. This parameter is relevant if you set EnableLogFileRollover and EnableLoggingToFile to $True. -* **Notifications**: Specifies whether the DNS server logs notifications. -* **Queries**: Specifies whether the DNS server allows query packet exchanges to pass through the content filter, such as the IPFilterList parameter. -* **QuestionTransactions**: Specifies whether the DNS server logs queries. -* **ReceivePackets**: Specifies whether the DNS server logs receive packets. -* **SaveLogsToPersistentStorage**: Specifies whether the DNS server saves logs to persistent storage. -* **SendPackets**: Specifies whether the DNS server logs send packets. -* **TcpPackets**: Specifies whether the DNS server logs TCP packets. -* **UdpPackets**: Specifies whether the DNS server logs UDP packets. -* **UnmatchedResponse**: Specifies whether the DNS server logs unmatched responses. -* **Update**: Specifies whether the DNS server logs updates. -* **UseSystemEventLog**: Specifies whether the DNS server uses the system event log for logging. -* **WriteThrough**: Specifies whether the DNS server logs write-throughs. - ## Versions ### Unreleased @@ -201,7 +168,6 @@ Please check out common DSC Resources [contributing guidelines](https://github.c * Update appveyor.yml to use the default template. * Added default template files .codecov.yml, .gitattributes, and .gitignore, and .vscode folder. * Added UseRootHint property to xDnsServerForwarder resource. -* Added xDnsServerDiagnostics resource to this module. ### 1.11.0.0 diff --git a/Tests/Integration/MSFT_xDnsServerDiagnostics.Integration.ps1 b/Tests/Integration/MSFT_xDnsServerDiagnostics.Integration.ps1 deleted file mode 100644 index ec940d88..00000000 --- a/Tests/Integration/MSFT_xDnsServerDiagnostics.Integration.ps1 +++ /dev/null @@ -1,60 +0,0 @@ - -$script:DSCModuleName = 'xDnsServer' -$script:DSCResourceName = 'MSFT_xDnsServerDiagnostics' - -#region HEADER -# Integration Test Template Version: 1.1.1 -$script:moduleRoot = Split-Path -Parent (Split-Path -Parent $PSScriptRoot) -if ( (-not (Test-Path -Path (Join-Path -Path $script:moduleRoot -ChildPath 'DSCResource.Tests'))) -or ` -(-not (Test-Path -Path (Join-Path -Path $script:moduleRoot -ChildPath 'DSCResource.Tests\TestHelper.psm1'))) ) -{ - & git @('clone','https://github.com/PowerShell/DscResource.Tests.git',(Join-Path -Path $script:moduleRoot -ChildPath '\DSCResource.Tests\')) -} - -Import-Module -Name (Join-Path -Path $script:moduleRoot -ChildPath (Join-Path -Path 'DSCResource.Tests' -ChildPath 'TestHelper.psm1')) -Force -$testEnvironment = Initialize-TestEnvironment ` --DSCModuleName $script:DSCModuleName ` --DSCResourceName $script:DSCResourceName ` --TestType Integration - -#endregion - -try -{ - #region Integration Tests - $configFile = Join-Path -Path $PSScriptRoot -ChildPath "$($script:DSCResourceName).config.ps1" - . $configFile - - Describe "$($script:DSCResourceName)_Integration" { - #region DEFAULT TESTS - It 'Should compile and apply the MOF without throwing' { - { - & "$($script:DSCResourceName)_Config" -OutputPath $testEnvironment.WorkingFolder - Start-DscConfiguration -Path $testEnvironment.WorkingFolder ` - -ComputerName localhost -Wait -Verbose -Force - } | Should not throw - } - - It 'Should be able to call Get-DscConfiguration without throwing' { - { Get-DscConfiguration -Verbose -ErrorAction Stop } | Should Not throw - } - #endregion - - It 'Should have set the resource and all the parameters should match' { - Import-Module "$PSScriptRoot\..\..\DSCResources\MSFT_xDnsServerSetting\MSFT_xDnsServerDiagnostics.psm1" -Force - - Test-TargetResource @testParameters | Should be $true - } - } - #endregion - -} -finally -{ - #region FOOTER - - Restore-TestEnvironment -TestEnvironment $testEnvironment - - #endregion - -} diff --git a/Tests/Integration/MSFT_xDnsServerDiagnostics.config.ps1 b/Tests/Integration/MSFT_xDnsServerDiagnostics.config.ps1 deleted file mode 100644 index 9a75c956..00000000 --- a/Tests/Integration/MSFT_xDnsServerDiagnostics.config.ps1 +++ /dev/null @@ -1,81 +0,0 @@ - -$testParameters = @{ - Name = 'xDnsServerSetting_Integration' - Answers = $true - EnableLogFileRollover = $true - EnableLoggingForLocalLookupEvent = $true - EnableLoggingForPluginDllEvent = $true - EnableLoggingForRecursiveLookupEvent = $true - EnableLoggingForRemoteServerEvent = $true - EnableLoggingForServerStartStopEvent = $true - EnableLoggingForTombstoneEvent = $true - EnableLoggingForZoneDataWriteEvent = $true - EnableLoggingForZoneLoadingEvent = $true - EnableLoggingToFile = $true - EventLogLevel = 4 - FilterIPAddressList = "192.168.1.1","192.168.1.2" - FullPackets = $true - LogFilePath = 'C:\Windows\System32\DNS\DNSDiagnostics.log' - MaxMBFileSize = 500000000 - Notifications = $true - Queries = $true - QuestionTransactions = $true - ReceivePackets = $true - SaveLogsToPersistentStorage = $true - SendPackets = $true - TcpPackets = $true - UdpPackets = $true - UnmatchedResponse = $true - Update = $true - UseSystemEventLog = $true - WriteThrough = $true -} - -configuration MSFT_xDnsServerDiagnostics_config { - - Import-DscResource -ModuleName xDnsServer - - node localhost - { - WindowsFeature InstallDns - { - Name = 'DNS' - Ensure = 'Present' - IncludeAllSubFeature = $true - } - - xDnsServerDiagnostics Integration_Test { - - Name = $testParameters.Name - Answers = $testParameters.Answers - EnableLogFileRollover = $testParameters.EnableLogFileRollover - EnableLoggingForLocalLookupEvent = $testParameters.EnableLoggingForLocalLookupEvent - EnableLoggingForPluginDllEvent = $testParameters.EnableLoggingForPluginDllEvent - EnableLoggingForRecursiveLookupEvent = $testParameters.EnableLoggingForRecursiveLookupEvent - EnableLoggingForRemoteServerEvent = $testParameters.EnableLoggingForRemoteServerEvent - EnableLoggingForServerStartStopEvent = $testParameters.EnableLoggingForServerStartStopEvent - EnableLoggingForTombstoneEvent = $testParameters.EnableLoggingForTombstoneEvent - EnableLoggingForZoneDataWriteEvent = $testParameters.EnableLoggingForZoneDataWriteEvent - EnableLoggingForZoneLoadingEvent = $testParameters.EnableLoggingForZoneLoadingEvent - EnableLoggingToFile = $testParameters.EnableLoggingToFile - EventLogLevel = $testParameters.EventLogLevel - FilterIPAddressList = $testParameters.FilterIPAddressList - FullPackets = $testParameters.FullPackets - LogFilePath = $testParameters.LogFilePath - MaxMBFileSize = $testParameters.MaxMBFileSize - Notifications = $testParameters.Notifications - Queries = $testParameters.Queries - QuestionTransactions = $testParameters.QuestionTransactions - ReceivePackets = $testParameters.ReceivePackets - SaveLogsToPersistentStorage = $testParameters.SaveLogsToPersistentStorage - SendPackets = $testParameters.SendPackets - TcpPackets = $testParameters.TcpPackets - UdpPackets = $testParameters.UdpPackets - UnmatchedResponse = $testParameters.UnmatchedResponse - Update = $testParameters.Update - UseSystemEventLog = $testParameters.UseSystemEventLog - WriteThrough = $testParameters.WriteThrough - DependsOn = '[WindowsFeature]InstallDns' - } - } -} diff --git a/Tests/Unit/MSFT_xDnsServerDiagnostics.Tests.ps1 b/Tests/Unit/MSFT_xDnsServerDiagnostics.Tests.ps1 deleted file mode 100644 index 0154e9bf..00000000 --- a/Tests/Unit/MSFT_xDnsServerDiagnostics.Tests.ps1 +++ /dev/null @@ -1,232 +0,0 @@ - -$script:DSCModuleName = 'xDnsServer' -$script:DSCResourceName = 'MSFT_xDnsServerDiagnostics' - -#region HEADER -# Unit Test Template Version: 1.1.0 -$moduleRoot = Split-Path -Parent (Split-Path -Parent (Split-Path -Parent $Script:MyInvocation.MyCommand.Path)) -if ( (-not (Test-Path -Path (Join-Path -Path $moduleRoot -ChildPath 'DSCResource.Tests'))) -or ` -(-not (Test-Path -Path (Join-Path -Path $moduleRoot -ChildPath 'DSCResource.Tests\TestHelper.psm1'))) ) -{ - & git @('clone','https://github.com/PowerShell/DscResource.Tests.git',(Join-Path -Path $moduleRoot -ChildPath '\DSCResource.Tests\')) -} - -Import-Module (Join-Path -Path $moduleRoot -ChildPath 'DSCResource.Tests\TestHelper.psm1') -Force -$testEnvironment = Initialize-TestEnvironment ` --DSCModuleName $script:DSCModuleName ` --DSCResourceName $script:DSCResourceName ` --TestType Unit -#endregion HEADER - -# Begin Testing -try -{ - InModuleScope $script:DSCResourceName { - function Get-DnsServerDiagnostics {} - function Set-DnsServerDiagnostics {} - #region Pester Test Initialization - $testParameters = @{ - Name = 'xDnsServerDiagnostics_Integration' - Answers = $true - EnableLogFileRollover = $true - EnableLoggingForLocalLookupEvent = $true - EnableLoggingForPluginDllEvent = $true - EnableLoggingForRecursiveLookupEvent = $true - EnableLoggingForRemoteServerEvent = $true - EnableLoggingForServerStartStopEvent = $true - EnableLoggingForTombstoneEvent = $true - EnableLoggingForZoneDataWriteEvent = $true - EnableLoggingForZoneLoadingEvent = $true - EnableLoggingToFile = $true - EventLogLevel = 4 - FilterIPAddressList = "192.168.1.1","192.168.1.2" - FullPackets = $true - LogFilePath = 'C:\Windows\System32\DNS\DNSDiagnostics.log' - MaxMBFileSize = 500000000 - Notifications = $true - Queries = $true - QuestionTransactions = $true - ReceivePackets = $true - SaveLogsToPersistentStorage = $true - SendPackets = $true - TcpPackets = $true - UdpPackets = $true - UnmatchedResponse = $true - Update = $true - UseSystemEventLog = $true - WriteThrough = $true - } - - $mockGetDnsServerDiagnostics = @{ - Name = 'xDnsServerDiagnostics_Integration' - Answers = $true - EnableLogFileRollover = $true - EnableLoggingForLocalLookupEvent = $true - EnableLoggingForPluginDllEvent = $true - EnableLoggingForRecursiveLookupEvent = $true - EnableLoggingForRemoteServerEvent = $true - EnableLoggingForServerStartStopEvent = $true - EnableLoggingForTombstoneEvent = $true - EnableLoggingForZoneDataWriteEvent = $true - EnableLoggingForZoneLoadingEvent = $true - EnableLoggingToFile = $true - EventLogLevel = 4 - FilterIPAddressList = "192.168.1.1","192.168.1.2" - FullPackets = $true - LogFilePath = 'C:\Windows\System32\DNS\DNSDiagnostics.log' - MaxMBFileSize = 500000000 - Notifications = $true - Queries = $true - QuestionTransactions = $true - ReceivePackets = $true - SaveLogsToPersistentStorage = $true - SendPackets = $true - TcpPackets = $true - UdpPackets = $true - UnmatchedResponse = $true - Update = $true - UseSystemEventLog = $true - WriteThrough = $true - } - - $commonParameters += [System.Management.Automation.PSCmdlet]::CommonParameters - $commonParameters += [System.Management.Automation.PSCmdlet]::OptionalCommonParameters - - $mockParameters = @{ - Verbose = $true - Debug = $true - ErrorAction = 'stop' - WarningAction = 'Continue' - InformationAction = 'Continue' - ErrorVariable = 'err' - WarningVariable = 'warn' - OutVariable = 'out' - OutBuffer = 'outbuff' - PipelineVariable = 'pipe' - InformationVariable = 'info' - WhatIf = $true - Confirm = $true - UseTransaction = $true - Name = 'DnsServerDiagnostic' - } - - #endregion Pester Test Initialization - - #region Example state 1 - Describe 'The system is not in the desired state' { - - Context 'Get-TargetResource' { - It "Get method returns 'something'" { - Mock Get-DnsServerDiagnostics -MockWith {$mockGetDnsServerDiagnostics} - Mock Assert-Module - $getResult = Get-TargetResource -Name 'DnsServerDiagnostic' - - foreach ($key in $getResult.Keys) - { - if ($null -ne $getResult[$key] -and $key -ne 'Name') - { - $getResult[$key] | Should be $mockGetDnsServerDiagnostics[$key] - } - } - } - - It 'Get throws when DnsServerDiagnostics is not found' { - $mockThrow = @{Exception = @{Message = 'Invalid Class'}} - Mock Get-DnsServerDiagnostics -MockWith {throw $mockThrow} - - {Get-TargetResource -Name 'DnsServerDiagnostics'} | should throw - } - } - - Context 'Test-TargetResource' { - - $falseParameters = @{Name = 'DnsServerDiagnostic'} - - foreach ($key in $testParameters.Keys) - { - if ($key -ne 'Name') - { - $falseTestParameters = $falseParameters.Clone() - $falseTestParameters.Add($key,$testParameters[$key]) - It "Test method returns false when testing $key" { - Mock Get-TargetResource -MockWith {$mockGetDnsServerDiagnostics} - Test-TargetResource @falseTestParameters | Should be $false - } - } - } - } - - Context 'Error handling' { - It 'Test throws when DnsServerDiagnostics is not found' { - $mockThrow = @{Exception = @{Message = 'What to put here???'}} - Mock Get-DnsServerDiagnostics -MockWith {throw $mockThrow} - - {Get-TargetResource -Name 'xDnsServerSetting_Integration'} | should throw - } - } - - Context 'Set-TargetResource' { - It 'Set method calls Set-CimInstance' { - Mock Get-DnsServerDiagnostics -MockWith {$mockGetDnsServerDiagnostics} - Mock Set-DnsServerDiagnostics {} - - Set-TargetResource @testParameters - - Assert-MockCalled Set-DnsServerDiagnostics -Exactly 1 - } - } - } - #endregion Example state 1 - - #region Example state 2 - Describe 'The system is in the desired state' { - - Context 'Test-TargetResource' { - - Mock Get-TargetResource -MockWith { $mockGetDnsServerDiagnostics } - - $trueParameters = @{ Name = 'xDnsServerDiagnostics_Integration' } - - foreach ($key in $testParameters.Keys) - { - if ($key -ne 'Name') - { - $trueTestParameters = $trueParameters.Clone() - - $trueTestParameters.Add($key,$mockGetDnsServerDiagnostics[$key]) - - It "Test method returns true when testing $key" { - $result = Test-TargetResource @trueTestParameters - $result | Should be $true - } - } - } - - } - } - #endregion Example state 2 - - #region Non-Exported Function Unit Tests - - Describe 'Private functions' { - - Context 'Remove-CommonParameters' { - It 'Should not contain any common parameters' { - $removeResults = Remove-CommonParameter $mockParameters - - foreach ($key in $removeResults.Keys) - { - $commonParameters -notcontains $key | should be $true - } - } - } - } - #endregion Non-Exported Function Unit Tests - } -} -finally -{ - #region FOOTER - Restore-TestEnvironment -TestEnvironment $testEnvironment - #endregion -} From 25332b149799e7eca050a8ee57c0deb6a057e5e6 Mon Sep 17 00:00:00 2001 From: Katie Kragenbrink Date: Wed, 15 May 2019 10:15:33 -0700 Subject: [PATCH 13/13] Releasing version 1.12.0.0 --- .../MSFT_xDnsRecord.schema.mof | 22 +- .../MSFT_xDnsServerSetting.psm1 | 940 +++++++++--------- .../MSFT_xDnsServerSetting.schema.mof | 102 +- Misc/MockObjects/DnsServerClass.xml | 288 +++--- README.md | 2 + xDnsServer.psd1 | 20 +- 6 files changed, 683 insertions(+), 691 deletions(-) diff --git a/DSCResources/MSFT_xDnsRecord/MSFT_xDnsRecord.schema.mof b/DSCResources/MSFT_xDnsRecord/MSFT_xDnsRecord.schema.mof index 31ce61e9..3ee7560a 100644 --- a/DSCResources/MSFT_xDnsRecord/MSFT_xDnsRecord.schema.mof +++ b/DSCResources/MSFT_xDnsRecord/MSFT_xDnsRecord.schema.mof @@ -1,11 +1,11 @@ -[ClassVersion("1.0.0.0"), FriendlyName("xDnsRecord")] -class MSFT_xDnsRecord : OMI_BaseResource -{ - [Key, Description("Specifies the name of the DNS server resource record object.")] string Name; - [Key, Description("Specifies the name of a DNS zone.")] string Zone; - [Required, Description("Specifies the type of DNS record."), ValueMap{"ARecord","CName","Ptr"}, Values{"ARecord","CName","Ptr"}] string Type; - [Key, Description("Specifies the Target Hostname or IP Address.")] string Target; - [Write, Description("Name of the DnsServer to create the record on.")] string DnsServer; - [Write, Description("Should this DNS resource record be present or absent"), ValueMap{"Present","Absent"}, Values{"Present","Absent"}] String Ensure; -}; - +[ClassVersion("1.0.0.0"), FriendlyName("xDnsRecord")] +class MSFT_xDnsRecord : OMI_BaseResource +{ + [Key, Description("Specifies the name of the DNS server resource record object.")] string Name; + [Key, Description("Specifies the name of a DNS zone.")] string Zone; + [Required, Description("Specifies the type of DNS record."), ValueMap{"ARecord","CName","Ptr"}, Values{"ARecord","CName","Ptr"}] string Type; + [Key, Description("Specifies the Target Hostname or IP Address.")] string Target; + [Write, Description("Name of the DnsServer to create the record on.")] string DnsServer; + [Write, Description("Should this DNS resource record be present or absent"), ValueMap{"Present","Absent"}, Values{"Present","Absent"}] String Ensure; +}; + diff --git a/DSCResources/MSFT_xDnsServerSetting/MSFT_xDnsServerSetting.psm1 b/DSCResources/MSFT_xDnsServerSetting/MSFT_xDnsServerSetting.psm1 index eebd2ede..743dd8df 100644 --- a/DSCResources/MSFT_xDnsServerSetting/MSFT_xDnsServerSetting.psm1 +++ b/DSCResources/MSFT_xDnsServerSetting/MSFT_xDnsServerSetting.psm1 @@ -1,470 +1,470 @@ -Import-Module $PSScriptRoot\..\Helper.psm1 -Verbose:$false - -data LocalizedData -{ - ConvertFrom-StringData -StringData @' -NotInDesiredState="{0}" not in desired state. Expected: "{1}" Actual: "{2}". -DnsClassNotFound=MicrosoftDNS_Server class not found. DNS role is not installed. -ParameterExpectedNull={0} expected to be NULL nut is not. -GettingDnsServerSettings=Getting DNS Server Settings. -SetDnsServerSetting=Setting Dns setting '{0}' to value '{1}'. -'@ -} - -$properties = 'LocalNetPriority', 'AutoConfigFileZones', 'MaxCacheTTL', 'AddressAnswerLimit', 'UpdateOptions', 'DisableAutoReverseZones', 'StrictFileParsing', 'ForwardingTimeout', 'NoRecursion', 'ScavengingInterval', 'DisjointNets', 'Forwarders', 'DefaultAgingState', 'EnableDirectoryPartitions', 'LogFilePath', 'XfrConnectTimeout', 'AllowUpdate', 'Name', 'DsAvailable', 'BootMethod', 'LooseWildcarding', 'DsPollingInterval', 'BindSecondaries', 'LogLevel', 'AutoCacheUpdate', 'EnableDnsSec', 'EnableEDnsProbes', 'NameCheckFlag', 'EDnsCacheTimeout', 'SendPort', 'WriteAuthorityNS', 'IsSlave', 'LogIPFilterList', 'RecursionTimeout', 'ListenAddresses', 'DsTombstoneInterval', 'EventLogLevel', 'RecursionRetry', 'RpcProtocol', 'SecureResponses', 'RoundRobin', 'ForwardDelegations', 'LogFileMaxSize', 'DefaultNoRefreshInterval', 'MaxNegativeCacheTTL', 'DefaultRefreshInterval' - -function Get-TargetResource -{ - [CmdletBinding()] - [OutputType([hashtable])] - param - ( - [Parameter(Mandatory = $true)] - [string] - $Name - ) - - Assert-Module -Name DnsServer - - Write-Verbose ($LocalizedData.GettingDnsServerSettings) - $dnsServerInstance = Get-CimInstance -Namespace root\MicrosoftDNS -ClassName MicrosoftDNS_Server -ErrorAction Stop - - $returnValue = @{} - - foreach ($property in $properties) - { - $returnValue.Add($property, $dnsServerInstance."$property") - } - $returnValue.LogIPFilterList = (Get-PsDnsServerDiagnosticsClass).FilterIPAddressList - $returnValue.Name = $Name - - $returnValue -} - -function Set-TargetResource -{ - [CmdletBinding()] - param - ( - [Parameter(Mandatory = $true)] - [string] - $Name, - - [Parameter()] - [uint32] - $AddressAnswerLimit, - - [Parameter()] - [uint32] - $AllowUpdate, - - [Parameter()] - [bool] - $AutoCacheUpdate, - - [Parameter()] - [uint32] - $AutoConfigFileZones, - - [Parameter()] - [bool] - $BindSecondaries, - - [Parameter()] - [uint32] - $BootMethod, - - [Parameter()] - [bool] - $DefaultAgingState, - - [Parameter()] - [uint32] - $DefaultNoRefreshInterval, - - [Parameter()] - [uint32] - $DefaultRefreshInterval, - - [Parameter()] - [bool] - $DisableAutoReverseZones, - - [Parameter()] - [bool] - $DisjointNets, - - [Parameter()] - [uint32] - $DsPollingInterval, - - [Parameter()] - [uint32] - $DsTombstoneInterval, - - [Parameter()] - [uint32] - $EDnsCacheTimeout, - - [Parameter()] - [bool] - $EnableDirectoryPartitions, - - [Parameter()] - [uint32] - $EnableDnsSec, - - [Parameter()] - [bool] - $EnableEDnsProbes, - - [Parameter()] - [uint32] - $EventLogLevel, - - [Parameter()] - [uint32] - $ForwardDelegations, - - [Parameter()] - [string[]] - $Forwarders, - - [Parameter()] - [uint32] - $ForwardingTimeout, - - [Parameter()] - [bool] - $IsSlave, - - [Parameter()] - [string[]] - $ListenAddresses, - - [Parameter()] - [bool] - $LocalNetPriority, - - [Parameter()] - [uint32] - $LogFileMaxSize, - - [Parameter()] - [string] - $LogFilePath, - - [Parameter()] - [string[]] - $LogIPFilterList, - - [Parameter()] - [uint32] - $LogLevel, - - [Parameter()] - [bool] - $LooseWildcarding, - - [Parameter()] - [uint32] - $MaxCacheTTL, - - [Parameter()] - [uint32] - $MaxNegativeCacheTTL, - - [Parameter()] - [uint32] - $NameCheckFlag, - - [Parameter()] - [bool] - $NoRecursion, - - [Parameter()] - [uint32] - $RecursionRetry, - - [Parameter()] - [uint32] - $RecursionTimeout, - - [Parameter()] - [bool] - $RoundRobin, - - [Parameter()] - [int16] - $RpcProtocol, - - [Parameter()] - [uint32] - $ScavengingInterval, - - [Parameter()] - [bool] - $SecureResponses, - - [Parameter()] - [uint32] - $SendPort, - - [Parameter()] - [bool] - $StrictFileParsing, - - [Parameter()] - [uint32] - $UpdateOptions, - - [Parameter()] - [bool] - $WriteAuthorityNS, - - [Parameter()] - [uint32] - $XfrConnectTimeout - ) - - Assert-Module -Name DnsServer - - $PSBoundParameters.Remove('Name') - $dnsProperties = Remove-CommonParameter -Hashtable $PSBoundParameters - - $dnsServerInstance = Get-CimInstance -Namespace root\MicrosoftDNS -ClassName MicrosoftDNS_Server - - try - { - Foreach($property in $dnsProperties.keys) - { - Write-Verbose -Message ($LocalizedData.SetDnsServerSetting -f $property, $dnsProperties[$property]) - } - - Set-CimInstance -InputObject $dnsServerInstance -Property $dnsProperties -ErrorAction Stop - } - catch - { - throw $_ - } -} - -function Test-TargetResource -{ - [CmdletBinding()] - [OutputType([bool])] - param - ( - [Parameter(Mandatory = $true)] - [string] - $Name, - - [Parameter()] - [uint32] - $AddressAnswerLimit, - - [Parameter()] - [uint32] - $AllowUpdate, - - [Parameter()] - [bool] - $AutoCacheUpdate, - - [Parameter()] - [uint32] - $AutoConfigFileZones, - - [Parameter()] - [bool] - $BindSecondaries, - - [Parameter()] - [uint32] - $BootMethod, - - [Parameter()] - [bool] - $DefaultAgingState, - - [Parameter()] - [uint32] - $DefaultNoRefreshInterval, - - [Parameter()] - [uint32] - $DefaultRefreshInterval, - - [Parameter()] - [bool] - $DisableAutoReverseZones, - - [Parameter()] - [bool] - $DisjointNets, - - [Parameter()] - [uint32] - $DsPollingInterval, - - [Parameter()] - [uint32] - $DsTombstoneInterval, - - [Parameter()] - [uint32] - $EDnsCacheTimeout, - - [Parameter()] - [bool] - $EnableDirectoryPartitions, - - [Parameter()] - [uint32] - $EnableDnsSec, - - [Parameter()] - [bool] - $EnableEDnsProbes, - - [Parameter()] - [uint32] - $EventLogLevel, - - [Parameter()] - [uint32] - $ForwardDelegations, - - [Parameter()] - [string[]] - $Forwarders, - - [Parameter()] - [uint32] - $ForwardingTimeout, - - [Parameter()] - [bool] - $IsSlave, - - [Parameter()] - [string[]] - $ListenAddresses, - - [Parameter()] - [bool] - $LocalNetPriority, - - [Parameter()] - [uint32] - $LogFileMaxSize, - - [Parameter()] - [string] - $LogFilePath, - - [Parameter()] - [string[]] - $LogIPFilterList, - - [Parameter()] - [uint32] - $LogLevel, - - [Parameter()] - [bool] - $LooseWildcarding, - - [Parameter()] - [uint32] - $MaxCacheTTL, - - [Parameter()] - [uint32] - $MaxNegativeCacheTTL, - - [Parameter()] - [uint32] - $NameCheckFlag, - - [Parameter()] - [bool] - $NoRecursion, - - [Parameter()] - [uint32] - $RecursionRetry, - - [Parameter()] - [uint32] - $RecursionTimeout, - - [Parameter()] - [bool] - $RoundRobin, - - [Parameter()] - [int16] - $RpcProtocol, - - [Parameter()] - [uint32] - $ScavengingInterval, - - [Parameter()] - [bool] - $SecureResponses, - - [Parameter()] - [uint32] - $SendPort, - - [Parameter()] - [bool] - $StrictFileParsing, - - [Parameter()] - [uint32] - $UpdateOptions, - - [Parameter()] - [bool] - $WriteAuthorityNS, - - [Parameter()] - [uint32] - $XfrConnectTimeout - ) - - Write-Verbose -Message 'Evaluating the DNS server settings.' - - $currentState = Get-TargetResource -Name $Name - - $desiredState = $PSBoundParameters - $result = Test-DscParameterState -CurrentValues $currentState -DesiredValues $desiredState -TurnOffTypeChecking -Verbose:$VerbosePreference - - return $result -} - -<# - .SYNOPSIS - Internal function to get results from the PS_DnsServerDiagnostics. - This is needed because LogIpFilterList is not returned by querying the MicrosoftDNS_Server class. -#> -function Get-PsDnsServerDiagnosticsClass -{ - [CmdletBinding()] - [OutputType([Microsoft.Management.Infrastructure.CimInstance])] - - $invokeCimMethodParameters = @{ - NameSpace = 'root/Microsoft/Windows/DNS' - ClassName = 'PS_DnsServerDiagnostics' - MethodName = 'Get' - ErrorAction = 'Stop' - } - - $cimDnsServerDiagnostics = Invoke-CimMethod @invokeCimMethodParameters - $cimDnsServerDiagnostics.cmdletOutput -} - -Export-ModuleMember -Function *-TargetResource +Import-Module $PSScriptRoot\..\Helper.psm1 -Verbose:$false + +data LocalizedData +{ + ConvertFrom-StringData -StringData @' +NotInDesiredState="{0}" not in desired state. Expected: "{1}" Actual: "{2}". +DnsClassNotFound=MicrosoftDNS_Server class not found. DNS role is not installed. +ParameterExpectedNull={0} expected to be NULL nut is not. +GettingDnsServerSettings=Getting DNS Server Settings. +SetDnsServerSetting=Setting Dns setting '{0}' to value '{1}'. +'@ +} + +$properties = 'LocalNetPriority', 'AutoConfigFileZones', 'MaxCacheTTL', 'AddressAnswerLimit', 'UpdateOptions', 'DisableAutoReverseZones', 'StrictFileParsing', 'ForwardingTimeout', 'NoRecursion', 'ScavengingInterval', 'DisjointNets', 'Forwarders', 'DefaultAgingState', 'EnableDirectoryPartitions', 'LogFilePath', 'XfrConnectTimeout', 'AllowUpdate', 'Name', 'DsAvailable', 'BootMethod', 'LooseWildcarding', 'DsPollingInterval', 'BindSecondaries', 'LogLevel', 'AutoCacheUpdate', 'EnableDnsSec', 'EnableEDnsProbes', 'NameCheckFlag', 'EDnsCacheTimeout', 'SendPort', 'WriteAuthorityNS', 'IsSlave', 'LogIPFilterList', 'RecursionTimeout', 'ListenAddresses', 'DsTombstoneInterval', 'EventLogLevel', 'RecursionRetry', 'RpcProtocol', 'SecureResponses', 'RoundRobin', 'ForwardDelegations', 'LogFileMaxSize', 'DefaultNoRefreshInterval', 'MaxNegativeCacheTTL', 'DefaultRefreshInterval' + +function Get-TargetResource +{ + [CmdletBinding()] + [OutputType([hashtable])] + param + ( + [Parameter(Mandatory = $true)] + [string] + $Name + ) + + Assert-Module -Name DnsServer + + Write-Verbose ($LocalizedData.GettingDnsServerSettings) + $dnsServerInstance = Get-CimInstance -Namespace root\MicrosoftDNS -ClassName MicrosoftDNS_Server -ErrorAction Stop + + $returnValue = @{} + + foreach ($property in $properties) + { + $returnValue.Add($property, $dnsServerInstance."$property") + } + $returnValue.LogIPFilterList = (Get-PsDnsServerDiagnosticsClass).FilterIPAddressList + $returnValue.Name = $Name + + $returnValue +} + +function Set-TargetResource +{ + [CmdletBinding()] + param + ( + [Parameter(Mandatory = $true)] + [string] + $Name, + + [Parameter()] + [uint32] + $AddressAnswerLimit, + + [Parameter()] + [uint32] + $AllowUpdate, + + [Parameter()] + [bool] + $AutoCacheUpdate, + + [Parameter()] + [uint32] + $AutoConfigFileZones, + + [Parameter()] + [bool] + $BindSecondaries, + + [Parameter()] + [uint32] + $BootMethod, + + [Parameter()] + [bool] + $DefaultAgingState, + + [Parameter()] + [uint32] + $DefaultNoRefreshInterval, + + [Parameter()] + [uint32] + $DefaultRefreshInterval, + + [Parameter()] + [bool] + $DisableAutoReverseZones, + + [Parameter()] + [bool] + $DisjointNets, + + [Parameter()] + [uint32] + $DsPollingInterval, + + [Parameter()] + [uint32] + $DsTombstoneInterval, + + [Parameter()] + [uint32] + $EDnsCacheTimeout, + + [Parameter()] + [bool] + $EnableDirectoryPartitions, + + [Parameter()] + [uint32] + $EnableDnsSec, + + [Parameter()] + [bool] + $EnableEDnsProbes, + + [Parameter()] + [uint32] + $EventLogLevel, + + [Parameter()] + [uint32] + $ForwardDelegations, + + [Parameter()] + [string[]] + $Forwarders, + + [Parameter()] + [uint32] + $ForwardingTimeout, + + [Parameter()] + [bool] + $IsSlave, + + [Parameter()] + [string[]] + $ListenAddresses, + + [Parameter()] + [bool] + $LocalNetPriority, + + [Parameter()] + [uint32] + $LogFileMaxSize, + + [Parameter()] + [string] + $LogFilePath, + + [Parameter()] + [string[]] + $LogIPFilterList, + + [Parameter()] + [uint32] + $LogLevel, + + [Parameter()] + [bool] + $LooseWildcarding, + + [Parameter()] + [uint32] + $MaxCacheTTL, + + [Parameter()] + [uint32] + $MaxNegativeCacheTTL, + + [Parameter()] + [uint32] + $NameCheckFlag, + + [Parameter()] + [bool] + $NoRecursion, + + [Parameter()] + [uint32] + $RecursionRetry, + + [Parameter()] + [uint32] + $RecursionTimeout, + + [Parameter()] + [bool] + $RoundRobin, + + [Parameter()] + [int16] + $RpcProtocol, + + [Parameter()] + [uint32] + $ScavengingInterval, + + [Parameter()] + [bool] + $SecureResponses, + + [Parameter()] + [uint32] + $SendPort, + + [Parameter()] + [bool] + $StrictFileParsing, + + [Parameter()] + [uint32] + $UpdateOptions, + + [Parameter()] + [bool] + $WriteAuthorityNS, + + [Parameter()] + [uint32] + $XfrConnectTimeout + ) + + Assert-Module -Name DnsServer + + $PSBoundParameters.Remove('Name') + $dnsProperties = Remove-CommonParameter -Hashtable $PSBoundParameters + + $dnsServerInstance = Get-CimInstance -Namespace root\MicrosoftDNS -ClassName MicrosoftDNS_Server + + try + { + Foreach($property in $dnsProperties.keys) + { + Write-Verbose -Message ($LocalizedData.SetDnsServerSetting -f $property, $dnsProperties[$property]) + } + + Set-CimInstance -InputObject $dnsServerInstance -Property $dnsProperties -ErrorAction Stop + } + catch + { + throw $_ + } +} + +function Test-TargetResource +{ + [CmdletBinding()] + [OutputType([bool])] + param + ( + [Parameter(Mandatory = $true)] + [string] + $Name, + + [Parameter()] + [uint32] + $AddressAnswerLimit, + + [Parameter()] + [uint32] + $AllowUpdate, + + [Parameter()] + [bool] + $AutoCacheUpdate, + + [Parameter()] + [uint32] + $AutoConfigFileZones, + + [Parameter()] + [bool] + $BindSecondaries, + + [Parameter()] + [uint32] + $BootMethod, + + [Parameter()] + [bool] + $DefaultAgingState, + + [Parameter()] + [uint32] + $DefaultNoRefreshInterval, + + [Parameter()] + [uint32] + $DefaultRefreshInterval, + + [Parameter()] + [bool] + $DisableAutoReverseZones, + + [Parameter()] + [bool] + $DisjointNets, + + [Parameter()] + [uint32] + $DsPollingInterval, + + [Parameter()] + [uint32] + $DsTombstoneInterval, + + [Parameter()] + [uint32] + $EDnsCacheTimeout, + + [Parameter()] + [bool] + $EnableDirectoryPartitions, + + [Parameter()] + [uint32] + $EnableDnsSec, + + [Parameter()] + [bool] + $EnableEDnsProbes, + + [Parameter()] + [uint32] + $EventLogLevel, + + [Parameter()] + [uint32] + $ForwardDelegations, + + [Parameter()] + [string[]] + $Forwarders, + + [Parameter()] + [uint32] + $ForwardingTimeout, + + [Parameter()] + [bool] + $IsSlave, + + [Parameter()] + [string[]] + $ListenAddresses, + + [Parameter()] + [bool] + $LocalNetPriority, + + [Parameter()] + [uint32] + $LogFileMaxSize, + + [Parameter()] + [string] + $LogFilePath, + + [Parameter()] + [string[]] + $LogIPFilterList, + + [Parameter()] + [uint32] + $LogLevel, + + [Parameter()] + [bool] + $LooseWildcarding, + + [Parameter()] + [uint32] + $MaxCacheTTL, + + [Parameter()] + [uint32] + $MaxNegativeCacheTTL, + + [Parameter()] + [uint32] + $NameCheckFlag, + + [Parameter()] + [bool] + $NoRecursion, + + [Parameter()] + [uint32] + $RecursionRetry, + + [Parameter()] + [uint32] + $RecursionTimeout, + + [Parameter()] + [bool] + $RoundRobin, + + [Parameter()] + [int16] + $RpcProtocol, + + [Parameter()] + [uint32] + $ScavengingInterval, + + [Parameter()] + [bool] + $SecureResponses, + + [Parameter()] + [uint32] + $SendPort, + + [Parameter()] + [bool] + $StrictFileParsing, + + [Parameter()] + [uint32] + $UpdateOptions, + + [Parameter()] + [bool] + $WriteAuthorityNS, + + [Parameter()] + [uint32] + $XfrConnectTimeout + ) + + Write-Verbose -Message 'Evaluating the DNS server settings.' + + $currentState = Get-TargetResource -Name $Name + + $desiredState = $PSBoundParameters + $result = Test-DscParameterState -CurrentValues $currentState -DesiredValues $desiredState -TurnOffTypeChecking -Verbose:$VerbosePreference + + return $result +} + +<# + .SYNOPSIS + Internal function to get results from the PS_DnsServerDiagnostics. + This is needed because LogIpFilterList is not returned by querying the MicrosoftDNS_Server class. +#> +function Get-PsDnsServerDiagnosticsClass +{ + [CmdletBinding()] + [OutputType([Microsoft.Management.Infrastructure.CimInstance])] + + $invokeCimMethodParameters = @{ + NameSpace = 'root/Microsoft/Windows/DNS' + ClassName = 'PS_DnsServerDiagnostics' + MethodName = 'Get' + ErrorAction = 'Stop' + } + + $cimDnsServerDiagnostics = Invoke-CimMethod @invokeCimMethodParameters + $cimDnsServerDiagnostics.cmdletOutput +} + +Export-ModuleMember -Function *-TargetResource diff --git a/DSCResources/MSFT_xDnsServerSetting/MSFT_xDnsServerSetting.schema.mof b/DSCResources/MSFT_xDnsServerSetting/MSFT_xDnsServerSetting.schema.mof index 8fadd933..d5064fe8 100644 --- a/DSCResources/MSFT_xDnsServerSetting/MSFT_xDnsServerSetting.schema.mof +++ b/DSCResources/MSFT_xDnsServerSetting/MSFT_xDnsServerSetting.schema.mof @@ -1,51 +1,51 @@ - -[ClassVersion("1.0.0.0"), FriendlyName("xDnsServerSetting")] -class MSFT_xDnsServerSetting : OMI_BaseResource -{ - [Key, Description("Key for the resource. It doesn't matter what it is as long as it's unique within the configuration.")] String Name; - [Write, Description("Maximum number of host records returned in response to an address request. Values between 5 and 28 are valid.")] Uint32 AddressAnswerLimit; - [Write, Description("Specifies whether the DNS Server accepts dynamic update requests.")] Uint32 AllowUpdate; - [Write, Description("Indicates whether the DNS Server attempts to update its cache entries using data from root servers.")] Boolean AutoCacheUpdate; - [Write, Description("Indicates which standard primary zones that are authoritative for the name of the DNS Server must be updated when the name server changes.")] Uint32 AutoConfigFileZones; - [Write, Description("Determines the AXFR message format when sending to non-Microsoft DNS Server secondaries")] Boolean BindSecondaries; - [Write, Description("Initialization method for the DNS Server.")] Uint32 BootMethod; - [Write, Description("Default ScavengingInterval value set for all Active Directory-integrated zones created on this DNS Server.")] Boolean DefaultAgingState; - [Write, Description("No-refresh interval, in hours, set for all Active Directory-integrated zones created on this DNS Server.")] Uint32 DefaultNoRefreshInterval; - [Write, Description("Refresh interval, in hours, set for all Active Directory-integrated zones created on this DNS Server.")] Uint32 DefaultRefreshInterval; - [Write, Description("Indicates whether the DNS Server automatically creates standard reverse look up zones.")] Boolean DisableAutoReverseZones; - [Write, Description("Indicates whether the default port binding for a socket used to send queries to remote DNS Servers can be overridden.")] Boolean DisjointNets; - [Write, Description("Interval, in seconds, to poll the DS-integrated zones.")] Uint32 DsPollingInterval; - [Write, Description("Lifetime of tombstoned records in Directory Service integrated zones, expressed in seconds.")] Uint32 DsTombstoneInterval; - [Write, Description("Lifetime, in seconds, of the cached information describing the EDNS version supported by other DNS Servers.")] Uint32 EDnsCacheTimeout; - [Write, Description("Specifies whether support for application directory partitions is enabled on the DNS Server.")] Boolean EnableDirectoryPartitions; - [Write, Description("Specifies whether the DNS Server includes DNSSEC-specific RRs, KEY, SIG, and NXT in a response.")] Uint32 EnableDnsSec; - [Write, Description("Specifies the behavior of the DNS Server. When TRUE, the DNS Server always responds with OPT resource records according to RFC 2671, unless the remote server has indicated it does not support EDNS in a prior exchange. If FALSE, the DNS Server responds to queries with OPTs only if OPTs are sent in the original query.")] Boolean EnableEDnsProbes; - [Write, Description("Indicates which events the DNS Server records in the Event Viewer system log.")] Uint32 EventLogLevel; - [Write, Description("Specifies whether queries to delegated sub-zones are forwarded.")] Uint32 ForwardDelegations; - [Write, Description("Enumerates the list of IP addresses of Forwarders to which the DNS Server forwards queries.")] String Forwarders[]; - [Write, Description("Time, in seconds, a DNS Server forwarding a query will wait for resolution from the forwarder before attempting to resolve the query itself.")] Uint32 ForwardingTimeout; - [Write, Description("TRUE if the DNS server does not use recursion when name-resolution through forwarders fails.")] Boolean IsSlave; - [Write, Description("Enumerates the list of IP addresses on which the DNS Server can receive queries.")] String ListenAddresses[]; - [Write, Description("Indicates whether the DNS Server gives priority to the local net address when returning A records.")] Boolean LocalNetPriority; - [Write, Description("Size of the DNS Server debug log, in bytes.")] Uint32 LogFileMaxSize; - [Write, Description("File name and path for the DNS Server debug log.")] String LogFilePath; - [Write, Description("List of IP addresses used to filter DNS events written to the debug log.")] String LogIPFilterList[]; - [Write, Description("Indicates which policies are activated in the Event Viewer system log.")] Uint32 LogLevel; - [Write, Description("Indicates whether the DNS Server performs loose wildcarding.")] Boolean LooseWildcarding; - [Write, Description("Maximum time, in seconds, the record of a recursive name query may remain in the DNS Server cache.")] Uint32 MaxCacheTTL; - [Write, Description("Maximum time, in seconds, a name error result from a recursive query may remain in the DNS Server cache.")] Uint32 MaxNegativeCacheTTL; - [Write, Description("Indicates the set of eligible characters to be used in DNS names.")] Uint32 NameCheckFlag; - [Write, Description("Indicates whether the DNS Server performs recursive look ups. TRUE indicates recursive look ups are not performed.")] Boolean NoRecursion; - [Write, Description("Elapsed seconds before retrying a recursive look up.")] Uint32 RecursionRetry; - [Write, Description("Elapsed seconds before the DNS Server gives up recursive query.")] Uint32 RecursionTimeout; - [Write, Description("Indicates whether the DNS Server round robins multiple A records.")] Boolean RoundRobin; - [Write, Description("RPC protocol or protocols over which administrative RPC runs.")] Sint16 RpcProtocol; - [Write, Description("Interval, in hours, between two consecutive scavenging operations performed by the DNS Server.")] Uint32 ScavengingInterval; - [Write, Description("Indicates whether the DNS Server exclusively saves records of names in the same subtree as the server that provided them.")] Boolean SecureResponses; - [Write, Description("Port on which the DNS Server sends UDP queries to other servers.")] Uint32 SendPort; - [Write, Description("Indicates whether the DNS Server parses zone files strictly.")] Boolean StrictFileParsing; - [Write, Description("Restricts the type of records that can be dynamically updated on the server, used in addition to the AllowUpdate settings on Server and Zone objects.")] Uint32 UpdateOptions; - [Write, Description("Specifies whether the DNS Server writes NS and SOA records to the authority section on successful response.")] Boolean WriteAuthorityNS; - [Write, Description("Time, in seconds, the DNS Server waits for a successful TCP connection to a remote server when attempting a zone transfer.")] Uint32 XfrConnectTimeout; - [Read, Description("Indicates whether there is an available DS on the DNS Server.")] Boolean DsAvailable; -}; + +[ClassVersion("1.0.0.0"), FriendlyName("xDnsServerSetting")] +class MSFT_xDnsServerSetting : OMI_BaseResource +{ + [Key, Description("Key for the resource. It doesn't matter what it is as long as it's unique within the configuration.")] String Name; + [Write, Description("Maximum number of host records returned in response to an address request. Values between 5 and 28 are valid.")] Uint32 AddressAnswerLimit; + [Write, Description("Specifies whether the DNS Server accepts dynamic update requests.")] Uint32 AllowUpdate; + [Write, Description("Indicates whether the DNS Server attempts to update its cache entries using data from root servers.")] Boolean AutoCacheUpdate; + [Write, Description("Indicates which standard primary zones that are authoritative for the name of the DNS Server must be updated when the name server changes.")] Uint32 AutoConfigFileZones; + [Write, Description("Determines the AXFR message format when sending to non-Microsoft DNS Server secondaries")] Boolean BindSecondaries; + [Write, Description("Initialization method for the DNS Server.")] Uint32 BootMethod; + [Write, Description("Default ScavengingInterval value set for all Active Directory-integrated zones created on this DNS Server.")] Boolean DefaultAgingState; + [Write, Description("No-refresh interval, in hours, set for all Active Directory-integrated zones created on this DNS Server.")] Uint32 DefaultNoRefreshInterval; + [Write, Description("Refresh interval, in hours, set for all Active Directory-integrated zones created on this DNS Server.")] Uint32 DefaultRefreshInterval; + [Write, Description("Indicates whether the DNS Server automatically creates standard reverse look up zones.")] Boolean DisableAutoReverseZones; + [Write, Description("Indicates whether the default port binding for a socket used to send queries to remote DNS Servers can be overridden.")] Boolean DisjointNets; + [Write, Description("Interval, in seconds, to poll the DS-integrated zones.")] Uint32 DsPollingInterval; + [Write, Description("Lifetime of tombstoned records in Directory Service integrated zones, expressed in seconds.")] Uint32 DsTombstoneInterval; + [Write, Description("Lifetime, in seconds, of the cached information describing the EDNS version supported by other DNS Servers.")] Uint32 EDnsCacheTimeout; + [Write, Description("Specifies whether support for application directory partitions is enabled on the DNS Server.")] Boolean EnableDirectoryPartitions; + [Write, Description("Specifies whether the DNS Server includes DNSSEC-specific RRs, KEY, SIG, and NXT in a response.")] Uint32 EnableDnsSec; + [Write, Description("Specifies the behavior of the DNS Server. When TRUE, the DNS Server always responds with OPT resource records according to RFC 2671, unless the remote server has indicated it does not support EDNS in a prior exchange. If FALSE, the DNS Server responds to queries with OPTs only if OPTs are sent in the original query.")] Boolean EnableEDnsProbes; + [Write, Description("Indicates which events the DNS Server records in the Event Viewer system log.")] Uint32 EventLogLevel; + [Write, Description("Specifies whether queries to delegated sub-zones are forwarded.")] Uint32 ForwardDelegations; + [Write, Description("Enumerates the list of IP addresses of Forwarders to which the DNS Server forwards queries.")] String Forwarders[]; + [Write, Description("Time, in seconds, a DNS Server forwarding a query will wait for resolution from the forwarder before attempting to resolve the query itself.")] Uint32 ForwardingTimeout; + [Write, Description("TRUE if the DNS server does not use recursion when name-resolution through forwarders fails.")] Boolean IsSlave; + [Write, Description("Enumerates the list of IP addresses on which the DNS Server can receive queries.")] String ListenAddresses[]; + [Write, Description("Indicates whether the DNS Server gives priority to the local net address when returning A records.")] Boolean LocalNetPriority; + [Write, Description("Size of the DNS Server debug log, in bytes.")] Uint32 LogFileMaxSize; + [Write, Description("File name and path for the DNS Server debug log.")] String LogFilePath; + [Write, Description("List of IP addresses used to filter DNS events written to the debug log.")] String LogIPFilterList[]; + [Write, Description("Indicates which policies are activated in the Event Viewer system log.")] Uint32 LogLevel; + [Write, Description("Indicates whether the DNS Server performs loose wildcarding.")] Boolean LooseWildcarding; + [Write, Description("Maximum time, in seconds, the record of a recursive name query may remain in the DNS Server cache.")] Uint32 MaxCacheTTL; + [Write, Description("Maximum time, in seconds, a name error result from a recursive query may remain in the DNS Server cache.")] Uint32 MaxNegativeCacheTTL; + [Write, Description("Indicates the set of eligible characters to be used in DNS names.")] Uint32 NameCheckFlag; + [Write, Description("Indicates whether the DNS Server performs recursive look ups. TRUE indicates recursive look ups are not performed.")] Boolean NoRecursion; + [Write, Description("Elapsed seconds before retrying a recursive look up.")] Uint32 RecursionRetry; + [Write, Description("Elapsed seconds before the DNS Server gives up recursive query.")] Uint32 RecursionTimeout; + [Write, Description("Indicates whether the DNS Server round robins multiple A records.")] Boolean RoundRobin; + [Write, Description("RPC protocol or protocols over which administrative RPC runs.")] Sint16 RpcProtocol; + [Write, Description("Interval, in hours, between two consecutive scavenging operations performed by the DNS Server.")] Uint32 ScavengingInterval; + [Write, Description("Indicates whether the DNS Server exclusively saves records of names in the same subtree as the server that provided them.")] Boolean SecureResponses; + [Write, Description("Port on which the DNS Server sends UDP queries to other servers.")] Uint32 SendPort; + [Write, Description("Indicates whether the DNS Server parses zone files strictly.")] Boolean StrictFileParsing; + [Write, Description("Restricts the type of records that can be dynamically updated on the server, used in addition to the AllowUpdate settings on Server and Zone objects.")] Uint32 UpdateOptions; + [Write, Description("Specifies whether the DNS Server writes NS and SOA records to the authority section on successful response.")] Boolean WriteAuthorityNS; + [Write, Description("Time, in seconds, the DNS Server waits for a successful TCP connection to a remote server when attempting a zone transfer.")] Uint32 XfrConnectTimeout; + [Read, Description("Indicates whether there is an available DS on the DNS Server.")] Boolean DsAvailable; +}; diff --git a/Misc/MockObjects/DnsServerClass.xml b/Misc/MockObjects/DnsServerClass.xml index 93d4fd36..76d1f61d 100644 --- a/Misc/MockObjects/DnsServerClass.xml +++ b/Misc/MockObjects/DnsServerClass.xml @@ -1,144 +1,144 @@ - - - - Microsoft.Management.Infrastructure.CimInstance#root/MicrosoftDNS/MicrosoftDNS_Server - Microsoft.Management.Infrastructure.CimInstance#ROOT/MicrosoftDNS/CIM_Service - Microsoft.Management.Infrastructure.CimInstance#ROOT/MicrosoftDNS/CIM_LogicalElement - Microsoft.Management.Infrastructure.CimInstance#ROOT/MicrosoftDNS/CIM_ManagedSystemElement - Microsoft.Management.Infrastructure.CimInstance#MicrosoftDNS_Server - Microsoft.Management.Infrastructure.CimInstance#CIM_Service - Microsoft.Management.Infrastructure.CimInstance#CIM_LogicalElement - Microsoft.Management.Infrastructure.CimInstance#CIM_ManagedSystemElement - Microsoft.Management.Infrastructure.CimInstance - System.Object - - MicrosoftDNS_Server (Name = "DC1.contoso.com") - - - - - DC1.contoso.com - OK - - true - Automatic - - - 0 - 1 - false - 1 - false - 3 - false - 168 - 168 - false - false - true - 180 - 1209600 - 900 - true - 1 - true - 4 - 0 - - - System.String[] - System.Array - System.Object - - - 168.63.129.16 - 8.8.8.8 - - - 3 - true - - - - 10.0.0.4 - - - true - 500000000 - C:\Windows\System32\DNS\DNS.log - - 50393905 - false - 86400 - 900 - 2 - false - 3 - 8 - true - 5 - 168 - true - 0 - - - - fe80::7da3:a014:6581:2cdc - 10.0.0.4 - - - false - 783 - 629146374 - false - 30 - - - - - - System.Collections.ArrayList - System.Object - - - - - CIM_ManagedSystemElement - ROOT/MicrosoftDNS - DC1 - -549583800 - <CLASS NAME="CIM_ManagedSystemElement"><QUALIFIER NAME="Abstract" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Description" TYPE="string"><VALUE>The ManagedSystemElement class is the base class for the system element hierarchy. Membership Criteria: Any distinguishable component of a system is a candidate for inclusion in this class.&lt;P&gt;Examples: Software components, such as files; and devices, such as disk drives and controllers, and physical components such as chips and cards.</VALUE></QUALIFIER><QUALIFIER NAME="Locale" TYPE="sint32" TOSUBCLASS="false"><VALUE>1033</VALUE></QUALIFIER><QUALIFIER NAME="UUID" TYPE="string" TOSUBCLASS="false"><VALUE>{8502C517-5FBB-11D2-AAC1-006008C78BC7}</VALUE></QUALIFIER><PROPERTY NAME="Caption" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The Caption property is a short textual description (one-line string) of the object.</VALUE></QUALIFIER><QUALIFIER NAME="MaxLen" TYPE="sint32"><VALUE>64</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Description" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The Description property provides a textual description of the object. </VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="InstallDate" TYPE="datetime"><QUALIFIER NAME="Description" TYPE="string"><VALUE>A datetime value indicating when the object was installed. A lack of a value does not indicate that the object is not installed.</VALUE></QUALIFIER><QUALIFIER NAME="MappingStrings" TYPE="string"><VALUE.ARRAY><VALUE>MIF.DMTF|ComponentID|001.5</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Name" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The Name property defines the label by which the object is known. When subclassed, the Name property can be overridden to be a Key property.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Status" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>A string indicating the current status of the object.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="ValueMap" TYPE="string"><VALUE.ARRAY><VALUE>OK</VALUE><VALUE>Error</VALUE><VALUE>Degraded</VALUE><VALUE>Unknown</VALUE></VALUE.ARRAY></QUALIFIER></PROPERTY></CLASS> - - - - - CIM_LogicalElement - ROOT/MicrosoftDNS - DC1 - -549567160 - <CLASS NAME="CIM_LogicalElement" SUPERCLASS="CIM_ManagedSystemElement"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The CIM_LogicalElement class is the base class for all the components of the system that represent abstract system components.&lt;P&gt;Example: Profiles, processes, or system capabilities in the form of logical devices.</VALUE></QUALIFIER><QUALIFIER NAME="Abstract" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Locale" TYPE="sint32" TOSUBCLASS="false"><VALUE>1033</VALUE></QUALIFIER><QUALIFIER NAME="UUID" TYPE="string" TOSUBCLASS="false"><VALUE>{8502C518-5FBB-11D2-AAC1-006008C78BC7}</VALUE></QUALIFIER></CLASS> - - - - - CIM_Service - ROOT/MicrosoftDNS - DC1 - -549556760 - <CLASS NAME="CIM_Service" SUPERCLASS="CIM_LogicalElement"><QUALIFIER NAME="Description" TYPE="string"><VALUE>A logical element that contains the information necessary to represent and manage the functionality provided by a Device and/or SoftwareFeature. A Service is a general-purpose object to configure and manage the implementation of functionality. It is not the functionality itself.</VALUE></QUALIFIER><QUALIFIER NAME="Abstract" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Locale" TYPE="sint32" TOSUBCLASS="false"><VALUE>1033</VALUE></QUALIFIER><QUALIFIER NAME="UUID" TYPE="string" TOSUBCLASS="false"><VALUE>{8502C527-5FBB-11D2-AAC1-006008C78BC7}</VALUE></QUALIFIER><PROPERTY NAME="Name" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The Name property uniquely identifies the Service and provides an indication of the functionality that is managed. This functionality is described in more detail in the object&apos;s Description property. </VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="key" TYPE="boolean" OVERRIDABLE="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Override" TYPE="string"><VALUE>Name</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="CreationClassName" TYPE="string"><QUALIFIER NAME="CIM_Key" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Started" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>ServiceStarted is a boolean indicating whether the Service has been started (TRUE), or stopped (FALSE).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="StartMode" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>StartMode is a string value indicating whether the Service is automatically started by a System, Operating System, etc. or only started upon request.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="ValueMap" TYPE="string"><VALUE.ARRAY><VALUE>Automatic</VALUE><VALUE>Manual</VALUE></VALUE.ARRAY></QUALIFIER></PROPERTY><PROPERTY NAME="SystemCreationClassName" TYPE="string"><QUALIFIER NAME="CIM_Key" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Description" TYPE="string"><VALUE>The type name of the system that hosts this service</VALUE></QUALIFIER><QUALIFIER NAME="Propagated" TYPE="string"><VALUE>CIM_System.CreationClassName</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="SystemName" TYPE="string"><QUALIFIER NAME="CIM_Key" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Description" TYPE="string"><VALUE>The name of the system that hosts this service</VALUE></QUALIFIER><QUALIFIER NAME="Propagated" TYPE="string"><VALUE>CIM_System.Name</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><METHOD NAME="StartService" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The StartService method places the Service in the started state. It returns an integer value of 0 if the Service was successfully started, 1 if the request is not supported and any other number to indicate an error.</VALUE></QUALIFIER></METHOD><METHOD NAME="StopService" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The StopService method places the Service in the stopped state. It returns an integer value of 0 if the Service was successfully stopped, 1 if the request is not supported and any other number to indicate an error.</VALUE></QUALIFIER></METHOD></CLASS> - - - - - MicrosoftDNS_Server - root/MicrosoftDNS - DC1 - -549553640 - <CLASS NAME="MicrosoftDNS_Server" SUPERCLASS="CIM_Service"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This class describes a DNS server. Every instance of this class may be associated with (or more intuitively &apos;may contain&apos;) one instance of class MicrosoftDNS_Cache, one instance of class MicrosoftDNS_RootHints and multiple instances of class MicrosoftDNS_Zone.</VALUE></QUALIFIER><QUALIFIER NAME="dynamic" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Locale" TYPE="sint32" TOSUBCLASS="false"><VALUE>1033</VALUE></QUALIFIER><QUALIFIER NAME="provider" TYPE="string" TOSUBCLASS="false"><VALUE>MS_NT_DNS_PROVIDER</VALUE></QUALIFIER><QUALIFIER NAME="Schema" TYPE="string"><VALUE>MicrosoftDNS</VALUE></QUALIFIER><QUALIFIER NAME="UUID" TYPE="string" TOSUBCLASS="false"><VALUE>{3E9F9B09-AA43-11d2-85DD-0000F8102E5F}</VALUE></QUALIFIER><PROPERTY NAME="Name" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the Fully Qualified Domain Name or IP address of the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="key" TYPE="boolean" OVERRIDABLE="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Override" TYPE="string"><VALUE>Name</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="AddressAnswerLimit" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the maximum number of host records returned in response to an address request. Values between 5 and 28 are valid.</VALUE></QUALIFIER><QUALIFIER NAME="Not_NULL" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="AllowUpdate" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This UInt32 indicates whether the DNS server accepts dynamic update requests.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>Do not allow dynamic updates</VALUE><VALUE>Allow unsecure dynamic updates</VALUE><VALUE>Allow only secure dynamic updates</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="AutoCacheUpdate" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server attempts to update its cache entries using data from root servers. When a DNS server boots, it needs a list of root server &apos;hints&apos; - NS and A records for the servers - historically called the cache file. The Microsoft DNS server has a feature to allow it to attempt to write back a new cache file based on the responses from the root servers.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="AutoConfigFileZones" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Uint32 indicates which standard primary zones authoritative for the name of the DNS server must be updated when the name of the server changes. The default value of this property is 1.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Valuemap" TYPE="string"><VALUE.ARRAY><VALUE>0</VALUE><VALUE>1</VALUE><VALUE>2</VALUE><VALUE>3</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>None</VALUE><VALUE>Only those that allow dynamic updates</VALUE><VALUE>Only those that do not allow dynamic updates</VALUE><VALUE>All</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="BindSecondaries" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This property determines the AXFR message format when sending to non-Microsoft DNS secondaries. If this property is TRUE, the server will send transfers to non-Microsoft DNS secondaries in the uncompressed format. If this property is FALSE, the server will send all transfers in the fast format.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="BootMethod" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the DNS server&apos;s initialization method.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>Uninitialized</VALUE><VALUE>Boot from file</VALUE><VALUE>Boot from registry</VALUE><VALUE>Boot from directory and registry</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DefaultAgingState" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the value of Enable Scavenging flag to be set for all Active Directory-integrated zones created on this server. The default value 0 corresponds to the Disabled scavenging of a zone.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DefaultNoRefreshInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the value of No-Refresh Interval to be set for all Active Directory-integrated zones created on this server. The default value of this property is 168 hours (7 days).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Hours</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DefaultRefreshInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the value of Refresh Interval to be set for all Active Directory-integrated zones created on this server. The default value of this property is 168 hours (7 days).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Hours</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DisableAutoReverseZones" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This property indicates whether the DNS server automatically creates standard reverse lookup zones.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DisjointNets" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether override is allowed of the default binding for a socket used to send queries to remote DNS servers.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DsAvailable" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether there is an available DS on the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DsPollingInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the interval (in seconds) to poll for changes in DS-integrated zones.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DsTombstoneInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The lifetime (in seconds) of tombstoned records in DS-integrated zones.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EDnsCacheTimeout" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the lifetime in seconds of the cached information describing the EDNS version supported by other DNS servers.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EnableDirectoryPartitions" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This value is TRUE if support for application directory partitions is enabled on this server.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EnableDnsSec" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies whether the DNS server includes the DNSSEC specific RRs, KEY,SIG and NXT, in the response. If this value is 0, then no DNSSEC records are included in response, unless the query was requesting an RRset of the DNSSEC record type. If this value is 1, then DNSSEC records are included in response according to the RFC 2535. If this value is 2, then DNSSEC records are included in response only if the original client query contained the OPT RR according to the RFC 2671. If a query was requesting an RRset of the DNSSEC record type the DNS server will always respond with such records if they are available.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EnableEDnsProbes" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the behavior of the DNS server with regard to the EDNS specified in the RFC 2671. If this value is FALSE, then the DNS server responds to the queries with response containing OPTs if OPTs are send in the original query, but doesn&apos;t include unsolicited OPTs in queries to other servers.If this value is TRUE then the server always OPT RRs according to RFC 2671 unless the remote server hasindicated that it does not support EDNS in a prior exchange.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EventLogLevel" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates which events the DNS server records in the Event Viewer system log.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Valuemap" TYPE="string"><VALUE.ARRAY><VALUE>0</VALUE><VALUE>1</VALUE><VALUE>2</VALUE><VALUE>4</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>None</VALUE><VALUE>Log only errors</VALUE><VALUE>Log only warnings and errors</VALUE><VALUE>Log all events</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="ForwardDelegations" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This property indicates whether queries to delegated sub-zones are forwarded.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY.ARRAY NAME="Forwarders" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE> This array of IP addresses are the servers to which this DNS server forwards queries that cannot be resolved with local data.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY.ARRAY><PROPERTY NAME="ForwardingTimeout" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates how long (in seconds) a DNS server, forwarding a query to a remote server listed in &quot;Forwarders&quot; will wait for a reply.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="IsSlave" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>A slave server will not attempt recursion if forwarding fails.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY.ARRAY NAME="ListenAddresses" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This array of strings enumerates the list of IP addresses on which the DNS server is allowed to receive queries.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY.ARRAY><PROPERTY NAME="LocalNetPriority" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server gives priority to the local net address returning A records.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="LogFileMaxSize" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The size in bytes of the DNS server&apos;s debug log.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="LogFilePath" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The file name for the DNS server&apos;s debug log. By the file is system32\dns\dns.log. You may change this value. A relative path path is relative to SystemRoot\System32. You may also use absolute paths, but UNC paths are not supported.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY.ARRAY NAME="LogIPFilterList" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>List of IP addresses used to filter DNS events written to DNS server&apos;s debug log.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY.ARRAY><PROPERTY NAME="LogLevel" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This property controls what packets and events are written to the DNS server&apos;s debug log. This property should be set to specific values based on the following algorithm: Each policy is assigned a specific value: Query - 1, Notify - 16, Update - 32, Non-query transactions - 254, Questions - 256, Answers - 512, Send - 4096, Receive - 8192, UDP - 16384, TCP - 32768, All packets - 65535, Directory Service write transaction - 65536, Directory Service update transaction - 131072, Full Packets - 16777216, and Write Through - 2147483648. The sum of the values corresponding to all the policies to be activated is indicated in this property.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Valuemap" TYPE="string"><VALUE.ARRAY><VALUE>1</VALUE><VALUE>16</VALUE><VALUE>32</VALUE><VALUE>254</VALUE><VALUE>256</VALUE><VALUE>512</VALUE><VALUE>4096</VALUE><VALUE>8192</VALUE><VALUE>16384</VALUE><VALUE>32768</VALUE><VALUE>65535</VALUE><VALUE>65536</VALUE><VALUE>131072</VALUE><VALUE>16777216</VALUE><VALUE>2147483648</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>Query</VALUE><VALUE>Notify</VALUE><VALUE>Update</VALUE><VALUE>Non-query transactions</VALUE><VALUE>Questions</VALUE><VALUE>Answers</VALUE><VALUE>Send</VALUE><VALUE>Receive</VALUE><VALUE>UDP</VALUE><VALUE>TCP</VALUE><VALUE>All packets</VALUE><VALUE>NT Directory Service write transaction</VALUE><VALUE>NT Directory Service update transaction</VALUE><VALUE>Full Packets</VALUE><VALUE>Write Through</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="LooseWildcarding" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server does wildcarding loosely. If the LooseWildcarding property is undefined or zero, the server will follow the wildcarding behavior specified in the DNS RFC. In this case, an admin is advised to include MX records for all hosts that are not capable of receiving mail. If the LooseWildcarding property is non-zero, the server seeks out the closest wildcard node. In this case, an admin should put MX records at both the zone root and in a wildcard node (&apos;*&apos;) directly below the zone root. Also, the admin should put self-referent MX records on hosts, which are to receive their own mail.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="MaxCacheTTL" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates a maximum time (in seconds) a record from a recursive name query may remain in the DNS server cache. The DNS server deletes records from the cache when the value of this entry expires, even if the value of the TTL field in the record is greater. The default value of this property is 86,400 seconds (1 day).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="MaxNegativeCacheTTL" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates a maximum time (in seconds) a name error result from a recursive name query may remain in the DNS server cache. The DNS server deletes records from the cache when the value of this entry expires, even if the value of the TTL field in the record is greater. The default value of this property is 86,400 seconds (1 day).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="NameCheckFlag" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the set of eligible characters to be used in DNS names.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Valuemap" TYPE="string"><VALUE.ARRAY><VALUE>0</VALUE><VALUE>1</VALUE><VALUE>2</VALUE><VALUE>3</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>Strict RFC (ANSI)</VALUE><VALUE>Non RFC (ANSI)</VALUE><VALUE>Multibyte (UTF8)</VALUE><VALUE>Any</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="NoRecursion" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server does NOT do recursive lookups. If set to TRUE, recursive lookups are not done.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="RecursionRetry" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the interval (in seconds) before retrying a recursive lookup. If the RecursionRetry property is undefined or zero, retries are made after three seconds. Users are discouraged from altering this property. However, there are some scenarios where the property should be changed. One example is when the DNS server contacts remote servers over a slow link, and the DNS server is retrying BEFORE reception of a response from the remote DNS. In this case, raising the RecursionRetry timeout to be slightly longer than the observed response time from the remote DNS would be reasonable.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="RecursionTimeout" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the timeout (in seconds) before the DNS server gives up recursive query. If the RecursionTimeout property is undefined or zero, the DNS server gives up after fifteen seconds. In general, the fifteen-second timeout is sufficient to allow any outstanding response to get back to the DNS server. Users are discouraged from altering this property. One scenario where the property should be changed is when the DNS server contacts remote servers over a slow link, and the DNS server is observed rejecting queries (with SERVER_FAILURE) before responses are received. (Note, that client resolvers also retry queries, so careful investigation is required to determine that remote responses are really for the query that was timed out.) In this case, raising the RecursionTimeout to be slightly longer than the observed response time from the remote DNS would be reasonable.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="RoundRobin" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server round robins multiple A records.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="RpcProtocol" TYPE="sint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the protocols over which administrative RPC runs. This property should be set to specific value based on the following algorithm: Every protocol to be used in RPC is assigned a specific value: None: 0, TCP/IP: 1, Named Pipes: 2, LPC: 4. The sum of the values corresponding to all the protocols to be used in RPC is indicated in this property.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="ScavengingInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the time interval between two consecutive scavenging operations performed by the server. Zero value means that scavenging is not enabled on the server.The default value of this property is 168 hours (7 days).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Hours</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="SecureResponses" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server onlycaches resource records that are in the same subtree as the DNS server that provided them.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="SendPort" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the port on which the DNS server sends UDP queries to other servers. By default, the DNS server sends queries on a socket bound to the DNS port. Sometimes this situation is NOT desirable. The most obvious case occurs when an admin firewalls off the DNS port, to prevent outside access to the DNS server, but still wants the server to be able to contact Internet DNS servers to provide name resolution for internal clients. This is also desirable if the DNS server is supporting disjoint nets (if true, the boolean property, DisjointNets, would be set to TRUE). In these cases, setting the SendPort property to a non-zero value causes the DNS server to bind to an arbitrary port for sending to remote DNS servers.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY.ARRAY NAME="ServerAddresses" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This array of strings enumerates the list of the DNS server&apos;s IP addresses.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY.ARRAY><PROPERTY NAME="StrictFileParsing" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server parses zone files strictly. If the StrictFileParsing property is undefined or zero, the server will log and ignore bad data in the zone file and continue to load. If the StrictFileParsing property is non-zero, the server will log and fail on zone file errors.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="UpdateOptions" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This value restricts the type of records that can be dynamically updated on the server. This parameter is a further restriction on dynamic updates applied after the AllowUpdate setting on Server and Zone objects. Use these values: &quot;No restrictions&quot; = 0, &quot;Do not allow dynamic updates of SOA records&quot; = 1, &quot;Do not allow dynamic updates of NS records at the zone root&quot; = 2, &quot;Do not allow dynamic updates of NS records not at the zone root (delegation NS records)&quot; = 4. Sum these values to determine the setting value. </VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Version" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the version of the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="WriteAuthorityNS" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server writes NS and SOA records to the authority section on successful response.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="XfrConnectTimeout" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Timeout in seconds the DNS server will wait for a successful TCP connection to a remote server when attempting a zone transfer.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><METHOD NAME="StartService" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This method starts the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="Implemented" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER></METHOD><METHOD NAME="StopService" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This method stops the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="Implemented" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER></METHOD><METHOD NAME="StartScavenging" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This method starts the scavenging of stale records in the zones subjected to scavenging.</VALUE></QUALIFIER><QUALIFIER NAME="Implemented" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER></METHOD><METHOD NAME="GetDistinguishedName" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This method get DS distinguished Name for the zone.</VALUE></QUALIFIER><QUALIFIER NAME="Implemented" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER></METHOD></CLASS> - - - - - - - + + + + Microsoft.Management.Infrastructure.CimInstance#root/MicrosoftDNS/MicrosoftDNS_Server + Microsoft.Management.Infrastructure.CimInstance#ROOT/MicrosoftDNS/CIM_Service + Microsoft.Management.Infrastructure.CimInstance#ROOT/MicrosoftDNS/CIM_LogicalElement + Microsoft.Management.Infrastructure.CimInstance#ROOT/MicrosoftDNS/CIM_ManagedSystemElement + Microsoft.Management.Infrastructure.CimInstance#MicrosoftDNS_Server + Microsoft.Management.Infrastructure.CimInstance#CIM_Service + Microsoft.Management.Infrastructure.CimInstance#CIM_LogicalElement + Microsoft.Management.Infrastructure.CimInstance#CIM_ManagedSystemElement + Microsoft.Management.Infrastructure.CimInstance + System.Object + + MicrosoftDNS_Server (Name = "DC1.contoso.com") + + + + + DC1.contoso.com + OK + + true + Automatic + + + 0 + 1 + false + 1 + false + 3 + false + 168 + 168 + false + false + true + 180 + 1209600 + 900 + true + 1 + true + 4 + 0 + + + System.String[] + System.Array + System.Object + + + 168.63.129.16 + 8.8.8.8 + + + 3 + true + + + + 10.0.0.4 + + + true + 500000000 + C:\Windows\System32\DNS\DNS.log + + 50393905 + false + 86400 + 900 + 2 + false + 3 + 8 + true + 5 + 168 + true + 0 + + + + fe80::7da3:a014:6581:2cdc + 10.0.0.4 + + + false + 783 + 629146374 + false + 30 + + + + + + System.Collections.ArrayList + System.Object + + + + + CIM_ManagedSystemElement + ROOT/MicrosoftDNS + DC1 + -549583800 + <CLASS NAME="CIM_ManagedSystemElement"><QUALIFIER NAME="Abstract" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Description" TYPE="string"><VALUE>The ManagedSystemElement class is the base class for the system element hierarchy. Membership Criteria: Any distinguishable component of a system is a candidate for inclusion in this class.&lt;P&gt;Examples: Software components, such as files; and devices, such as disk drives and controllers, and physical components such as chips and cards.</VALUE></QUALIFIER><QUALIFIER NAME="Locale" TYPE="sint32" TOSUBCLASS="false"><VALUE>1033</VALUE></QUALIFIER><QUALIFIER NAME="UUID" TYPE="string" TOSUBCLASS="false"><VALUE>{8502C517-5FBB-11D2-AAC1-006008C78BC7}</VALUE></QUALIFIER><PROPERTY NAME="Caption" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The Caption property is a short textual description (one-line string) of the object.</VALUE></QUALIFIER><QUALIFIER NAME="MaxLen" TYPE="sint32"><VALUE>64</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Description" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The Description property provides a textual description of the object. </VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="InstallDate" TYPE="datetime"><QUALIFIER NAME="Description" TYPE="string"><VALUE>A datetime value indicating when the object was installed. A lack of a value does not indicate that the object is not installed.</VALUE></QUALIFIER><QUALIFIER NAME="MappingStrings" TYPE="string"><VALUE.ARRAY><VALUE>MIF.DMTF|ComponentID|001.5</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Name" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The Name property defines the label by which the object is known. When subclassed, the Name property can be overridden to be a Key property.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Status" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>A string indicating the current status of the object.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="ValueMap" TYPE="string"><VALUE.ARRAY><VALUE>OK</VALUE><VALUE>Error</VALUE><VALUE>Degraded</VALUE><VALUE>Unknown</VALUE></VALUE.ARRAY></QUALIFIER></PROPERTY></CLASS> + + + + + CIM_LogicalElement + ROOT/MicrosoftDNS + DC1 + -549567160 + <CLASS NAME="CIM_LogicalElement" SUPERCLASS="CIM_ManagedSystemElement"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The CIM_LogicalElement class is the base class for all the components of the system that represent abstract system components.&lt;P&gt;Example: Profiles, processes, or system capabilities in the form of logical devices.</VALUE></QUALIFIER><QUALIFIER NAME="Abstract" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Locale" TYPE="sint32" TOSUBCLASS="false"><VALUE>1033</VALUE></QUALIFIER><QUALIFIER NAME="UUID" TYPE="string" TOSUBCLASS="false"><VALUE>{8502C518-5FBB-11D2-AAC1-006008C78BC7}</VALUE></QUALIFIER></CLASS> + + + + + CIM_Service + ROOT/MicrosoftDNS + DC1 + -549556760 + <CLASS NAME="CIM_Service" SUPERCLASS="CIM_LogicalElement"><QUALIFIER NAME="Description" TYPE="string"><VALUE>A logical element that contains the information necessary to represent and manage the functionality provided by a Device and/or SoftwareFeature. A Service is a general-purpose object to configure and manage the implementation of functionality. It is not the functionality itself.</VALUE></QUALIFIER><QUALIFIER NAME="Abstract" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Locale" TYPE="sint32" TOSUBCLASS="false"><VALUE>1033</VALUE></QUALIFIER><QUALIFIER NAME="UUID" TYPE="string" TOSUBCLASS="false"><VALUE>{8502C527-5FBB-11D2-AAC1-006008C78BC7}</VALUE></QUALIFIER><PROPERTY NAME="Name" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The Name property uniquely identifies the Service and provides an indication of the functionality that is managed. This functionality is described in more detail in the object&apos;s Description property. </VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="key" TYPE="boolean" OVERRIDABLE="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Override" TYPE="string"><VALUE>Name</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="CreationClassName" TYPE="string"><QUALIFIER NAME="CIM_Key" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Started" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>ServiceStarted is a boolean indicating whether the Service has been started (TRUE), or stopped (FALSE).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="StartMode" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>StartMode is a string value indicating whether the Service is automatically started by a System, Operating System, etc. or only started upon request.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="ValueMap" TYPE="string"><VALUE.ARRAY><VALUE>Automatic</VALUE><VALUE>Manual</VALUE></VALUE.ARRAY></QUALIFIER></PROPERTY><PROPERTY NAME="SystemCreationClassName" TYPE="string"><QUALIFIER NAME="CIM_Key" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Description" TYPE="string"><VALUE>The type name of the system that hosts this service</VALUE></QUALIFIER><QUALIFIER NAME="Propagated" TYPE="string"><VALUE>CIM_System.CreationClassName</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="SystemName" TYPE="string"><QUALIFIER NAME="CIM_Key" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Description" TYPE="string"><VALUE>The name of the system that hosts this service</VALUE></QUALIFIER><QUALIFIER NAME="Propagated" TYPE="string"><VALUE>CIM_System.Name</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><METHOD NAME="StartService" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The StartService method places the Service in the started state. It returns an integer value of 0 if the Service was successfully started, 1 if the request is not supported and any other number to indicate an error.</VALUE></QUALIFIER></METHOD><METHOD NAME="StopService" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The StopService method places the Service in the stopped state. It returns an integer value of 0 if the Service was successfully stopped, 1 if the request is not supported and any other number to indicate an error.</VALUE></QUALIFIER></METHOD></CLASS> + + + + + MicrosoftDNS_Server + root/MicrosoftDNS + DC1 + -549553640 + <CLASS NAME="MicrosoftDNS_Server" SUPERCLASS="CIM_Service"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This class describes a DNS server. Every instance of this class may be associated with (or more intuitively &apos;may contain&apos;) one instance of class MicrosoftDNS_Cache, one instance of class MicrosoftDNS_RootHints and multiple instances of class MicrosoftDNS_Zone.</VALUE></QUALIFIER><QUALIFIER NAME="dynamic" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Locale" TYPE="sint32" TOSUBCLASS="false"><VALUE>1033</VALUE></QUALIFIER><QUALIFIER NAME="provider" TYPE="string" TOSUBCLASS="false"><VALUE>MS_NT_DNS_PROVIDER</VALUE></QUALIFIER><QUALIFIER NAME="Schema" TYPE="string"><VALUE>MicrosoftDNS</VALUE></QUALIFIER><QUALIFIER NAME="UUID" TYPE="string" TOSUBCLASS="false"><VALUE>{3E9F9B09-AA43-11d2-85DD-0000F8102E5F}</VALUE></QUALIFIER><PROPERTY NAME="Name" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the Fully Qualified Domain Name or IP address of the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="key" TYPE="boolean" OVERRIDABLE="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Override" TYPE="string"><VALUE>Name</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="AddressAnswerLimit" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the maximum number of host records returned in response to an address request. Values between 5 and 28 are valid.</VALUE></QUALIFIER><QUALIFIER NAME="Not_NULL" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="AllowUpdate" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This UInt32 indicates whether the DNS server accepts dynamic update requests.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>Do not allow dynamic updates</VALUE><VALUE>Allow unsecure dynamic updates</VALUE><VALUE>Allow only secure dynamic updates</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="AutoCacheUpdate" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server attempts to update its cache entries using data from root servers. When a DNS server boots, it needs a list of root server &apos;hints&apos; - NS and A records for the servers - historically called the cache file. The Microsoft DNS server has a feature to allow it to attempt to write back a new cache file based on the responses from the root servers.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="AutoConfigFileZones" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Uint32 indicates which standard primary zones authoritative for the name of the DNS server must be updated when the name of the server changes. The default value of this property is 1.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Valuemap" TYPE="string"><VALUE.ARRAY><VALUE>0</VALUE><VALUE>1</VALUE><VALUE>2</VALUE><VALUE>3</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>None</VALUE><VALUE>Only those that allow dynamic updates</VALUE><VALUE>Only those that do not allow dynamic updates</VALUE><VALUE>All</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="BindSecondaries" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This property determines the AXFR message format when sending to non-Microsoft DNS secondaries. If this property is TRUE, the server will send transfers to non-Microsoft DNS secondaries in the uncompressed format. If this property is FALSE, the server will send all transfers in the fast format.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="BootMethod" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the DNS server&apos;s initialization method.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>Uninitialized</VALUE><VALUE>Boot from file</VALUE><VALUE>Boot from registry</VALUE><VALUE>Boot from directory and registry</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DefaultAgingState" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the value of Enable Scavenging flag to be set for all Active Directory-integrated zones created on this server. The default value 0 corresponds to the Disabled scavenging of a zone.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DefaultNoRefreshInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the value of No-Refresh Interval to be set for all Active Directory-integrated zones created on this server. The default value of this property is 168 hours (7 days).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Hours</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DefaultRefreshInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the value of Refresh Interval to be set for all Active Directory-integrated zones created on this server. The default value of this property is 168 hours (7 days).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Hours</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DisableAutoReverseZones" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This property indicates whether the DNS server automatically creates standard reverse lookup zones.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DisjointNets" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether override is allowed of the default binding for a socket used to send queries to remote DNS servers.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DsAvailable" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether there is an available DS on the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DsPollingInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the interval (in seconds) to poll for changes in DS-integrated zones.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="DsTombstoneInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The lifetime (in seconds) of tombstoned records in DS-integrated zones.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EDnsCacheTimeout" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the lifetime in seconds of the cached information describing the EDNS version supported by other DNS servers.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EnableDirectoryPartitions" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This value is TRUE if support for application directory partitions is enabled on this server.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EnableDnsSec" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies whether the DNS server includes the DNSSEC specific RRs, KEY,SIG and NXT, in the response. If this value is 0, then no DNSSEC records are included in response, unless the query was requesting an RRset of the DNSSEC record type. If this value is 1, then DNSSEC records are included in response according to the RFC 2535. If this value is 2, then DNSSEC records are included in response only if the original client query contained the OPT RR according to the RFC 2671. If a query was requesting an RRset of the DNSSEC record type the DNS server will always respond with such records if they are available.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EnableEDnsProbes" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Specifies the behavior of the DNS server with regard to the EDNS specified in the RFC 2671. If this value is FALSE, then the DNS server responds to the queries with response containing OPTs if OPTs are send in the original query, but doesn&apos;t include unsolicited OPTs in queries to other servers.If this value is TRUE then the server always OPT RRs according to RFC 2671 unless the remote server hasindicated that it does not support EDNS in a prior exchange.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="EventLogLevel" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates which events the DNS server records in the Event Viewer system log.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Valuemap" TYPE="string"><VALUE.ARRAY><VALUE>0</VALUE><VALUE>1</VALUE><VALUE>2</VALUE><VALUE>4</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>None</VALUE><VALUE>Log only errors</VALUE><VALUE>Log only warnings and errors</VALUE><VALUE>Log all events</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="ForwardDelegations" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This property indicates whether queries to delegated sub-zones are forwarded.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY.ARRAY NAME="Forwarders" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE> This array of IP addresses are the servers to which this DNS server forwards queries that cannot be resolved with local data.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY.ARRAY><PROPERTY NAME="ForwardingTimeout" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates how long (in seconds) a DNS server, forwarding a query to a remote server listed in &quot;Forwarders&quot; will wait for a reply.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="IsSlave" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>A slave server will not attempt recursion if forwarding fails.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY.ARRAY NAME="ListenAddresses" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This array of strings enumerates the list of IP addresses on which the DNS server is allowed to receive queries.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY.ARRAY><PROPERTY NAME="LocalNetPriority" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server gives priority to the local net address returning A records.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="LogFileMaxSize" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The size in bytes of the DNS server&apos;s debug log.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="LogFilePath" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>The file name for the DNS server&apos;s debug log. By the file is system32\dns\dns.log. You may change this value. A relative path path is relative to SystemRoot\System32. You may also use absolute paths, but UNC paths are not supported.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY.ARRAY NAME="LogIPFilterList" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>List of IP addresses used to filter DNS events written to DNS server&apos;s debug log.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY.ARRAY><PROPERTY NAME="LogLevel" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This property controls what packets and events are written to the DNS server&apos;s debug log. This property should be set to specific values based on the following algorithm: Each policy is assigned a specific value: Query - 1, Notify - 16, Update - 32, Non-query transactions - 254, Questions - 256, Answers - 512, Send - 4096, Receive - 8192, UDP - 16384, TCP - 32768, All packets - 65535, Directory Service write transaction - 65536, Directory Service update transaction - 131072, Full Packets - 16777216, and Write Through - 2147483648. The sum of the values corresponding to all the policies to be activated is indicated in this property.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Valuemap" TYPE="string"><VALUE.ARRAY><VALUE>1</VALUE><VALUE>16</VALUE><VALUE>32</VALUE><VALUE>254</VALUE><VALUE>256</VALUE><VALUE>512</VALUE><VALUE>4096</VALUE><VALUE>8192</VALUE><VALUE>16384</VALUE><VALUE>32768</VALUE><VALUE>65535</VALUE><VALUE>65536</VALUE><VALUE>131072</VALUE><VALUE>16777216</VALUE><VALUE>2147483648</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>Query</VALUE><VALUE>Notify</VALUE><VALUE>Update</VALUE><VALUE>Non-query transactions</VALUE><VALUE>Questions</VALUE><VALUE>Answers</VALUE><VALUE>Send</VALUE><VALUE>Receive</VALUE><VALUE>UDP</VALUE><VALUE>TCP</VALUE><VALUE>All packets</VALUE><VALUE>NT Directory Service write transaction</VALUE><VALUE>NT Directory Service update transaction</VALUE><VALUE>Full Packets</VALUE><VALUE>Write Through</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="LooseWildcarding" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server does wildcarding loosely. If the LooseWildcarding property is undefined or zero, the server will follow the wildcarding behavior specified in the DNS RFC. In this case, an admin is advised to include MX records for all hosts that are not capable of receiving mail. If the LooseWildcarding property is non-zero, the server seeks out the closest wildcard node. In this case, an admin should put MX records at both the zone root and in a wildcard node (&apos;*&apos;) directly below the zone root. Also, the admin should put self-referent MX records on hosts, which are to receive their own mail.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="MaxCacheTTL" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates a maximum time (in seconds) a record from a recursive name query may remain in the DNS server cache. The DNS server deletes records from the cache when the value of this entry expires, even if the value of the TTL field in the record is greater. The default value of this property is 86,400 seconds (1 day).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="MaxNegativeCacheTTL" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates a maximum time (in seconds) a name error result from a recursive name query may remain in the DNS server cache. The DNS server deletes records from the cache when the value of this entry expires, even if the value of the TTL field in the record is greater. The default value of this property is 86,400 seconds (1 day).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="NameCheckFlag" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the set of eligible characters to be used in DNS names.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Valuemap" TYPE="string"><VALUE.ARRAY><VALUE>0</VALUE><VALUE>1</VALUE><VALUE>2</VALUE><VALUE>3</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="Values" TYPE="string"><VALUE.ARRAY><VALUE>Strict RFC (ANSI)</VALUE><VALUE>Non RFC (ANSI)</VALUE><VALUE>Multibyte (UTF8)</VALUE><VALUE>Any</VALUE></VALUE.ARRAY></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="NoRecursion" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server does NOT do recursive lookups. If set to TRUE, recursive lookups are not done.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="RecursionRetry" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the interval (in seconds) before retrying a recursive lookup. If the RecursionRetry property is undefined or zero, retries are made after three seconds. Users are discouraged from altering this property. However, there are some scenarios where the property should be changed. One example is when the DNS server contacts remote servers over a slow link, and the DNS server is retrying BEFORE reception of a response from the remote DNS. In this case, raising the RecursionRetry timeout to be slightly longer than the observed response time from the remote DNS would be reasonable.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="RecursionTimeout" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the timeout (in seconds) before the DNS server gives up recursive query. If the RecursionTimeout property is undefined or zero, the DNS server gives up after fifteen seconds. In general, the fifteen-second timeout is sufficient to allow any outstanding response to get back to the DNS server. Users are discouraged from altering this property. One scenario where the property should be changed is when the DNS server contacts remote servers over a slow link, and the DNS server is observed rejecting queries (with SERVER_FAILURE) before responses are received. (Note, that client resolvers also retry queries, so careful investigation is required to determine that remote responses are really for the query that was timed out.) In this case, raising the RecursionTimeout to be slightly longer than the observed response time from the remote DNS would be reasonable.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Seconds</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="RoundRobin" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server round robins multiple A records.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="RpcProtocol" TYPE="sint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the protocols over which administrative RPC runs. This property should be set to specific value based on the following algorithm: Every protocol to be used in RPC is assigned a specific value: None: 0, TCP/IP: 1, Named Pipes: 2, LPC: 4. The sum of the values corresponding to all the protocols to be used in RPC is indicated in this property.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="ScavengingInterval" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the time interval between two consecutive scavenging operations performed by the server. Zero value means that scavenging is not enabled on the server.The default value of this property is 168 hours (7 days).</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="Units" TYPE="string"><VALUE>Hours</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="SecureResponses" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server onlycaches resource records that are in the same subtree as the DNS server that provided them.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="SendPort" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the port on which the DNS server sends UDP queries to other servers. By default, the DNS server sends queries on a socket bound to the DNS port. Sometimes this situation is NOT desirable. The most obvious case occurs when an admin firewalls off the DNS port, to prevent outside access to the DNS server, but still wants the server to be able to contact Internet DNS servers to provide name resolution for internal clients. This is also desirable if the DNS server is supporting disjoint nets (if true, the boolean property, DisjointNets, would be set to TRUE). In these cases, setting the SendPort property to a non-zero value causes the DNS server to bind to an arbitrary port for sending to remote DNS servers.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY.ARRAY NAME="ServerAddresses" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This array of strings enumerates the list of the DNS server&apos;s IP addresses.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY.ARRAY><PROPERTY NAME="StrictFileParsing" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server parses zone files strictly. If the StrictFileParsing property is undefined or zero, the server will log and ignore bad data in the zone file and continue to load. If the StrictFileParsing property is non-zero, the server will log and fail on zone file errors.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="UpdateOptions" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This value restricts the type of records that can be dynamically updated on the server. This parameter is a further restriction on dynamic updates applied after the AllowUpdate setting on Server and Zone objects. Use these values: &quot;No restrictions&quot; = 0, &quot;Do not allow dynamic updates of SOA records&quot; = 1, &quot;Do not allow dynamic updates of NS records at the zone root&quot; = 2, &quot;Do not allow dynamic updates of NS records not at the zone root (delegation NS records)&quot; = 4. Sum these values to determine the setting value. </VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="Version" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Indicates the version of the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="WriteAuthorityNS" TYPE="boolean"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This Boolean indicates whether the DNS server writes NS and SOA records to the authority section on successful response.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><PROPERTY NAME="XfrConnectTimeout" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>Timeout in seconds the DNS server will wait for a successful TCP connection to a remote server when attempting a zone transfer.</VALUE></QUALIFIER><QUALIFIER NAME="read" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER><QUALIFIER NAME="write" TYPE="boolean"><VALUE>true</VALUE></QUALIFIER></PROPERTY><METHOD NAME="StartService" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This method starts the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="Implemented" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER></METHOD><METHOD NAME="StopService" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This method stops the DNS server.</VALUE></QUALIFIER><QUALIFIER NAME="Implemented" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER></METHOD><METHOD NAME="StartScavenging" TYPE="uint32"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This method starts the scavenging of stale records in the zones subjected to scavenging.</VALUE></QUALIFIER><QUALIFIER NAME="Implemented" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER></METHOD><METHOD NAME="GetDistinguishedName" TYPE="string"><QUALIFIER NAME="Description" TYPE="string"><VALUE>This method get DS distinguished Name for the zone.</VALUE></QUALIFIER><QUALIFIER NAME="Implemented" TYPE="boolean" TOSUBCLASS="false"><VALUE>true</VALUE></QUALIFIER></METHOD></CLASS> + + + + + + + diff --git a/README.md b/README.md index 305c5e34..65409b9c 100644 --- a/README.md +++ b/README.md @@ -165,6 +165,8 @@ Please check out common DSC Resources [contributing guidelines](https://github.c ### Unreleased +### 1.12.0.0 + * Update appveyor.yml to use the default template. * Added default template files .codecov.yml, .gitattributes, and .gitignore, and .vscode folder. * Added UseRootHint property to xDnsServerForwarder resource. diff --git a/xDnsServer.psd1 b/xDnsServer.psd1 index b81cf808..4b21d96b 100644 --- a/xDnsServer.psd1 +++ b/xDnsServer.psd1 @@ -1,6 +1,6 @@ @{ # Version number of this module. -moduleVersion = '1.11.0.0' +moduleVersion = '1.12.0.0' # ID used to uniquely identify this module GUID = '5f70e6a1-f1b2-4ba0-8276-8967d43a7ec2' @@ -47,20 +47,9 @@ PrivateData = @{ # IconUri = '' # ReleaseNotes of this module - ReleaseNotes = '* Changes to xDnsServer - * Updated appveyor.yml to use the default template and add CodeCov support - ([issue 73](https://github.com/PowerShell/xActiveDirectory/issues/73)). - * Adding a Branches section to the README.md with Codecov badges for both - master and dev branch ([issue 73](https://github.com/PowerShell/xActiveDirectory/issues/73)). - * Updated description of resource module in README.md. -* Added resource xDnsServerZoneAging. [Claudio Spizzi (@claudiospizzi)](https://github.com/claudiospizzi) -* Changes to xDnsServerPrimaryZone - * Fix bug in Get-TargetResource that caused the Zone Name to be null - ([issue 63](https://github.com/PowerShell/xDnsServer/issues/63)). - [Brandon Padgett (@gerane)](https://github.com/gerane) -* Changes to xDnsRecord - * Added Ptr record support (partly resolves issue 34). - [Reggie Gibson (@regedit32)](https://github.com/regedit32) + ReleaseNotes = '* Update appveyor.yml to use the default template. +* Added default template files .codecov.yml, .gitattributes, and .gitignore, and .vscode folder. +* Added UseRootHint property to xDnsServerForwarder resource. ' @@ -75,3 +64,4 @@ PrivateData = @{ +