我正在尝试为较大的脚本创建一个函数,以根据用户输入的站点编号确定站点IP地址的第三个八位字节。我实际上已经提出了该函数,但是希望有人可以帮助我提出更简单,更优雅的东西,而不是我提出的大量嵌套if语句。 规则如下:
这是我想出的。它不是很优雅,但似乎可以工作。请注意,前三行将在脚本中的另一个函数中,但此处用于测试目的。
$global:site = Read-Host 'What is the 4 digit site number?' #must include leading zeros
[int]$global:sitecheck=$site #need for comparasion operators
[string]$global:sitestring=$site
if ($sitecheck -le 255)
{
if ($sitestring.substring(0,3) -eq '000') #(i.e. 0001 - 0009)
{
$global:thirdoct = $sitestring.substring(3,1) #(i.e. 1-9)
}
elseif ($sitestring.substring(0,2) -eq '00') #(i.e. 0010 - 0099)
{
$global:thirdoct = $sitestring.substring(2,2) #(i.e. 10 - 99)
}
elseif ($sitestring.substring(0,1) -eq '0') #(i.e. 0100 - 0255)
{
$global:thirdoct = $sitestring.substring(1,3) #(i.e. 100 - 255)
}
}
elseif ($sitecheck -ge 256 -and $sitecheck -le 399 )
{
if ($sitestring.substring(2,1) -eq '0')
{
$global:thirdoct = $sitestring.substring(3,1)
}
else
{
$global:thirdoct = $sitestring.substring(2,2)
}
}
elseif ($sitecheck -ge 401 -and $sitecheck -le 499)
{
$global:thirdoct = 100+$sitestring.substring(2,2)
}
elseif ($sitecheck -ge 501 -and $sitecheck -le 799)
{
if ($sitestring.substring(2,1) -eq '0')
{
$global:thirdoct = $sitestring.substring(3,1)
}
else
{
$global:thirdoct = $sitestring.substring(2,2)
}
}
elseif ($sitecheck -eq 1202)
{
$global:thirdoct = $sitestring.substring(1,3)
}
elseif ($sitecheck -ge 5000 -and $sitecheck -le 9999)
{
$site5000 = [int]$sitestring.substring(1,3)
if ($site5000 -le 255)
{
if ($sitestring.substring(1,2) -eq '00')
{
$global:thirdoct = $sitestring.substring(3,1)
}
elseif ($sitestring.substring(1,1) -eq '0')
{
$global:thirdoct = $sitestring.substring(2,2)
}
else
{
$global:thirdoct = $sitestring.substring(1,3)
}
}
elseif (($site5000 -ge 256 -and $site5000 -le 399) -or ($site5000 -ge 501 -and $site5000 -le 999))
{
$global:thirdoct = $sitestring.substring(2,2)
}
elseif ($site5000 -ge 401 -and $site5000 -le 499)
{
$global:thirdoct = 100+$sitestring.substring(2,2)
}
}
谢谢