Private/Test-DMNetworkAddress.ps1
|
function Test-DMNetworkAddress { [CmdletBinding()] [OutputType([bool])] param( [Parameter(Mandatory = $true)] [AllowEmptyString()] [string]$Address ) if ([string]::IsNullOrWhiteSpace($Address)) { return $false } $parsedAddress = $null if ([System.Net.IPAddress]::TryParse($Address, [ref]$parsedAddress)) { return $true } if ($Address.Length -gt 253 -or $Address -match '\s' -or $Address -notmatch '\.') { return $false } $labels = $Address.TrimEnd('.').Split('.') foreach ($label in $labels) { if ($label.Length -lt 1 -or $label.Length -gt 63) { return $false } if ($label -notmatch '^[A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])?$') { return $false } } return $true } function Assert-DMNetworkAddress { [CmdletBinding()] param( [Parameter(Mandatory = $true)] [string]$Address, [string]$ParameterName = 'Address' ) if (-not (Test-DMNetworkAddress -Address $Address)) { throw "$ParameterName '$Address' must be an IPv4 address, IPv6 address, or fully qualified domain name." } } |