Термин "Invoke-WebRequest" не распознается как имя командлета.

У меня проблема с выполнением командлета Invoke-WebRequest. Я читал, что ~100% этого сценария - версия PS ниже 3, но это не мой случай:

Name                           Value
----                           -----
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
CLRVersion                     4.0.30319.34011
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.10208.0
PSVersion                      5.0.10208.0
SerializationVersion           1.1.0.1

Могу добавить, что я использую Windows 10 IoT Core версию ОС. На самом деле моей основной целью является выполнение простого веб-запроса, но меня интересует, почему этот командлет не работает, особенно если их больше не будет;/ Я полагаю, это может быть функция некоторых окон, например, переключатель включения, но его только мое предположение.

Обновить

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

5 ответов

У меня была эта проблема на сервере Windows 2008 R2, потому что он работал под управлением PowerShell v2. Обновление до v4 решило проблему.

https://www.microsoft.com/en-gb/download/details.aspx?id=40855

Начиная с v5, Invoke-WebRequest все еще задокументировано.

Проверьте свою версию с:

$PSVersionTable.PSVersion

Попытка создать запрос таким же образом, я бы сделал это для PS версии 2 (с использованием библиотеки.net вместо командлета) тоже не работает...

$request = [System.Net.WebRequest]::Create("https://google.com")
$request.Method = "GET"
[System.Net.WebResponse]$response = $request.GetResponse()

Кажется, это удалено в ядре PowerShell. Я ищу, почему это не работает в Docker для Windows, работающем на Nano Server для Windows 2016, и ваши результаты совпадают с моими.

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

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-WebRequest -Uri 
https://github.com/actions/runner/releases/download/v2.165.2/actions-runner
-win-x64-2.165.2.zip -OutFile actions-runner-win-x64-2.165.2.zip

Invoke-WebRequest был удален из PS5. Вот реализация функции Invoke-FastWebRequest, которая работает так же, как старый Invoke-WebRequest в PS5: https://github.com/cloudbase/unattended-setup-scripts/blob/master/FastWebRequest.psm1

Использование опции -UseBasicParsing в команде работает. Следующее является частью документации команды

-UseBasicParsing

Указывает, что командлет использует объект ответа для содержимого HTML без анализа объектной модели документа (DOM).

Этот параметр обязателен, если Internet Explorer не установлен на компьютерах, например, при установке Server Core операционной системы Windows Server.

Другие вопросы по тегам