私はpowershellを使用してWebページにhttpリクエストを作成しようとしていますが、これは可能ですか?可能であれば、どうすればこれを達成できますか?
Httpsページへのリクエストは可能ですか?私はbatファイルを使用してhttpリクエストを作成できますが、httpsはできません。Powershellを使用してhttpsページリクエストを作成できることを望んでいました。
.NETフレームワークによって提供される通常のWebRequest
およびHttpWebRequest
クラスを使用できます。
$request = [System.Net.WebRequest]::Create('http://example.com')
# do something with $request
PowerShellとの構文の違いを除いて、C#の同じクラスとAPIを使用する場合と同じです。
PowerShell v3はInvoke-WebRequest
と他のいくつか。
これを試して:
(New-Object System.Net.WebClient).DownloadString("http://stackoverflow.com")
WebClient.DownloadStringメソッド(String)
またはPowerShell 3.0では、
(Invoke-WebRequest http://stackoverflow.com).content
何をしているのかに応じて、 System.Net.WebClient
、これはHttpWebRequest
の簡略化された抽象化です
$client = new-object system.net.webclient
違いについてはこちらをご覧ください: 。NETのWebClientクラスとHTTPWebRequestクラスの違いは何ですか?
PS:Powershell v3.0では、Invoke-WebRequest
およびInvoke-RestMethod
同様の目的で使用できるコマンドレット
Invoke-WebRequestコマンドレットを使用して、HTTP、HTTPS、FTP、およびFILEリクエストを作成できます。これはとても簡単で、いろいろな方法で遊ぶことができます。例:google.comに単純なhttp/httpsリクエストを送信するには
Invoke-WebRequest -Uri "http://google.com"
より多くの参照を見つけることができます [〜#〜] msdn [〜#〜]
他のすべてが失敗した場合は、 http://curl.haxx.se からCurlを使用します。証明書の処理、POSTなどを含め、すべてを設定できます。微妙ではありませんが、それは機能し、すべての奇妙なケースを処理します。例えば--insecureフラグを設定して、証明書名の問題、有効期限、またはテストステータスを無視できます。
このコードは、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でテスト済み