dsccommunity / dsccommunity/NetworkingDsc
DnsServerAddress: Fails when trying to rename network adapter when running Test
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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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