DSCResources/MSFT_xIPAddressOption/MSFT_xIPAddressOption.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 the Networking Resource Helper Module Import-Module -Name (Join-Path -Path $modulePath ` -ChildPath (Join-Path -Path 'NetworkingDsc.ResourceHelper' ` -ChildPath 'NetworkingDsc.ResourceHelper.psm1')) # Import Localization Strings $localizedDataSplat = @{ ResourceName = 'MSFT_xIPAddressOption' ResourcePath = (Split-Path -Parent $Script:MyInvocation.MyCommand.Path) } $localizedData = Get-LocalizedData @localizedDataSplat <# .SYNOPSIS Returns the current state of an IP address option. .PARAMETER IPAddress The desired IP address. .PARAMETER SkipAsSource The skip as source option. #> function Get-TargetResource { [CmdletBinding()] [OutputType([System.Collections.Hashtable])] param ( [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [System.String] $IPAddress, [Parameter()] [System.Boolean] $SkipAsSource = $false ) Write-Verbose -Message ( @( "$($MyInvocation.MyCommand): " $($LocalizedData.GettingIPAddressOptionMessage -f $IPAddress) ) -join '') $currentIPAddress = Get-NetIPAddress -IPAddress $IPAddress $returnValue = @{ IPAddress = $IPAddress SkipAsSource = $currentIPAddress.SkipAsSource } return $returnValue } <# .SYNOPSIS Set the IP address options. .PARAMETER IPAddress The desired IP address. .PARAMETER SkipAsSource The skip as source option. #> function Set-TargetResource { [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [System.String] $IPAddress, [Parameter()] [System.Boolean] $SkipAsSource = $false ) Write-Verbose -Message ( @( "$($MyInvocation.MyCommand): " $($LocalizedData.ApplyingIPAddressOptionMessage -f $IPAddress) ) -join '') $currentConfig = Get-TargetResource @PSBoundParameters if ($currentConfig.SkipAsSource -ne $SkipAsSource) { Set-NetIPAddress -IPAddress $IPAddress -SkipAsSource $SkipAsSource } } <# .SYNOPSIS Tests the IP address options. .PARAMETER IPAddress The desired IP address. .PARAMETER SkipAsSource The skip as source option. #> function Test-TargetResource { [CmdletBinding()] [OutputType([System.Boolean])] param ( [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [System.String] $IPAddress, [Parameter()] [System.Boolean] $SkipAsSource = $false ) # Flag to signal whether settings are correct [System.Boolean] $desiredConfigurationMatch = $true Write-Verbose -Message ( @("$($MyInvocation.MyCommand): " $($LocalizedData.CheckingIPAddressOptionMessage -f $IPAddress) ) -join '') $currentConfig = Get-TargetResource @PSBoundParameters $desiredConfigurationMatch = $desiredConfigurationMatch -and $currentConfig.SkipAsSource -eq $SkipAsSource return $desiredConfigurationMatch } Export-ModuleMember -function *-TargetResource |