The term 'Invoke-WebRequest' is not recoginzed as the name of a cmdlet

拥有回忆 提交于 2019-12-06 16:41:45

问题


I've got problem with executing Invoke-WebRequest cmdlet. I read that ~100% case of that scenario is PS version lower than 3, but it's not my case:

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

I can add that I'm using Windows 10 IoT Core version of OS. In fact my main purpose is execution of simple web request, but I am interested why this cmdlet is not working, especially if more of them won't be ;/ I suppose it can be some windows feature like switch to turn on, but its just my guess.

Update

As far as I compared available cmdlets for certain modules, and preloaded assemblies between my regular system and an IoT version, it looks like the latter version is cut somehow, but I still didn't see any docs for that.


回答1:


I had this issue on a Windows Server 2008 R2 server, because it was running PowerShell v2. Upgrading to v4 fixed the issue.

Windows Management Framework 4.0 (includes PowerShell 4.0)

As of v5, Invoke-WebRequest is still documented.

Check your version with:

$PSVersionTable.PSVersion



回答2:


Trying to create the request in the same way I would do it for PS version 2 (using .net library instead of cmdlet) doesn't work either...

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



回答3:


This appears to be removed in PowerShell Core.

I am searching for why this doesn't work on Docker for Windows running on Nano Server for Windows 2016 and your findings match mine.




回答4:


Using -UseBasicParsing option in the command works. The following is part of the command's documentation

-UseBasicParsing

Indicates that the cmdlet uses the response object for HTML content without Document Object Model (DOM) parsing.

This parameter is required when Internet Explorer is not installed on the computers, such as on a Server Core installation of a Windows Server operating system.




回答5:


Invoke-WebRequest has been stripped from PowerShell 5.

Here's an implementation of a function called Invoke-FastWebRequest that works just like the old Invoke-WebRequest in PowerShell 5: https://github.com/cloudbase/unattended-setup-scripts/blob/master/FastWebRequest.psm1



来源:https://stackoverflow.com/questions/32315616/the-term-invoke-webrequest-is-not-recoginzed-as-the-name-of-a-cmdlet

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!