NetworkingDsc icon indicating copy to clipboard operation
NetworkingDsc copied to clipboard

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

Open Borgquite opened this issue 3 years ago • 0 comments

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

Borgquite avatar Oct 10 '22 16:10 Borgquite