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.
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.
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
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
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
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.
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