Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <#
- .NOTES
- ===========================================================================
- Created with: Windows PowerShell ISE
- Created on: 7/7/2015 10:34 PM
- Created by: David Septimus
- ===========================================================================
- .DESCRIPTION
- Functions for validating subnet and wildcard masks.
- Both functions return a boolean value if the input string is valid or nothing if the string is invalid.
- #>
- function Validate-SubnetMask
- {
- param (
- [cmdletbinding()]
- [string]$Mask
- )
- $stringMask = $i = $validAddress = $null
- if ([System.Net.IPAddress]::TryParse($Mask, [ref]$validAddress))
- {
- $validAddress = $validAddress.GetAddressBytes()
- $validAddress |
- %{
- $i++
- [string]$stringMask += [convert]::ToString([int32]$_, 2).PadLeft(8,'0')
- }
- for ($i = 0; $i -lt $stringMask.Length ; $i++)
- {
- if ($stringMask[$i] -ne $null)
- {
- if ($i -eq 0 -and [int32]::Parse($stringMask[$i]) -eq 0)
- {
- break
- }
- elseif ($i -gt 0 -and (([int32]::Parse($stringMask[$i - 1]) -eq 0) -and ([int32]::Parse($stringMask[$i]) -eq 1)))
- {
- Write-Output $false
- break
- }
- }
- if ($i -eq $stringMask.Length-1)
- {
- Write-Output $true
- break
- }
- }
- }
- }
- function Validate-WildcardMask
- {
- param (
- [cmdletbinding()]
- [string]$Mask
- )
- $validAddress = $null
- if ([System.Net.IPAddress]::TryParse($Mask, [ref]$validAddress))
- {
- #reverse the input string
- $validAddress = ($validAddress.IPAddressToString).Split("`.")
- [array]::Reverse($validAddress)
- $reversedMask = $validAddress -join '.'
- $validAddress = [System.Net.IPAddress]::Parse([string]$reversedMask)
- #validate the reversed mask
- $stringMask = $i = $null
- $validAddress = $validAddress.GetAddressBytes()
- $validAddress |
- %{
- $i++
- [string]$stringMask += [convert]::ToString([int32]$_, 2).PadLeft(8,'0')
- }
- for ($i = 0; $i -lt $stringMask.Length ; $i++)
- {
- if ($stringMask[$i] -ne $null)
- {
- if ($i -eq 0 -and [int32]::Parse($stringMask[$i]) -eq 0)
- {
- break
- }
- elseif ($i -gt 0 -and (([int32]::Parse($stringMask[$i - 1]) -eq 0) -and ([int32]::Parse($stringMask[$i]) -eq 1)))
- {
- Write-Output $false
- break
- }
- }
- if ($i -eq $stringMask.Length-1)
- {
- Write-Output $true
- break
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement