DSCResources/DSC_NetAdapterName/DSC_NetAdapterName.psm1
$modulePath = Join-Path -Path (Split-Path -Path (Split-Path -Path $PSScriptRoot -Parent) -Parent) -ChildPath 'Modules' # Import the Networking Common Modules Import-Module -Name (Join-Path -Path $modulePath ` -ChildPath (Join-Path -Path 'NetworkingDsc.Common' ` -ChildPath 'NetworkingDsc.Common.psm1')) Import-Module -Name (Join-Path -Path $modulePath -ChildPath 'DscResource.Common') # Import Localization Strings $script:localizedData = Get-LocalizedData -DefaultUICulture 'en-US' <# .SYNOPSIS This function will get the network adapter based on the provided parameters. .PARAMETER NewName Specifies the new name of the network adapter. .PARAMETER Name This is the name of the network adapter to find. .PARAMETER PhysicalMediaType This is the media type of the network adapter to find. .PARAMETER Status This is the status of the network adapter to find. .PARAMETER MacAddress This is the MAC address of the network adapter to find. .PARAMETER InterfaceDescription This is the interface description of the network adapter to find. .PARAMETER InterfaceIndex This is the interface index of the network adapter to find. .PARAMETER InterfaceGuid This is the interface GUID of the network adapter to find. .PARAMETER DriverDescription This is the driver description of the network adapter. .PARAMETER InterfaceNumber This is the interface number of the network adapter if more than one are returned by the parameters. .PARAMETER IgnoreMultipleMatchingAdapters This switch will suppress an error occurring if more than one matching adapter matches the parameters passed. #> function Get-TargetResource { [CmdletBinding()] [OutputType([System.Collections.Hashtable])] param ( [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [System.String] $NewName, [Parameter()] [ValidateNotNullOrEmpty()] [System.String] $Name, [Parameter()] [System.String] $PhysicalMediaType, [Parameter()] [ValidateNotNullOrEmpty()] [ValidateSet('Up', 'Disconnected', 'Disabled')] [System.String] $Status = 'Up', [Parameter()] [System.String] $MacAddress, [Parameter()] [System.String] $InterfaceDescription, [Parameter()] [System.UInt32] $InterfaceIndex, [Parameter()] [System.String] $InterfaceGuid, [Parameter()] [System.String] $DriverDescription, [Parameter()] [System.UInt32] $InterfaceNumber = 1, [Parameter()] [System.Boolean] $IgnoreMultipleMatchingAdapters = $false ) Write-Verbose -Message ( @("$($MyInvocation.MyCommand): " $($script:localizedData.GettingNetAdapterNameMessage -f $NewName) ) -join '') $adapter = Find-NetworkAdapter ` -Name $NewName ` -ErrorAction SilentlyContinue if (-not $adapter) { Write-Verbose -Message ( @( "$($MyInvocation.MyCommand): " $($script:localizedData.FindNetAdapterMessage) ) -join '') $null = $PSBoundParameters.Remove('NewName') $adapter = Find-NetworkAdapter ` @PSBoundParameters ` -ErrorAction Stop } Write-Verbose -Message ( @( "$($MyInvocation.MyCommand): " $($script:localizedData.NetAdapterNameFoundMessage -f $adapter.Name) ) -join '') $returnValue = @{ Name = $adapter.Name PhysicalMediaType = $adapter.PhysicalMediaType Status = $adapter.Status MacAddress = $adapter.MacAddress InterfaceDescription = $adapter.InterfaceDescription InterfaceIndex = $adapter.InterfaceIndex InterfaceGuid = $adapter.InterfaceGuid DriverDescription = $adapter.DriverDescription InterfaceNumber = $InterfaceNumber IgnoreMultipleMatchingAdapters = $IgnoreMultipleMatchingAdapters } return $returnValue } # Get-TargetResource <# .SYNOPSIS This function will rename a network adapter that matches the parameters. .PARAMETER NewName Specifies the new name of the network adapter. .PARAMETER Name This is the name of the network adapter to find. .PARAMETER PhysicalMediaType This is the media type of the network adapter to find. .PARAMETER Status This is the status of the network adapter to find. .PARAMETER MacAddress This is the MAC address of the network adapter to find. .PARAMETER InterfaceDescription This is the interface description of the network adapter to find. .PARAMETER InterfaceIndex This is the interface index of the network adapter to find. .PARAMETER InterfaceGuid This is the interface GUID of the network adapter to find. .PARAMETER DriverDescription This is the driver description of the network adapter. .PARAMETER InterfaceNumber This is the interface number of the network adapter if more than one are returned by the parameters. .PARAMETER IgnoreMultipleMatchingAdapters This switch will suppress an error occurring if more than one matching adapter matches the parameters passed. #> function Set-TargetResource { [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [System.String] $NewName, [Parameter()] [ValidateNotNullOrEmpty()] [System.String] $Name, [Parameter()] [System.String] $PhysicalMediaType, [Parameter()] [ValidateNotNullOrEmpty()] [ValidateSet('Up', 'Disconnected', 'Disabled')] [System.String] $Status = 'Up', [Parameter()] [System.String] $MacAddress, [Parameter()] [System.String] $InterfaceDescription, [Parameter()] [System.UInt32] $InterfaceIndex, [Parameter()] [System.String] $InterfaceGuid, [Parameter()] [System.String] $DriverDescription, [Parameter()] [System.UInt32] $InterfaceNumber = 1, [Parameter()] [System.Boolean] $IgnoreMultipleMatchingAdapters = $false ) Write-Verbose -Message ( @( "$($MyInvocation.MyCommand): " $($script:localizedData.SettingNetAdapterNameMessage -f $NewName) ) -join '') $null = $PSBoundParameters.Remove('NewName') $adapter = Find-NetworkAdapter ` @PSBoundParameters ` -ErrorAction Stop Write-Verbose -Message ( @( "$($MyInvocation.MyCommand): " $($script:localizedData.RenamingNetAdapterNameMessage -f $adapter.Name, $NewName) ) -join '') $adapter | Rename-NetAdapter ` -NewName $NewName Write-Verbose -Message ( @( "$($MyInvocation.MyCommand): " $($script:localizedData.NetAdapterNameRenamedMessage -f $NewName) ) -join '') } # Set-TargetResource <# .SYNOPSIS This will check if the network adapter that matches the parameters needs to be returned. .PARAMETER NewName Specifies the new name of the network adapter. .PARAMETER Name This is the name of the network adapter to find. .PARAMETER PhysicalMediaType This is the media type of the network adapter to find. .PARAMETER Status This is the status of the network adapter to find. .PARAMETER MacAddress This is the MAC address of the network adapter to find. .PARAMETER InterfaceDescription This is the interface description of the network adapter to find. .PARAMETER InterfaceIndex This is the interface index of the network adapter to find. .PARAMETER InterfaceGuid This is the interface GUID of the network adapter to find. .PARAMETER DriverDescription This is the driver description of the network adapter. .PARAMETER InterfaceNumber This is the interface number of the network adapter if more than one are returned by the parameters. .PARAMETER IgnoreMultipleMatchingAdapters This switch will suppress an error occurring if more than one matching adapter matches the parameters passed. #> function Test-TargetResource { [CmdletBinding()] [OutputType([System.Boolean])] param ( [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [System.String] $NewName, [Parameter()] [ValidateNotNullOrEmpty()] [System.String] $Name, [Parameter()] [System.String] $PhysicalMediaType, [Parameter()] [ValidateNotNullOrEmpty()] [ValidateSet('Up', 'Disconnected', 'Disabled')] [System.String] $Status = 'Up', [Parameter()] [System.String] $MacAddress, [Parameter()] [System.String] $InterfaceDescription, [Parameter()] [System.UInt32] $InterfaceIndex, [Parameter()] [System.String] $InterfaceGuid, [Parameter()] [System.String] $DriverDescription, [Parameter()] [System.UInt32] $InterfaceNumber = 1, [Parameter()] [System.Boolean] $IgnoreMultipleMatchingAdapters = $false ) Write-Verbose -Message ( @("$($MyInvocation.MyCommand): " $($script:localizedData.TestingNetAdapterNameMessage -f $NewName) ) -join '') $null = $PSBoundParameters.Remove('NewName') # Can an adapter be found with the new name? $adapterWithNewName = Find-NetworkAdapter ` -Name $NewName ` -Verbose:$Verbose ` -ErrorAction SilentlyContinue if ($adapterWithNewName) { # An adapter was found matching the new name Write-Verbose -Message ( @("$($MyInvocation.MyCommand): " $($script:localizedData.NetAdapterWithNewNameExistsMessage -f $adapterWithNewName.Name) ) -join '') return $true } else { # Find an adapter matching the parameters - throw if none can be found Write-Verbose -Message ( @( "$($MyInvocation.MyCommand): " $($script:localizedData.FindNetAdapterMessage) ) -join '') $adapter = Find-NetworkAdapter ` @PSBoundParameters ` -ErrorAction Stop # An adapter was found that needs to be changed to the new name Write-Verbose -Message ( @("$($MyInvocation.MyCommand): " $($script:localizedData.NetAdapterNameNotMatchMessage -f $adapter.Name, $NewName) ) -join '') return $false } # if } # Test-TargetResource Export-ModuleMember -function *-TargetResource |