Powershell - Ne plus utiliser le navigateur Internet Explorer avec la command Invoke-Webrequest

Récupérer des informations sur une page internet avec PowerShell

Je pense qu'il vous est déjà arrivé de vouloir récupérer des informations avec PowerShell sur des pages internet, cependant, comme on peut le voir souvent, la première fois on a le droit à un message pour vous informer que l'on doit d'abord initialiser le moteur Internet Explorer. Il faut comprendre par là, l'avoir lancer et valider les différentes options.

Le message en question en Anglais :

Invoke-WebRequest : The response content cannot be parsed because the Internet Explorer engine is not available, or Internet Explorer’s first-launch configuration is not complete. Specify the UseBasicParsing parameter and try again.

Si l'on voulait le contourner, il suffisait de faire la manipulation ou rajouter une clef de registre pour corriger cela. Comme ce que vous pouvez le voir ici.

$keyPath = 'Registry::HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Internet Explorer\Main'
if (!(Test-Path $keyPath)) { New-Item $keyPath -Force | Out-Null }
Set-ItemProperty -Path $keyPath -Name "DisableFirstRunCustomize" -Value 1

Bon, c'est ok sur son poste, mais on pourrait faire mieux non ? Oui, on peut aussi utiliser le paramètre "UseBasicParsing", cependant adieu les pages en HTTPS. 

Si l'on utilisait un autre navigateur

PS C:\Temp> [Microsoft.PowerShell.Commands.PSUserAgent].GetProperties() |
Select-Object Name, @{n='UserAgent';e={ [Microsoft.PowerShell.Commands.PSUserAgent]::$($_.Name) }}

Name             UserAgent                                                                                                           
----             ---------                                                                                                           
InternetExplorer Mozilla/5.0 (compatible; MSIE 9.0; Windows NT; Windows NT 10.0; en-US)                                              
FireFox          Mozilla/5.0 (Windows NT; Windows NT 10.0; en-US) Gecko/20100401 Firefox/4.0                                         
Chrome           Mozilla/5.0 (Windows NT; Windows NT 10.0; en-US) AppleWebKit/534.6 (KHTML, like Gecko) Chrome/7.0.500.0 Safari/534.6
Opera            Opera/9.70 (Windows NT; Windows NT 10.0; en-US) Presto/2.2.1                                                        
Safari           Mozilla/5.0 (Windows NT; Windows NT 10.0; en-US) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16   

Donc on va l'initialiser comme ceci :

$userAgent = [Microsoft.PowerShell.Commands.PSUserAgent]::Chrome
Invoke-WebRequest https://blog.delacourt.ovh -UserAgent $userAgent

Voici ce que cela donne les agents quand on les fait tester par le site https://www.whatismybrowser.com/ .

Pour l'agent Chrome :

Pour l'agent Safari :

Pour l'agent Mozilla :
J'espère que cet article vous aura plus.



Commentaires

Posts les plus consultés de ce blog

Powershell - Supprimer Teams sur l'ensemble des profils utilisateurs

Powershell - Comment tester les ports TCP ?

MRemoteNG - Voir les mots de passe dans l'application