DSCResources/DSC_IPAddressOption/DSC_IPAddressOption.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 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): " $($script: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): " $($script: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 $desiredConfigurationMatch = $true Write-Verbose -Message ( @("$($MyInvocation.MyCommand): " $($script:localizedData.CheckingIPAddressOptionMessage -f $IPAddress) ) -join '') $currentConfig = Get-TargetResource @PSBoundParameters $desiredConfigurationMatch = $desiredConfigurationMatch -and $currentConfig.SkipAsSource -eq $SkipAsSource return $desiredConfigurationMatch } Export-ModuleMember -function *-TargetResource |