Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

PowerShell Script Firewall

29 réponses
Avatar
Robby
Bonjour,

Est-il possible de savoir les ports ouverts d'un ordi distant du firewall XP
SP2 ?
Avec un script gwmi ou autre ?

Merci d'avance,
Robby

10 réponses

1 2 3
Avatar
Robby
Jacques,
Super ca fonctionne mon exe etait sur un chemin qui n'etait pas dans PATH,
je declérais le PATH
sur mon poste, et c'est OK.
Je vais essayer de mettre le resultat dans un fichier unique.
Donc mettre -append/
Mettre un en-tête qui précise le nom de l'ordi, mais cette en-tete, ou je la
mets ?
Encore merci,

"Jacques Barathon [MS]" a écrit dans le
message de news:
"Robby" wrote in message
news:%
Bonjour Jacques et merci,
mais biensur je rencontre des soucis, voici l'erreur :
Le terme « psexec » n'est pas reconnu en tant qu'applet de commande,
fonction, programme exécutable ou fichier de scrip


As-tu mis l'exécutable psexec.exe dans un répertoire présent dans le PATH?
Si tu l'as simplement mis dans le répertoire en cours et que celui n'est
pas déclaré dans le PATH, il faut que tu le spécifies en écrivant .psexec
au lieu de psexec. C'est une mesure de sécurité de PowerShell pour éviter
que l'utilisateur exécute par inadvertance un malware qui se serait glissé
dans le répertoire en cours en reprenant le nom d'un exécutable standard.

Jacques




Avatar
Jean
A ma connaissance, il n'y a rien dans WMI pour piloter ou interroger le
firewall Windows.


A ma connaissance le firewall XP et sup est "comisé" en
lecture/écriture :-) :

http://msdn2.microsoft.com/en-us/library/aa366452.aspx

#---8<---Firewall.ps1---Jean-JMST-Belgium---
$profile=(New-Object -com 'HNetCfg.FwMgr').`
LocalPolicy.`
CurrentProfile

'PORTS'
'-----'
$ports=$profile.GloballyOpenPorts
$ports|%{if($_.Enabled){Write-Host $_.Name $_.Port}}
''
'APPLICATIONS'
'------------'
$applis=$profile.AuthorizedApplications
$applis|%{if($_.Enabled){$_.Name}}
''
'SERVICES'
'--------'
$services=$profile.Services
$services|%{
if($_.Customized -or $_.Enabled){
Write-Host $_.Name -NoNewLine
$_.GloballyOpenPorts|
%{
if($_.Enabled){
Write-Host " "$_.Port -NoNewLine
}
}
''
}
}
#---8<---Firewall.ps1---Jean-JMST-Belgium---

Amicalement,

--
Jean - JMST
Belgium

Avatar
Robby
Jacques,
J'ai fait le fichier unique, en effet toutes les infos sont dedans mais je
ne sais pas quelles ordinateurs ca concerne.
Pourrias-tu m'aider ?
Encore merci,

"Robby" a écrit dans le message de news:
eoG%
Jacques,
Super ca fonctionne mon exe etait sur un chemin qui n'etait pas dans PATH,
je declérais le PATH
sur mon poste, et c'est OK.
Je vais essayer de mettre le resultat dans un fichier unique.
Donc mettre -append/
Mettre un en-tête qui précise le nom de l'ordi, mais cette en-tete, ou je
la mets ?
Encore merci,

"Jacques Barathon [MS]" a écrit dans le
message de news:
"Robby" wrote in message
news:%
Bonjour Jacques et merci,
mais biensur je rencontre des soucis, voici l'erreur :
Le terme « psexec » n'est pas reconnu en tant qu'applet de commande,
fonction, programme exécutable ou fichier de scrip


As-tu mis l'exécutable psexec.exe dans un répertoire présent dans le
PATH? Si tu l'as simplement mis dans le répertoire en cours et que celui
n'est pas déclaré dans le PATH, il faut que tu le spécifies en écrivant
.psexec au lieu de psexec. C'est une mesure de sécurité de PowerShell
pour éviter que l'utilisateur exécute par inadvertance un malware qui se
serait glissé dans le répertoire en cours en reprenant le nom d'un
exécutable standard.

Jacques








Avatar
Jacques Barathon [MS]
"Jean" wrote in message
news:
A ma connaissance, il n'y a rien dans WMI pour piloter ou interroger le
firewall Windows.


A ma connaissance le firewall XP et sup est "comisé" en lecture/écriture
:-) :

http://msdn2.microsoft.com/en-us/library/aa366452.aspx


Bon à savoir, merci pour la précision Jean. Mais concernant la demande de
Robby pour l'accès à un firewall distant, sais-tu si cette méthode est
applicable?

Jacques


Avatar
Robby
Bonjour Jacques,
Est-il possible que l'on voit mon soucis pour faire un fichier unique
qui separerait les infos pour chaque ordianteur ?
Encore merci,

"Jacques Barathon [MS]" a écrit dans le
message de news: eZPHW$
"Jean" wrote in message
news:
A ma connaissance, il n'y a rien dans WMI pour piloter ou interroger le
firewall Windows.


A ma connaissance le firewall XP et sup est "comisé" en lecture/écriture
:-) :

http://msdn2.microsoft.com/en-us/library/aa366452.aspx


Bon à savoir, merci pour la précision Jean. Mais concernant la demande de
Robby pour l'accès à un firewall distant, sais-tu si cette méthode est
applicable?

