web-dev-qa-db-ja.com

PowerShellでのHTTPリクエスト

私はpowershellを使用してWebページにhttpリクエストを作成しようとしていますが、これは可能ですか?可能であれば、どうすればこれを達成できますか?

Httpsページへのリクエストは可能ですか?私はbatファイルを使用してhttpリクエストを作成できますが、httpsはできません。Powershellを使用してhttpsページリクエストを作成できることを望んでいました。

19
amateur

.NETフレームワークによって提供される通常のWebRequestおよびHttpWebRequestクラスを使用できます。

$request = [System.Net.WebRequest]::Create('http://example.com')
# do something with $request

PowerShellとの構文の違いを除いて、C#の同じクラスとAPIを使用する場合と同じです。

PowerShell v3はInvoke-WebRequestと他のいくつか。

15
Joey

これを試して:

(New-Object System.Net.WebClient).DownloadString("http://stackoverflow.com")

WebClient.DownloadStringメソッド(String)

またはPowerShell 3.0では、

(Invoke-WebRequest http://stackoverflow.com).content

Invoke-WebRequest

15
KIM Taegyoon

何をしているのかに応じて、 System.Net.WebClient 、これはHttpWebRequestの簡略化された抽象化です

$client = new-object system.net.webclient

違いについてはこちらをご覧ください: 。NETのWebClientクラスとHTTPWebRequestクラスの違いは何ですか?

PS:Powershell v3.0では、Invoke-WebRequestおよびInvoke-RestMethod同様の目的で使用できるコマンドレット

8
manojlds

Invoke-WebRequestコマンドレットを使用して、HTTP、HTTPS、FTP、およびFILEリクエストを作成できます。これはとても簡単で、いろいろな方法で遊ぶことができます。例:google.comに単純なhttp/httpsリクエストを送信するには

Invoke-WebRequest -Uri "http://google.com"

より多くの参照を見つけることができます [〜#〜] msdn [〜#〜]

2
Gaurav

他のすべてが失敗した場合は、 http://curl.haxx.se からCurlを使用します。証明書の処理、POSTなどを含め、すべてを設定できます。微妙ではありませんが、それは機能し、すべての奇妙なケースを処理します。例えば--insecureフラグを設定して、証明書名の問題、有効期限、またはテストステータスを無視できます。

2
NerdDad

このコードは、PowerShellでhttpsを介してASCII&バイナリファイルの両方で機能します。

# Add the necessary .NET Assembly
Add-Type -AssemblyName System.Net.Http

# Create the HttpClient object
$client = New-Object -TypeName System.Net.Http.Httpclient

# Get the web content.
$task = $client.GetByteArrayAsync("https://stackoverflow.com/questions/7715695/http-requests-with-powershell")

# Wait for the async call to finish
$task.wait();

# Write to file
[io.file]::WriteAllBytes('test.html',$task.result)

Powershell 5.1.17134.1、Win 10でテスト済み

0
Zimba