Так как я обновился до Windows 8, многие мои сценарии PowerShell, основанные на запуске невидимого IE, уже не работают, поэтому я попытался переключиться на команду Invoke-WebRequest. Я много сделал для googling, но все еще не могу заставить работать script.
Это то, что он должен делать:
- загрузите веб-сайт с помощью простой формы (имя пользователя, пароль, кнопка отправки),
- введите учетные данные
- и отправьте их.
С помощью "помощи" невероятно плохих примеров технологий Microsoft (по крайней мере для меня) я собрал следующее вместе:
$myUrl = "http://some.url"
$response = Invoke-WebRequest -Uri $myUrl -Method Default -SessionVariable $rb
$form = $response.Forms[0]
$form.Fields["user"] = "username"
$form.Fields["password"] = "password"
$response = Invoke-WebRequest -Uri $form.Action -WebSession $rb -Method POST
$response.StatusDescriptionOK
Я получаю две ошибки, первая при попытке записать в поле "пользователь":
Невозможно индексировать нулевой массив.
$form.Fields [ "user" ] = "username"
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray
Второй имеет отношение к $form.Action
, который я понятия не имею, что он должен читать:
Invoke-WebRequest: не удается проверить аргумент в параметре "Uri". Аргументом является пустой или пустой. Поставьте аргумент, который не является нулевым или пустым, а затем попробуйте команду еще раз.
Снова я сильно полагался на пример № 2 в Microsoft.
РЕДАКТИРОВАТЬ: Благодаря хаммару за капитализацию. Где мои манеры?;)