2012-03-21 157 views
1

我剛剛開始使用Windows Powershell,我嘗試創建一個解析網頁的函數。我已經測試了該功能中的單個呼叫,並且他們似乎正在正常工作。這是我創建的功能。使用參數調用powershell函數

function GoTo-Website ([string]website = "google.com") 
{ 
    $ie.navigate($website); 

    $image = @($ie.Document.getElementByName("main_image"))[0].href; 

    $title = @($ie.Document.getElementByTagName("h1"))[3].innerHTML; 

    $date = @($ie.Document.getElementByTagName("h3"))[0].innerHTML; 
} 

這存儲在當前powershell目錄的powershellScript.ps1中。

當我把這個功能,我可以得到最好的錯誤是

功能後藤網站「網站」

缺少函數體的函數聲明。在行:1字符:23 +功能後藤網站< < < < 「網站」 + CategoryInfo:ParserError:(:) [],+ FullyQualifiedErrorId:MissingFunctionBody

反正是有修改我的代碼來獲得通過這個解析器錯誤?

我也想知道如果他們是一種在調用之前不調用「函數」的方式來調用函數嗎?

回答

3

試試你的代碼

function GoTo-Website 
{ 
    Param ($website) 
    $ie.navigate($website); 
    $image = @($ie.Document.getElementByName("main_image"))[0].href; 
    $title = @($ie.Document.getElementByTagName("h1"))[3].innerHTML; 
    $date = @($ie.Document.getElementByTagName("h3"))[0].innerHTML; 
} 

的這個修改後的版本,你可以用

GoTo-Website "http://www.google.com" 

GoTo-Website -website "http://www.google.com/" 

無需調用把 「功能」 的稱呼了。

有關功能的更多信息,請參閱腳本專家博客上的today's post

+0

是的。在改變了參數的調用方式之後,**意識到我必須將我的代碼複製並粘貼到powershell **中,並且使我的變量成爲全局變量來公開結果,它工作正常。 – user1207381 2012-03-21 03:25:36

0

在關於如何添加參數[和實現我必須將我的函數複製並粘貼到powershell]的建議後,我能夠調用我的函數。下面是函數

function GoTo-Website 

{ Param ($website) 

    $global:ie.navigate($website); 

    $global:image = @($ie.Document.getElementById("comic_image"))[0].href; 

    $global:title = @($ie.Document.getElementsByTagName("h1"))[3].innerHTML 

    $global:date = @($ie.Document.getElementsByTagName("h3"))[0].innerHTML; 

} 

我也不得不改變我的參數,全球暴露的結果,並訪問被激活的Internet Explorer中變量的修改版本。