1

以下不起作用。我知道我的写作方式不是最有效的,但我学习 PowerShell 是很困难的。

我试图用这个脚本做的是:

首先,在本地计算机上找到 IP 地址(我没有在此处包含该脚本,但它由 $IPAddress 变量中的“169.254.2.2”表示)

其次,如果 IP 地址有效(即不是 169.254)继续执行脚本(由“Write-Host”表示)。如果它无效,则提示用户以便他们采取行动,然后当他们单击确定时,再次找到 IP 地址并因此循环直到 IP 地址有效。

该脚本一直有效,直到我将 IPAdressCheck 函数放在脚本的该部分周围,然后它什么也不做

function IPDialog {

$IPDia= [System.Windows.Forms.MessageBox]::show( "This computer doesn't have a vaild IP Address. 
Please resolve and click OK." , "No Network Connection" , 1 ) 
if ($IPDia -eq "OK" ){IPAddressCheck} 
else
{
exit
}
  }


 function IPAddressCheck{
$IPAddress = "169.254.2.2"
switch ($IPAddress){
    {($_ -like "0.*") -or ($_ -like "169.254.*")} {IPDialog}
    default {write-host 'Continue Script'}
      }

}   

欢迎和感激任何指导

4

1 回答 1

0

我坐下来思考了一会儿后才开始工作。

这是工作代码,我认为它有效,我只对它进行了部分测试。如果有人希望分享他们对如何改进或改进它的意见,我很乐意听到它,但我很高兴让它发挥作用。

function Check-IP
{
$IPSiteAddress = Get-IPAddress
if ($IPSiteAddress -like "0.*" -or $IPSiteAddress -like "169.254.*") {DialogBox-IP}
}

function Get-IPAddress
{
(Get-WmiObject Win32_NetworkAdapterConfiguration |
Where { $_.IPAddress } |
Select -Expand IPAddress).split('.')[0..2] -join '.'
}

function DialogBox-IP
{
$IPDialog = [System.Windows.Forms.MessageBox]::show( "This computer doesn't have a valid IP Address. 
Please correct the IP Address and click OK, or click Cancel to exit.","No Network Connection",1) 
if ($IPDialog -eq "OK") {Check-IP} else {exit}
}

Check-IP
$IPSiteAddress = Get-IPAddress
于 2012-11-19T14:26:44.287 回答