2012-11-16 28 views
1

提示符窗口下面不工作檢查。我理解我的寫作方式並不是最高效的,但我很難學習PowerShell。誤差在PowerShell中

我試圖用這個腳本做的是:

首先,找到本地計算機上的IP地址(我沒有將這裏的腳本的那一點,但它是由「169.254代表在2.2" 的$ ip地址變量)

其次,如果該IP地址是有效的(即不169.254)繼續與腳本(由‘寫主機’表示)。如果無效提示用戶,他們可以採取行動,然後當他們點擊確定時,再次找到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'} 
     } 

} 

的任何指導,歡迎和感謝

+0

這個腳本不會做任何事情,因爲您只定義了函數並且不會調用它們,這是您的完整腳本還是問題所在? –

+0

這不是完整的腳本,但這是唯一相關的部分。我以爲我通過使用{IPDialog}來調用IPConfig函數並且像IPAddesscheck函數一樣調用函數。那我怎麼打電話給他們呢? – idarryl

+0

除非我真的錯過了這個觀點,否則我很抱歉。但是,你需要做的就是通過在腳本的末尾添加IPDialog來添加對IPDialog的調用。此外,IPDialog調用IPAddressCheck,它會調用IPDialog,以免弄髒... –

回答

0

我得到了它坐在回後工作並思考一段時間。

Here'e工作代碼,以及我認爲它的工作原理,我只偏袒了測試。如果有人希望分享他們對如何改進或改善它的看法,我很樂意聽到它,但我很樂意讓它工作。

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