web-dev-qa-db-fra.com

Le terme 'Invoke-WebRequest' n'est pas reconnu comme nom d'applet de commande

L'exécution de la cmdlet Invoke-WebRequest pose un problème. J'ai lu que ~ 100% des cas de ce scénario sont des versions PS inférieures à 3, mais ce n'est pas mon cas:

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

Je peux ajouter que j'utilise la version Windows 10 IoT Core du système d'exploitation. En fait, mon objectif principal est d’exécuter une requête Web simple, mais je me demande pourquoi cette applet de commande ne fonctionne pas, en particulier si elle ne le fait pas;/je suppose que certaines fonctionnalités de Windows peuvent être utilisées, comme le commutateur juste ma conjecture.

Mettre à jour

En ce qui concerne les cmdlets disponibles pour certains modules et les assemblages préchargés entre mon système standard et une version IoT, il semble que la dernière version ait été coupée, mais je n'ai toujours pas vu de documentation pour cela.

22
Dawid Komorowski

J'ai eu ce problème sur un serveur Windows Server 2008 R2, car il exécutait PowerShell v2. La mise à niveau vers la v4 a résolu le problème.

Windows Management Framework 4.0 (inclut PowerShell 4.0)

À partir de la v5, Invoke-WebRequest est toujours documenté .

Vérifiez votre version avec:

$PSVersionTable.PSVersion
11
Fenton

Essayer de créer la requête de la même manière que je le ferais pour PS version 2 (en utilisant la bibliothèque .net au lieu de la cmdlet) ne fonctionne pas non plus ...

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

Cela semble avoir été supprimé dans PowerShell Core.

Je cherche les raisons pour lesquelles cela ne fonctionne pas sur Docker pour Windows exécuté sur Nano Server pour Windows 2016 et que vos résultats correspondent aux miens.

3

L'utilisation de l'option -UseBasicParsing dans la commande fonctionne. Ce qui suit fait partie de la documentation de la commande

-UseBasicParsing

Indique que la cmdlet utilise l'objet de réponse pour le contenu HTML sans analyse DOM (Document Object Model).

Ce paramètre est requis lorsque Internet Explorer n'est pas installé sur les ordinateurs, par exemple sur une installation Server Core d'un système d'exploitation Windows Server.

0
Geo

Invoke-WebRequest a été supprimé de PowerShell 5.

Voici une implémentation d'une fonction appelée Invoke-FastWebRequest qui fonctionne comme l'ancien Invoke-WebRequest dans PowerShell 5: https://github.com/cloudbase/unattended-setup-scripts/blob/master/FastWebRequest.psm1

0
Ionut Hulub