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

时间:2018-03-18 04:07:12

标签: powershell

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

  1. 对于IP地址,我似乎无法使用[ipaddress]选项,这似乎是最好的选择。对于网络地址,我该如何使其工作?我通过使用read-host选项阅读了另一篇文章,但我不确定如何将其与此相关联。

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

    $fwA = read-host "Enter hostA"
    
    $fwB= read-Host "Enter hostB"
    
  3. 我想验证这是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
    

1 个答案:

答案 0 :(得分:0)

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

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

例如,如果主机的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