从读取主机输入验证 IP 和网络地址



我正在编写一个脚本,用户在其中输入网络地址和 IP 地址,以便创建静态路由CLI模板。

  1. 对于IP地址,我似乎无法获得[ipaddress]选项来工作,这似乎是最好的选项。对于网络地址,我怎样才能做到这一点? 我已经通读了另一篇使用读取主机选项的文章,但我不确定如何将其与此联系起来。

  2. 对于网络地址,我唯一的选择是正则表达式,因为我看到的那些选项似乎有缺陷。

    $fwA = read-host "Enter hostA"
    $fwB= read-Host "Enter hostB"
    

我想验证这是 IP 地址(不需要/32(还是有效的网络地址。

$Net1 = read-host "Enter Network x.x.x.x/x" 

我想验证这是一个 IP 地址

$GW1= read-host "Enter Next Hop x.x.x.x"
$route1 += @("$fwA","$fwB","$Net1","$GW1")
write-host ""
Write-Host "Route 1 : "$route1[0] "/" $route1[1] "=" $route1[2] $route1[3]
Write-Host "set static route" $route1[2] $route1[3] "on" -ForegroundColor Yellow

对于 IP 地址,我使用完全不同的方法:

通过将工作站/服务器名称作为参数传递给输入类型 System.Net.DNS 强制转换

例如,如果主机的 FQDN 名称为 ABCTest-DEV,则以下脚本将显示提供的 ABCTest-Dev 的 IP 地址,即主机在域中已有可用的 DNS 记录。

$ipaddr = [System.Net.Dns]::GetHostAddresses('ABCTest-Dev')|Where AddressFamily -EQ 'InterNetwork'
Write-Host 'This IPV4 Address of the Host is: '$ipaddr

最新更新