2012-03-21 155 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中变量的修改版本。