вызовите функцию powershell с параметрами - PullRequest
1 голос
/ 21 марта 2012

Я только начинаю работать с 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;
}

Она хранится в powershellScript.ps1 в текущем каталоге powershell.

Лучшая ошибка, которую я могу получить при вызове этой функции -

функция goto-website "Website"

Отсутствует тело функции в объявлении функции.В строке: 1 символ: 23 + функция goto-website <<<< "website" + CategoryInfo: ParserError: (:) [], + FullyQualifiedErrorId: MissingFunctionBody </p>

Есть ли способ изменить мой код для получения пропускаэта ошибка синтаксического анализатора?

Мне также было интересно, есть ли способ вызвать функцию, не помещая "функцию" перед вызовом?

Ответы [ 2 ]

3 голосов
/ 21 марта 2012

Попробуйте эту модифицированную версию вашего кода

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/"

Не нужно ставить «функцию» перед вызовом.

См. сегодняшнюю запись в блоге сценаристов, чтобы получить немного больше информации о функциях.

0 голосов
/ 21 марта 2012

После следования советам о том, как добавить параметры [и понимая, что я должен скопировать и вставить свою функцию в 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, которая активирована.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...