Выполнение моих ошибок сценария powershell, при вводе построчно в терминал работает - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь создать сценарий Power Shell, который поможет с автоматизацией (сбор данных с веб-сайта).

У меня есть несколько строк команд, сохраненных в сценарии (.ps1), в windows PowerShe ISE (я обрезал небольшой раздел ниже)

$ieObject = New-Object -ComObject 'InternetExplorer.Application'
$ieObject.Visible = $true
$ieObject.Navigate('---')
$currentDocument = $ieObject.Document
$currentDocument.IHTMLDocument3_getElementById("serialno")

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

Однако, когда я запускаю настоящий скрипт с использованием ise, я получаю различные ошибки, такие как

You cannot call a method on a null-valued expression.
At C:\Users\--\--\script.ps1:13 char:47
+ $currentDocument.IHTMLDocument3_getElementById <<<< ("serialno")
    + CategoryInfo          : InvalidOperation: (IHTMLDocument3_getElementById:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Я чувствую, что скрипт powershell выполняется иначе, чем мне нужно, любая помощь будет отличной. спасибо

1 Ответ

0 голосов
/ 20 января 2020

Экземпляр еще не получил все данные. Добавьте

do { Start-Sleep -Seconds 1} until ($ieObject.ReadyState -eq 4)

после создания экземпляра $ ieObject, который, кажется, делает свое дело.

Я рекомендую против автоматизации Inte rnet Explorer, это всесторонняя технология прошлого века. Если вам нужно проанализировать документ HTML из скрипта PowerShell, проще всего использовать встроенный Invoke-WebRequest.

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