De nombreux administrateurs utilisent habituellement l’outil console netstat ou l’outil graphique TCPView pour afficher des informations sur les connexions TCP/IP actives et les ports TCP ouverts dans Windows
Au lieu de netstat, vous pouvez utiliser le cmdlet Get-NetTCPConnection dans PowerShell pour obtenir des informations sur les connexions réseau actives dans Windows, les ports TCP ouverts et les processus en cours d’exécution qui utilisent le protocole TCP/IP.
Bien sûr, PowerShell permet d’écrire facilement des scripts complexes pour obtenir des informations et surveiller les ports TCP ouverts, les processus et les connexions réseau établies.
Voici comment lister les connexions TCP/IP actives sous Windows en PowerShell.

Table des matières
- 1 Comment lister les connexions TCP/IP actives sous Windows en PowerShell
- 1.1 Obtenir les informations des processus
- 1.2 Trier la liste des connexions sur les adresses distantes, ports locaux ou distants
- 1.3 Afficher uniquement les connexions établies
- 1.4 Afficher que les connexions qui s’appliquent à internet
- 1.5 Lister seulement les connexions IPv4 ou IPv6
- 1.6 Afficher les noms de processus et PPID
- 1.7 Lister les connexions sur un PC distant en PowerShell
- 2 Comment lister les ports en écoute avec PowerShell
- 3 Liens
Comment lister les connexions TCP/IP actives sous Windows en PowerShell
Obtenir les informations des processus
Essayez d’exécuter la commande Get-NetTCPConnection sans aucune option pour afficher la liste des connexions avec PowerShell :
Trier la liste des connexions sur les adresses distantes, ports locaux ou distants
Vous pouvez utiliser le cmdlet Sort-Object pour trier les colonnes.
Par exemple pour trier la liste sur la colonne des adresses distantes :
Get-NetTCPConnection | Sort-Object RemoteAddress -Descending
Voici un autre exemple pour trier sur la colonne des ports locaux :
Get-NetTCPConnection | Sort-Object LocalPort
Afficher uniquement les connexions établies
Je pense que le paramètre le plus important est l’état. Pour n’afficher que les connexions établies dans une vue conviviale (tableau de format), exécutez la commande suivante
Get-NetTCPConnection -State Established | Format-Table -AutoSize
Afficher que les connexions qui s’appliquent à internet
Cette commande permet d’obtenir toutes les connexions TCP qui utilisent un paramètre TCP appliqué de Internet.
Get-NetTCPConnection -AppliedSetting Internet
Lister seulement les connexions IPv4 ou IPv6
Vous pouvez jouer sur l’option LocalAdress pour filtrer les connexions sur une adresse IP locale.
De ce fait, on peut afficher seulement les connexions IPv4 en spécifiant celle-ci :
Get-NetTCPConnection -LocalAddress 10.0.0.15 | Sort-Object LocalPort
De même, il est possible de n’afficher que les connexions IPv6 de cette manière :
Get-NetTCPConnection -LocalAddress 2a02:8388:b01:3700:215:5dff:fe6f:a01
Afficher les noms de processus et PPID
Par obtenir le nom d’un processus parent PID, vous pouvez afficher la liste des services Windows associés qui utilisent le réseau :
Get-WmiObject Win32_Service | Where-Object -Property ProcessId -In (Get-NetTCPConnection).OwningProcess | Where-Object -Property State -eq Running | Format-Table ProcessId, Name, Caption, StartMode, State, Status, PathName
Lister les connexions sur un PC distant en PowerShell
Vous pouvez obtenir une liste des ports et des connexions TCP ouverts sur des ordinateurs distants à l’aide des cmdlets remoting” PowerShell (Enter-PSSession et Invoke-Command).
Pour lister les connexions d’un PC distant, utilisez l’option -Computername et spécifier le nom de l’ordinateur :
Invoke-Command -ComputerName <NomPC> {Get-NetTCPConnection -State Established}
Pour récupérer toutes les connexions établies sur tous les serveurs de votre domaine (tous les OUs !) et les sauvegarder dans un fichier, lancez
(Get-ADComputer -Filter 'operatingsystem -like "*server*"').Name | Foreach-Object {Invoke-Command -ComputerName $_ {Get-NetTCPConnection -State Established -ErrorAction SilentlyContinue} | Sort-Object PSComputerName | Select-Object PSComputername, LocalPort, RemotePort, RemoteAddress} | Out-File C:\Temp\TCPConn.txt
La cmdlet Get-NetTCPConnection (ainsi que Test-NetConnection) peut être très utile pour suivre et diagnostiquer les connexions réseau dans Windows.
Comment lister les ports en écoute avec PowerShell
Comme netstat, la commande affiche la liste de toutes les connexions actives avec les adresses IP locales et distantes, les ports, l’état de la connexion (Listen, Established, TimeWait, CloseWait, SynReceived, SynSent) et l’ID du processus (PID) qui utilise cette connexion TCP.
Vous pouvez afficher une liste des ports ouverts (en écoute) sur votre ordinateur local :
Get-NetTCPConnection -State Listen | Select-Object -Property LocalAddress, LocalPort, RemoteAddress, RemotePort, State | Sort-Object LocalPort |ft
Vous pouvez afficher les noms DNS des hôtes distants et les noms de processus pour les connexions TCP :
Get-NetTCPConnection -State Established |Select-Object -Property LocalAddress, LocalPort,@{name='RemoteHostName';expression={(Resolve-DnsName $_.RemoteAddress).NameHost}},RemoteAddress, RemotePort, State,@{name='ProcessName';expression={(Get-Process -Id $_.OwningProcess). Path}},OffloadState,CreationTime |ft