html - kald powerhell funktion med parametre

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg er lige begyndt med Windows Powershell, og jeg forsøger at oprette en funktion, der analyserer en webside. Jeg har testet de enkelte opkald i funktionen, og de synes at fungere korrekt. Her er den funktion jeg har oprettet.


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;
}


Dette er gemt i powershellScript.ps1 i den nuværende powerhell-mappe.


Den bedste fejl, jeg kan få, når jeg kalder denne funktion er


funktion goto-website 'Website'


Manglende funktionskrop i funktionsdeklaration. På linje: 1 char: 23 + funktion goto-website < < < < 'website' + CategoryInfo: ParserError: (:) [[]], + FullyQualifiedErrorId: MissingFunctionBody


Er der alligevel at ændre min kode for at få bestået denne parserfejl?


Jeg spekulerede også på, om deres er en måde at ringe til en funktion uden at sætte 'funktion' før opkaldet?

Bedste reference


Prøv denne ændrede version af din kode


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;
}


som du kan ringe til


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


eller


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


Intet behov for at sætte 'funktion' før opkaldet.


Se dagens post på Scripting Guy Blog for lidt mere information om funktioner. [6]

Andre referencer 1


Efter at have fulgt råd om, hvordan man tilføjer parametre [[og indser, jeg skal kopiere og indsætte min funktion i powershell]] kunne jeg ringe til min funktion. Her er den ændrede version af funktionen


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;

}


Jeg var også nødt til at ændre mine parametre til globale for at afsløre resultaterne og få adgang til en internet explorer-variabel, der er aktiveret.