HTTP-запросы с powershell
Я хочу сделать http-запросы на веб-страницы с помощью powershell, возможно ли это, и если да, то как я могу это достичь?
Можно ли отправлять запросы на https-страницы? Я могу сделать http-запросы с файлом bat, но не https, надеялся, что могу https запросить страницы с помощью powershell.
Ответы
Ответ 1
Вы можете использовать обычные классы WebRequest
и HttpWebRequest
, предоставляемые платформой .NET.
$request = [System.Net.WebRequest]::Create('http://example.com')
# do something with $request
Это не отличается от использования одних и тех же классов и API от С#, за исключением синтаксических различий с PowerShell.
В PowerShell v3 также есть Invoke-WebRequest
и несколько других.
Ответ 2
Попробуйте следующее:
(New-Object System.Net.WebClient).DownloadString("http://stackoverflow.com")
Метод WebClient.DownloadString(String)
или в PowerShell 3.0,
(Invoke-WebRequest http://stackoverflow.com).content
Invoke-WebRequest
Ответ 3
В зависимости от того, что вы делаете, вы также можете использовать System.Net.WebClient
, что является упрощенной абстракцией HttpWebRequest
$client = new-object system.net.webclient
Посмотрите на разницу: Какая разница между классами WebClient и HTTPWebRequest в .NET?
PS: С Powershell v3.0 у вас есть командлеты Invoke-WebRequest
и Invoke-RestMethod
, которые могут использоваться для аналогичных целей
Ответ 4
Если все остальное не работает, используйте Curl из http://curl.haxx.se. Вы можете установить все, включая обработку сертификатов, POST и т.д. Не тонкий, но он работает и обрабатывает все лишние случаи; например вы можете установить флаг --insecure, чтобы игнорировать проблемы с именем сертификата, истечением срока действия или статусом теста.
Ответ 5
Вы можете создавать запросы HTTP, HTTPS, FTP и FILE с помощью командлета Invoke-WebRequest. Это довольно легко и дает много вариантов для игры.
Пример. Чтобы сделать простые запросы http/https google.com
Invoke-WebRequest -Uri "http://google.com"
Другие ссылки можно найти MSDN
Ответ 6
Этот код работает как с ASCII & бинарные файлы через https в powershell:
# 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/info/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