2 votes

Comment obtenir les noms des règles de pare-feu par InstanceID adressant un port particulier ?

J'essaie d'identifier toutes les règles du pare-feu qui s'adressent à un port particulier. Voici comment je peux le faire manuellement :

Get-NetFirewallPortFilter | Where { $_.LocalPort -Eq "RPC" } `
| Format-Table -Property InstanceID

Maintenant, j'ai besoin de connaître le nom d'une règle :

Show-NetFirewallRule | Where { $_.InstanceID –Eq “Netlogon-TCP-RPC-In”} `
| Format-Table -Property DisplayName

Ensuite, j'obtiens :

DisplayName
-----------
Netlogon Service Authz (RPC)

Je ne veux pas le faire manuellement
J'ai essayé de suivre script pour obtenir la liste des noms :

$InstanceIDs = Get-NetFirewallPortFilter | Where { $_.LocalPort -Eq "RPC" } `
| Format-Table -Property InstanceID
foreach ($InstanceID in $InstanceIDs)
{
    Show-NetFirewallRule | Where { $_.InstanceID –Eq $InstanceID} `
    | Format-Table -Property DisplayName
}

Je n'ai rien pour le moment.
J'ai découvert que InstanceID sur $InstanceIDs n'est pas une chaîne, mais n'a pas réussi à la convertir.

Une idée sur la façon de le faire fonctionner ?
Merci.

2voto

JosefZ Points 1465

Votre problème a quelque chose à voir avec $InstanceID type (essayez $InstanceID.Gettype() dans votre script). L'extrait de code suivant pourrait vous aider :

$InstanceIDs =  -split $( 
    Get-NetFirewallPortFilter | 
        Where { $_.LocalPort -Eq "RPC" } | 
            Format-Table -Property InstanceID -HideTableHeaders | 
                Out-String
    )

Show-NetFirewallRule | 
    Where { $_.InstanceID –In $InstanceIDs} |
        ForEach-Object { 
            if ($_.Name) {
                "{0} {1} {2}" -f $_.Name, '==', $_.DisplayName
            }
        }

Notez que $InstanceIDs est un tableau de chaînes de caractères dans l'extrait de code ci-dessus ; de plus, $_.Name la propriété dans Show-NetFirewallRule correspond à InstanceID un sur Get-NetFirewallPortFilter .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X