dsccommunity / dsccommunity/NetworkingDsc

DnsServerAddress: Fails when trying to rename network adapter when running Test

Open
#520 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
PowerShell
Stars
235
Forks
93
PR merge metrics
No merged PRs in 30d

Description

Problem description

Imagine a scenario where a user wants to perform both these steps in the same configuration:

  • Rename a network adapter
  • Assign a DNS server address to the same adapter

If a configuration like this is put through a Test-TargetResource phase before being applied (see example), it will fail with 'System.InvalidOperationException: A network adapter with the alias '' could not be found.'

Verbose logs
VERBOSE: [Test-VM]: LCM:  [ Start  Resource ]  [[DnsServerAddress]Ethernet0-IPv6::[DomainController]Test-VM]
VERBOSE: [Test-VM]: LCM:  [ Start  Test     ]  [[DnsServerAddress]Ethernet0-IPv6::[DomainController]Test-VM]
VERBOSE: [Test-VM]:                            [[DnsServerAddress]Ethernet0-IPv6::[DomainController]Test-VM]
Test-TargetResource: Checking the DNS server addresses.
VERBOSE: [Test-VM]:                            [[DnsServerAddress]Ethernet0-IPv6::[DomainController]Test-VM]
Get-DnsClientServerStaticAddress: Getting staticly assigned DNS server IPv6 address for interface alias 'Ethernet0'.
VERBOSE: [Test-VM]: LCM:  [ End    Test     ]  [[DnsServerAddress]Ethernet0-IPv6::[DomainController]Test-VM] False in
0.1090 seconds.
VERBOSE: [Test-VM]: LCM:  [ *FAILED*Compare  ]     Completed processing compare operation. The operation returned
False.
PowerShell DSC resource DSC_DnsServerAddress  failed to execute Test-TargetResource functionality with error message:
System.InvalidOperationException: A network adapter with the alias 'Ethernet0' could not be found.
    + CategoryInfo          : InvalidOperation: (root/Microsoft/...gurationManager:String) [], CimException
    + FullyQualifiedErrorId : ProviderOperationExecutionFailure
    + PSComputerName        : Test-VM
DSC configuration
NetAdapterName "Ethernet0"
{
    NewName = "Ethernet0"
    InterfaceNumber = 1
}
DnsServerAddress "Ethernet0-IPv6"
{
    InterfaceAlias = "Ethernet0"
    AddressFamily = "IPv6"
    DependsOn = "[NetAdapterName]Ethernet0"
}
Suggested solution

The DnsServerAddress resource should not return a terminating error when the network interface specified in InterfaceAlias is invalid - instead, it should just return that the resource is not in the desired state. There is no need to tank the entire Test-TargetResource process.

Operating system the target node is running
OsName               : Microsoft Windows Server 2022 Datacenter Azure Edition
OsOperatingSystemSKU : 407
OsArchitecture       : 64-bit
WindowsVersion       : 2009
WindowsBuildLabEx    : 20348.1.amd64fre.fe_release.210507-1500
OsLanguage           : en-US
OsMuiLanguages       : {en-US}
PowerShell version and build the target node is running
Name                           Value
----                           -----
PSVersion                      5.1.20348.558
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.20348.558
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
NetworkingDsc version
Name          Version Path
----          ------- ----
NetworkingDsc 9.0.0   C:\Program Files\WindowsPowerShell\Modules\NetworkingDsc\9.0.0\NetworkingDsc.psd1

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the DnsServerAddress resource's Test-TargetResource path and reproduce the NetAdapterName/DnsServerAddress configuration on the stated Windows environment. Verify that an invalid or temporarily unavailable InterfaceAlias reports the resource as not in the desired state without terminating the Test-TargetResource process.

Written by the indexing model from the issue text.

Assessment

Tech stack
powershell
Domain
networking
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.