1

以下は機能しません。私の書き方が最も効率的ではないことは理解していますが、PowerShell を学ぶのは難しい方法です。

このスクリプトでやろうとしていることは次のとおりです。

まず、ローカル コンピューターの IP アドレスを見つけます (ここにはスクリプトの一部を含めていませんが、$IPAddress 変数の「169.254.2.2」で表されます)。

次に、IP アドレスが有効な場合 (つまり、169.254 でない場合)、スクリプトを続行します (「Write-Host」で表されます)。有効でない場合は、ユーザーにプロンプ​​トを表示してアクションを実行できるようにし、[OK] をクリックすると、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 に答える