使用参数调用powershell函数

时间:2012-03-21 01:48:57

标签: html windows powershell parameters web

我刚刚开始使用Windows 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中。

我调用此函数时可以得到的最佳错误是

功能goto-website“网站”

函数声明中缺少函数体。在行:1 char:23 + function goto-website<<<< “website”+ CategoryInfo:ParserError:(:) [],+ FullyQualifiedErrorId:MissingFunctionBody

是否有修改我的代码以传递此解析器错误?

我也想知道他们是否可以在通话前调用函数而不放“函数”?

2 个答案:

答案 0 :(得分: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/"

无需在通话前输入“功能”。

有关功能的更多信息,请参阅Scripting Guy博客上的today's post

答案 1 :(得分: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;

}

我还必须将参数更改为global以显示结果并访问已激活的Internet Explorer变量。