我刚刚开始使用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
是否有修改我的代码以传递此解析器错误?
我也想知道他们是否可以在通话前调用函数而不放“函数”?
答案 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变量。