Paramétrer le proxy système en Powershell

Alexandre 3 ans

Hou là, mais pourquoi ? Tiens, ça me rappelle quelque chose...
C'est vrai que cette question est légitime, surtout quand on sait que Powershell est relativement complexe à utiliser et que les GPO font cela parfaitement. Toutefois, Powershell répond très bien aux besoins de scripting de Windows, et les GPO ont la facheuse tendance, surtout pour Internet Explorer, à dépendre de la version du logiciel ou du système d'exploitation.

Bref, je propose un script pas très long qui va vous permettre de configurer le proxy comme ceci :

  • Ne pas détecter automatiquement les paramètres
  • Utiliser un script de configuration automatique du proxy (fichier pac)
  • Définir l'emplacement du script de configuration automatique

Eeeeeet...boom !

#######################################################
# Configuration d'IE
#######################################################
# Définition de l'adresse du proxy
$proxy_url= "http://proxy.inios.local:2243/proxypac/proxy.pac?id=154";

# Emplacement de la configuration d'IE dans le registre
$IE_register = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings\";

# Récupérer le proxy actuel
$proxy_actuel = (Get-Itemproperty $IE_register).AutoConfigURL;

# SI le proxy configuré est différent de celui par défaut
if ($proxy_actuel -ne $proxy_url) {
    # ALORS Supprimer l'ancien paramétrage
    Remove-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' -Name ProxyServer;

    # ALORS Changer l'adresse du proxy
    Set-Itemproperty -Path $IE_register -Name AutoConfigURL -Value $proxy_url;
    
    # ALORS Désactiver le proxy manuel
    Set-Itemproperty -Path $IE_register -Name ProxyEnable -Value "0";
    
    # ALORS Décocher la détection automatique du proxy
    $IE_register = $IE_register+"Connections";
    $tmp = (Get-ItemProperty -Path $IE_register -Name DefaultConnectionSettings).DefaultConnectionSettings;
    $tmp[8] = 0x05;
    Set-ItemProperty -Path $IE_register -Name DefaultConnectionSettings -Value $tmp;
}

Normalement, ce n'est pas trop complexe à comprendre. Toutefois, notez bien qu'il faut modifier la variable $proxy_url pour la faire correspondre à l'emplacement de votre fichier pac.

En fait, je dois tout de même avouer que la partie suivant mon commentaire, # ALORS Décocher la détection automatique du proxy, n'est pas triviale à comprendre, notamment la ligne $tmp[8] = 5;. Mais d'où qui sort ce 5 ? Et bien voilà :

  • 0x09 : utiliser uniquement la détection automatique
  • 0x03 : utilise uniquement le proxy pour le LAN
  • 0x0B : utiliser les deux points précédents ensemble
  • 0x05 : utiliser uniquement le script de configuration automatique
  • 0x0D : utiliser la détection automatique et le script de configuration
  • 0x07 : utiliser le proxy pour le LAN et le script de configuration
  • 0x0F : utiliser toutes les options
  • 0x01 : utiliser aucune des options

Dans mon cas, j'ai besoin 0x05, ce qui donne dans : Tools > Internet Options > Connections > LAN settings (oui, mon Windows est en anglais), le résultat suivant :

On ne va quand même pas se quitter sur cette capture toute moche, hein ? Aller, voici deux méthodes pour déployer le script :

  1. Créer une GPO parce qu'on dispose d'un Active Directory
  2. Ajouter le script dans le dossier Démarrage situé là : C:\Users\adale01\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

Et pour finir, un petit conseil : lire la documentation fournie sur ce site qui regroupe tout ce qu'il y a à savoir pour créer son propre fichier pac.

Commentaire

Rédiger

Quelle est la quatrième lettre du mot atlbfx ?