Jacques




Avatar
Jacques Barathon [MS]
"Robby" wrote in message
news:
Jacques,
J'ai fait le fichier unique, en effet toutes les infos sont dedans mais je
ne sais pas quelles ordinateurs ca concerne.
Pourrias-tu m'aider ?
Encore merci,


Tu peux ajouter du texte avant et/ou après l'exécution de psexec, soit en
redirigant chaque ligne vers le fichier de sortie, soit en encadrant les
commandes par $(...) et en redirigeant l'ensemble vers le fichier. Je te
donne un exemple avec cette dernière méthode. Pour faciliter la lisibilité,
j'écris la suite de commandes sur plusieurs lignes:

get-content postes.txt | foreach {
$(
"$_ :"
psexec $_ netsh firewall show portopening
"=" * 67
) | out-file ports.txt -append
}

Il y aurait également moyen d'utiliser la méthode de Jean (accès au firewall
via l'objet COM). Même si l'objet COM n'est pas directement attaquable à
distance (du moins je ne vois pas comment, mais mes connaissances en la
matière sont limitées je l'avoue) il est toujours possible d'utiliser la
même technique que ci-dessus, c'est-à-dire faire exécuter la tâche à
distance via psexec.

L'avantage de la solution de Jean est qu'avec un minimum d'adaptation elle
pourrait te permettre de stocker les infos de manière un peu plus
exploitable qu'un simple fichier texte, par exemple sous la forme d'un
fichier CSV ou en XML, de manière à pouvoir reprendre les infos dans Excel
ou toute autre appli pour les analyser. On pourrait également le faire dans
le script ci-dessus en décortiquant la sortie de netsh, mais c'est un peu
plus compliqué.

L'inconvénient de la solution de Jean est qu'elle est écrite en PowerShell.
Hé oui, ça peut être un inconvénient ;-) : si tu veux l'exécuter sur tous
les postes il faut au préalable installer PowerShell sur ces mêmes postes.
Evidemment, on peut sans doute traduire tout ça en VBScript.

Mais bon, si la solution ci-dessus te convient, pas de souci.

Jacques

Avatar
Jean
l'accès à un firewall distant, sais-tu si cette méthode est applicable?


Je ne pratique pas le remote scripting, mais j'ai vu ceci :

http://msdn2.microsoft.com/en-us/library/aa366439.aspx

je ne sais pas si ça fait avancer le schmilblik :-)

Amicalement,

--
Jean - JMST
Belgium

Avatar
Jean
Evidemment, on peut sans doute traduire tout ça en VBScript.


La documentation contient de nombreux exemples VBScript :

http://msdn2.microsoft.com/en-us/library/ms758664.aspx

Amicalement,

--
Jean - JMST
Belgium

Avatar
Jacques Barathon [MS]
"Robby" wrote in message
news:
Bonjour Jacques,
Est-il possible que l'on voit mon soucis pour faire un fichier unique
qui separerait les infos pour chaque ordianteur ?
Encore merci,


Voir ma réponse sur une autre branche de cette même conversation. :-)

Jacques

Avatar
Robby
Jacques,
J'ai créé le script, il ne me retourne pas le nom des ordi dans le fichier
port.txt.
j'ai uniquement les infos sur les ports ouverts.
Comment faire ?
Encore merci,


"Jacques Barathon [MS]" a écrit dans le
message de news:
"Robby" wrote in message
news:
Jacques,
J'ai fait le fichier unique, en effet toutes les infos sont dedans mais
je ne sais pas quelles ordinateurs ca concerne.
Pourrias-tu m'aider ?
Encore merci,


Tu peux ajouter du texte avant et/ou après l'exécution de psexec, soit en
redirigant chaque ligne vers le fichier de sortie, soit en encadrant les
commandes par $(...) et en redirigeant l'ensemble vers le fichier. Je te
donne un exemple avec cette dernière méthode. Pour faciliter la
lisibilité, j'écris la suite de commandes sur plusieurs lignes:

get-content postes.txt | foreach {
$(
"$_ :"
psexec $_ netsh firewall show portopening
"=" * 67
) | out-file ports.txt -append
}

Il y aurait également moyen d'utiliser la méthode de Jean (accès au
firewall via l'objet COM). Même si l'objet COM n'est pas directement
attaquable à distance (du moins je ne vois pas comment, mais mes
connaissances en la matière sont limitées je l'avoue) il est toujours
possible d'utiliser la même technique que ci-dessus, c'est-à-dire faire
exécuter la tâche à distance via psexec.

L'avantage de la solution de Jean est qu'avec un minimum d'adaptation elle
pourrait te permettre de stocker les infos de manière un peu plus
exploitable qu'un simple fichier texte, par exemple sous la forme d'un
fichier CSV ou en XML, de manière à pouvoir reprendre les infos dans Excel
ou toute autre appli pour les analyser. On pourrait également le faire
dans le script ci-dessus en décortiquant la sortie de netsh, mais c'est un
peu plus compliqué.

L'inconvénient de la solution de Jean est qu'elle est écrite en
PowerShell. Hé oui, ça peut être un inconvénient ;-) : si tu veux
l'exécuter sur tous les postes il faut au préalable installer PowerShell
sur ces mêmes postes. Evidemment, on peut sans doute traduire tout ça en
VBScript.

Mais bon, si la solution ci-dessus te convient, pas de souci.

Jacques



1 2 3