web-dev-qa-db-fra.com

requêtes http avec powershell

Je cherche à faire des requêtes http vers des pages Web avec PowerShell, est-ce possible et si oui, comment puis-je y parvenir?

Puis-je faire des demandes sur les pages https? Je suis capable de faire des requêtes http avec un fichier bat mais pas https, j'espérais pouvoir des requêtes de page https avec PowerShell.

19
amateur

Vous pouvez utiliser les classes WebRequest et HttpWebRequest habituelles fournies par le framework .NET.

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

Ce n'est pas différent d'utiliser les mêmes classes et API de C #, à l'exception des différences syntaxiques avec PowerShell.

PowerShell v3 apporte également Invoke-WebRequest et quelques autres.

15
Joey

Essaye ça:

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

méthode WebClient.DownloadString (chaîne)

ou dans PowerShell 3.0,

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

Invoke-WebRequest

15
KIM Taegyoon

Selon ce que vous faites, vous pouvez également utiliser System.Net.WebClient , qui est une abstraction simplifiée de HttpWebRequest

$client = new-object system.net.webclient

Regardez ici pour la différence: Quelle différence y a-t-il entre les classes WebClient et HTTPWebRequest dans .NET?

PS: Avec Powershell v3.0, vous avez Invoke-WebRequest et Invoke-RestMethod applets de commande pouvant être utilisées à des fins similaires

8
manojlds

Vous pouvez créer des requêtes HTTP, HTTPS, FTP et FILE à l'aide de l'applet de commande Invoke-WebRequest. C'est assez facile et donne de nombreuses options pour jouer. Exemple: pour faire de simples requêtes http/https à google.com

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

Plus de références peuvent être trouvées MSDN

2
Gaurav

Si tout le reste échoue, utilisez Curl from http://curl.haxx.se . Vous pouvez tout régler, y compris la gestion des certificats, les POST, etc. Pas subtil, mais cela fonctionne et gère tous les cas les plus étranges; par exemple. vous pouvez définir l'indicateur --insecure pour ignorer les problèmes de nom de certificat, l'expiration ou l'état de test.

2
NerdDad

Ce code fonctionne avec les deux ASCII & fichiers binaires sur https dans 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/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)

Testé sur Powershell 5.1.17134.1, Win 10

0
Zimba