param(
[Parameter(Mandatory=$true)][net.ipaddress]$ipaddress1,
[Parameter(Mandatory=$true)][net.ipaddress]$ipaddress2,
[Parameter(Mandatory=$true)][net.ipaddress]$subnetmask
)
function Get-IPNetwork {
param(
[net.ipaddress]$ipaddress1,
[net.ipaddress]$ipaddress2,
[net.ipaddress]$subnetmask
)
$netid1 = [ipaddress](($ipaddress1).address -band ($subnetmask).address)
$netid2 = [ipaddress](($ipaddress2).address -band ($subnetmask).address)
return $netid1.IPAddressToString, $netid2.IPAddressToString
}
function Test-IPNetwork {
param (
[net.ipaddress]$ipaddress1,
[net.ipaddress]$ipaddress2,
[net.ipaddress]$subnetmask
)
if (([ipaddress](($ipaddress1).address -band ($subnetmask).address)) -eq ([ipaddress](($ipaddress2).address -band ($subnetmask).address))) {
Write-Host -f green "The IPs are on the same subnet"
} else {
Write-Host -f red "The IPs have different Network IDs"
}
}
$ErrorActionPreference = 'Stop'
try{
[array]$subnet = Get-IPNetwork -ipaddress1 $ipaddress1 -ipaddress2 $ipaddress2 -subnetmask $subnetmask
Write-Host -NoNewline "IP1: "; Write-Host -NoNewline -f cyan $ipaddress1; Write-Host -NoNewline " Subnet1: ";Write-Host -f cyan $subnet[0]
Write-Host -NoNewline "IP2: ";Write-Host -NoNewline -f cyan $ipaddress2;Write-Host -NoNewline " Subnet2: ";Write-Host -f cyan $subnet[1]
Test-IPNetwork
} catch {
Write-Host -f red "Please use single space between the input values"
}