none
Firewall Object RRS feed

  • Question

  • Bonjour,

    J'essaie de modifier les paramètres des règles de pare feu via l'objet com 'HNetCfg.FwPolicy2'. ( sous Windows 7 )

    Ça fonctionne pour certaines règles de pare feu, et d'autres non.

    Pour le coup dans l'exemple ( ci dessous ), çà ne fonctionne jamais quand le nom de la règle contient une quote simple.

    Mon petit bout de script pour tester le nom des règles:

    $FireWall = New-Object -ComObject HNetCfg.FwPolicy2
    $Name = "Partage de fichiers et d'imprimantes (LLMNR-UDP-Out)"
    # $Name = "Gestion réseau de base - IPv6 (Trafic entrant IPv6)"
    ForEach ($Rules in $FireWall.Rules) {
        If ($($Rules.Name) -eq $Name) {
            $Rules
        }
    }

    Si vous avez des idées je suis preneur.

    Cordialement

    samedi 21 février 2015 13:57

Réponses

  • Bonjour,

    La variable $Name est en ASCII (code ASCII de ' --> 39) alors que $Rules.Name renvoie une chaîne en UNICODE (Code UNICODE de ' --> 8217)

    Ci-dessous le résultat en m'inspirant de votre petit bout de script :

    $FireWall = New-Object -ComObject HNetCfg.FwPolicy2
    $Name = "Partage de fichiers et d'imprimantes (LLMNR-UDP-Out)"
    
    $Firewall.Rules | Where-Object { $_.Name -eq $Name } # Cela ne marche pas !
    
    $Name = "Partage de fichiers et d$([char]8217)imprimantes (LLMNR-UDP-Out)"
    $Firewall.Rules | Where-Object { $_.Name -eq $Name } # Cette fois ci c'est Bon !
    


    Charlie Dancoisne - Independent Consultant & Trainer (Please take a moment to "Vote as Helpful" and/or "Mark as Answer", where applicable. This helps the community, keeps the forums tidy, and recognises useful contributions. Thanks!)

    • Marqué comme réponse Eclipse- dimanche 22 février 2015 00:28
    samedi 21 février 2015 18:08

Toutes les réponses

  • Bonjour,

    La variable $Name est en ASCII (code ASCII de ' --> 39) alors que $Rules.Name renvoie une chaîne en UNICODE (Code UNICODE de ' --> 8217)

    Ci-dessous le résultat en m'inspirant de votre petit bout de script :

    $FireWall = New-Object -ComObject HNetCfg.FwPolicy2
    $Name = "Partage de fichiers et d'imprimantes (LLMNR-UDP-Out)"
    
    $Firewall.Rules | Where-Object { $_.Name -eq $Name } # Cela ne marche pas !
    
    $Name = "Partage de fichiers et d$([char]8217)imprimantes (LLMNR-UDP-Out)"
    $Firewall.Rules | Where-Object { $_.Name -eq $Name } # Cette fois ci c'est Bon !
    


    Charlie Dancoisne - Independent Consultant & Trainer (Please take a moment to "Vote as Helpful" and/or "Mark as Answer", where applicable. This helps the community, keeps the forums tidy, and recognises useful contributions. Thanks!)

    • Marqué comme réponse Eclipse- dimanche 22 février 2015 00:28
    samedi 21 février 2015 18:08
  • Ça fonctionne parfaitement de cette façon.

    Sinon j'ai jeté un œil rapide à comment procéder pour faire une conversion de chaine sans faire de redirection dans un fichier. J'ai pas eu le résultat souhaité.

    Donc étant donné que c'est uniquement pour modifier les règles pré établie par Microsoft, et qu'il semblerait au premier abord que seul la simple quote soit bloquante. J'ai contourné le problème en incluant ceci:

    If ($Name.contains("'")) {
        $Name = ($Name).Replace("'", "$([char]8217)")
    }

    C'est pas forcément très propre, mais çà fonctionne.

    Merci !


    • Modifié Eclipse- dimanche 22 février 2015 00:37
    dimanche 22 février 2015 00:36