Display all content with Invoke-WebRequest

curl, powershell

Solution

Unlike the `curl` command line utility `Invoke-WebRequest` returns an object with various properties of which the content of the requested document is just one. You can get the content in a single statement by expanding the property like this:

Invoke-WebRequest 'http://www.example.org/' | Select-Object -Expand Content

or by getting the property value via dot-notation like this:

(Invoke-WebRequest 'http://www.example.org/').Content

Alternatively you could use the Windows port of `curl`:

& curl.exe 'http://www.example.org/'

Call the program with its extension to distinguish it from the alias `curl` for `Invoke-WebRequest`.

Problem

So I decided to start using PowerShell rather than Command Prompt. And I want to run `curl`. Very different output then discover that `curl` is an alias to `Invoke-WebRequest` in PowerShell. Using PowerShell `curl` in the same way as real `curl`, I only get part of the content displayed. I have seen that I can put the output of PowerShell `curl` into a variable and then use `$variable.Content` to display all of the content but that seems extra work over real `curl`. Is there an option to show all of the content directly? I can't see one in the help.

Original source