Секреты PowerShell. Пишем HTTP-запросы и парсим страницы на PowerShell
В интернете есть множество сервисов, с которыми можно работать, обращаясь к их ресурсам по протоколу HTTP. Веб‑разработчики постоянно работают с такими HTTP-запросами для доступа к функциям внешних API или для тестирования собственных приложений. PowerShell для обращения к вебу по HTTP предлагает два стандартных командлета: Invoke-WebRequest и Invoke-RestMethod.
С помощью командлета Invoke-WebRequest можно направить веб‑серверу HTTP-запрос и получить от него ответ.
Анализ HTML-страниц
Этот командлет хорошо подходит для анализа HTML-страниц. Еще он умеет сохранять страницы на локальном диске. В этом он похож на консольную утилиту wget и даже имеет такой псевдоним:
PSC:\Script>Get-Aliaswget
CommandTypeName
---------------
Aliaswget->Invoke-WebRequest
Обратимся с помощью Invoke-WebRequest к какой‑нибудь простой странице, например Example Domain. По умолчанию Invoke-WebRequest выполняет HTTP-запрос с методом GET к ресурсу на веб‑сервере, адрес ресурса указывается в качестве значения параметра -Uri. В результате возвращается объект типа HtmlWebResponseObject, в котором хранится информация об ответе сервера:
В поле StatusCode содержится код ответа от сервера (200 для нашего примера), в поле StatusDescription — текстовое описание этого ответа (OK).
Современный PowerShell
Эта статья — глава из книги Андрея Попова «Современный PowerShell», вышедшей в издательстве «БХВ» в марте этого года. В книге подробно описан язык PowerShell и работа с оболочкой Windows PowerShell в Windows Terminal, взаимодействие с файловой системой, структурированными данными и веб‑ресурсами. Автор разбирает управление процессами, службами и серверами автоматизации, рассказывает, как создать GUI для сценариев Windows PowerShell, уделяет внимание кросс‑платформенным возможностям PowerShell в macOS и Linux.
Если ты администрируешь рабочие станции, серверы или локальные сети под управлением Windows, книга «Современный PowerShell» поможет тебе освоить секреты и хитрости этой технологии и автоматизировать множество рутинных задач.
Содержимое ответа от сервера и HTTP-заголовки
Содержимое ответа от сервера хранится в виде строки в поле Content. В нашем случае здесь будет записан HTML-код: