17/11/2024

PowerShell

PowerShell : Introduction au module PSDecode

I. Présentation

PSDecode est un module PowerShell développé par Prateek Kumar Singh et disponible sur GitHub qui vous permettra de décoder différentes informations. Autrement dit, il vous permettra de comprendre certains codes d'erreurs, et notamment il s'avère utile en phase de debug. Grâce à ce module, vous allez pouvoir comprendre ce que signifie tel code de retour HTTP ou encore savoir quelle est l'application qui écoute sur le port 8080 de votre serveur.

PSDecode va, en quelque sorte, vous aider à mieux interpréter certaines informations affichées dans la console PowerShell. Ce qui peut aussi s'avérer pratique pour obtenir une information depuis un serveur en mode core !

II. Installer PSDecode et découvrir ses cmdlets

Comme on a l'habitude de le faire, on va installer le module PSDecode grâce à la commande suivante :

Install-Module PSDecode

Il suffira ensuite de patienter quelques secondes...

À ce jour et dans sa version 0.9.0, le module PSDecode contient 4 cmdlets, la commande ci-dessous nous permet de les lister :

Get-Command -Module PSDecode

Voici à quoi servent ces commandes :

  • Get-ErrorDetail : Obtenir des informations complémentaires sur les codes d'erreurs Windows
  • Get-HTTPStatusCode : Obtenir une description correspondante à un code de retour HTTP (exemple : 404)
  • Get-MACVendor : Obtenir le fabricant d'une ou plusieurs adresses MAC
  • Get-Port : Obtenir des informations sur les ports utilisés, par exemple avoir la liste des ports sur écoute sur votre machine et le service associé à chaque port

Passons maintenant à un exemple concret.

III. Quels sont les ports d'écoutes et quels sont les services associés ?

Voilà une bonne question ! L'historique commande netstat nous permettrait d'obtenir une liste des ports d'écoutes sur la machine, tout comme la commande Get-NetTCPConnection. Mais finalement, on ne sait pas quel est le service qui utilise chaque port en écoute !

Voyez par vous-même :

C'est là qu'intervient le module PSDecode et plus particulièrement la commande Get-Port. On va lui piper les ports locaux utilisés et en mode listen, et ensuite le cmdlet va nous retourner : le port, le service qui l'utilise, le protocole et une description. Pratique !

Passons à l'exemple suivant.

IV. Analyser le code de retour d'une page web ?

Lorsque l'on exécute une requête web avec PowerShell, par exemple via Invoke-WebRequest, il y a la propriété StatusCode qui est renvoyée avec le code de statut HTTP suite au chargement de la page cible. Pour obtenir facilement la signification du code depuis la ligne de commande, on peut l'envoyer au cmdlet Get-HTTPStatusCode.

(Invoke-WebRequest www.it-connect.fr).StatusCode

La commande ci-dessus retournera le code HTTP de retourné par le serveur  web : 200, 404, 500, etc. Si l'on envoie le résultat au cmdlet du module PSDecode, on obtiendra des détails sur ce code :

(Invoke-WebRequest www.it-connect.fr).StatusCode | Get-HTTPStatusCode

Voici un exemple :

On pourrait aussi tout simplement faire :

200, 404 | Get-HTTPStatusCode

Pour terminer ce tutoriel à la découverte de PSDecode, je vous propose de voir ensemble un dernier cas d'usage.

V. À quel fabricant correspond mon adresse MAC ?

En utilisant le cmdlet Get-MacVendor du module, on va pouvoir afficher le fabricant associé à une adresse MAC. Pour rappel, les trois premiers octets d'une adresse MAC permettent de définir le constructeur de la carte. C'est donc par cette intermédiaire que PSDecode va déduire les informations par rapport à des adresses MAC envoyées en entrée.

Pour tester, on va chercher à obtenir les constructeurs associés aux cartes réseau de votre PC. Pour commencer, on peut lister les cartes réseaux du PC :

Get-NetAdapter

On remarque la propriété "MacAddress" qui a comme valeur l'adresse MAC de chaque carte. On va récupérer cette propriété et l'envoyer à Get-MacVendor via le pipe.

(Get-NetAdapter).MacAddress | Get-MacVendor

On remarquera que si le constructeur est inexistant, comme pour une carte virtuelle (type VPN), il peut y avoir une erreur par manque de correspondance.

On pourrait aussi imaginer charger un fichier complet avec des adresses MAC pour obtenir le constructeur. De manière plus simple, on peut aussi envoyer une ou plusieurs MAC à analyser comme ceci :

"C4-8E-8F-F6-42-1C","C4-8E-8F-F6-42-1B" | Get-MACVendor

Au travers ce tutoriel, on a pu voir quelques exemples d'utilisation, mais il y en a forcément pleins d'autres... Qu'en pensez-vous ? Avez-vous des idées pour l'utiliser ?

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.