Powershell

Disk Comandline

wmic diskdrive list brief

Diskpart

Profile

Le script chargé de base est dans la variable

$PROFILE

Contexte - Scope Emplacement

Utilisateur courant - Shell courant Affecte uniquement l'utilisateur actuel et la session PowerShell en cours

$PROFILE = C:\Users\{NomUtilisateur}\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

Utilisateur courant - Tous les shells Affecte l'utilisateur actuel mais tous les hôtes PowerShell (Windows PowerShell, VS Code, etc.)

$PROFILE.AllUsersCurrentHost = C:\Users\{NomUtilisateur}\Documents\PowerShell\Profile.ps1

Tous les utilisateurs - Shell courant Affecte toutes les sessions PowerShell pour tous les utilisateurs

$PROFILE.AllUsersCurrentHost = C:\Program Files\PowerShell\7\Microsoft.PowerShell_profile.ps1

Tous les utilisateurs - Tous les shells Affecte tous les utilisateurs et tous les hôtes PowerShell

$PROFILE.AllUsersAllHosts = C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1

Profile : Examples

##write-host "+$("-"*21)" -fore yellow -NoNewline
##write-host "  " -BackgroundColor blue  -NoNewline
##write-host "  " -BackgroundColor white -NoNewline
##write-host "  " -BackgroundColor red   -NoNewline
##write-host "$("-"*21)+" -fore yellow
##write-host "¦ Bonjour " -fore yellow -NoNewline
##write-host ("$env:username").padright(38," ") -fore green -NoNewline
##write-host " ¦" -fore yellow 
##write-host "¦ Vous êtes connecté sur le PC " -fore yellow -NoNewline
##write-host ("$env:computername").PadRight(17," ") -fore green -NoNewline
##write-host " ¦" -fore yellow 
##write-host "+$("-"*48)+" -fore yellow


#Variables 
#$MyIPpub      = (Invoke-WebRequest -uri "http://ifconfig.me/ip").Content
$ObjNet       = gwmi win32_networkadapterconfiguration
$MyIPlocal    = Get-NetIPConfiguration -IfIndex "56" 
$MyIPlocal    = $MyIPlocal.IPv4Address | Select-Object IPAddress
$MyIPlocal    = $MyIPlocal.IPAddress
$disk = D:\Documents\WindowsPowerShell\espace_disque_dispo.ps1


##Function
function disk(){

Get-WmiObject -Class Win32_LogicalDisk | 
    Select-Object -Property DeviceID, @{
       label='FreeSpace'
       expression={($_.FreeSpace/1GB).ToString('F2')}
    }
}

#Affichage Début Cage
write-host "╒$("═"*48)╕" -fore gray

#Nom de l'Utilisateur
write-host "│ Utilisateur connecté : " -fore gray -NoNewline
write-host ("$env:username").padright(23," ") -fore white -NoNewline
write-host " │" -fore gray 

#Nom de la Machine
write-host "│ Nom de la machine : " -fore gray -NoNewline
write-host ("$env:computername").PadRight(26," ") -fore white -NoNewline
write-host " │" -fore gray 
################################IP ADDR####################################
#IP Publique
#Write-Host "│ IP publique : " -fore gray -NoNewline
#Write-Host ("$MyIPpub").PadRight(32," ") -fore White -NoNewline
#Write-Host " │" -fore gray

#IP Local
Write-Host "│ IP local : " -fore gray -NoNewline
Write-Host ("$MyIPlocal").PadRight(35," ") -fore White -NoNewline
Write-Host " │" -fore gray
################################DISK####################################
#Espace Disponible Disque C:
write-host "│ Espace Disk Disponible " -fore gray -NoNewline
write-host $disk.DeviceID[0] -fore gray -nonewline
write-host (" "+$disk.FreeSpace[0]+ "Go").PadRight(21," ") -fore white -nonewline
write-host " │" -fore gray

#Espace Disponible Disque D:
write-host "│ Espace Disk Disponible " -fore gray -NoNewline
write-host $disk.DeviceID[1] -fore gray -nonewline
write-host (" "+$disk.FreeSpace[1]+ "Go").PadRight(21," ") -fore white -nonewline
write-host " │" -fore gray

#Espace Disponible Disque J:
write-host "│ Espace Disk Disponible " -fore gray -NoNewline
write-host $disk.DeviceID[2] -fore gray -nonewline
write-host (" "+$disk.FreeSpace[2]+ "Go").PadRight(21," ") -fore white -nonewline
write-host " │" -fore gray


#Affichage Fin Cage
write-host "╘$("═"*48)╛" -fore gray

PKTMON - Cheat Sheet Administrateur Windows

PKTMON (Packet Monitor) est un outil natif Windows permettant de capturer et d'analyser le trafic réseau sans installer de logiciel tiers.


Vérifier la configuration actuelle

Afficher les filtres actifs :

pktmon filter list

Afficher les composants monitorés :

pktmon comp list

Afficher l'aide :

pktmon help

Nettoyer les filtres

Supprimer tous les filtres :

pktmon filter remove

Capturer un port spécifique

UDP

Capturer le port UDP 20500 :

pktmon filter add -p 20500

TCP

Capturer le port TCP 443 :

pktmon filter add -p 443

Lister les filtres :

pktmon filter list

Capture temps réel

Démarrer une capture en temps réel :

pktmon start --etw -m real-time

Arrêter la capture :

pktmon stop

Capture vers un fichier

Démarrer l'enregistrement :

pktmon start --capture --pkt-size 0

Arrêter :

pktmon stop

Fichier généré :

PktMon.etl

Export de capture

Conversion en texte

pktmon format PktMon.etl -o Capture.txt

Conversion Wireshark

pktmon etl2pcap PktMon.etl -o Capture.pcapng

Exemples de lecture

Trafic entrant

Direction Rx
192.168.1.10.50000 > 10.0.0.10.20500

Signification :

Client  : 192.168.1.10
Port    : 50000

Serveur : 10.0.0.10
Port    : 20500

Le serveur reçoit un paquet.


Trafic sortant

Direction Tx
10.0.0.10.20500 > 192.168.1.10.50000

Le serveur répond au client.


Validation d'un flux fonctionnel

Rx
192.168.1.10.50000 > 10.0.0.10.20500

Tx
10.0.0.10.20500 > 192.168.1.10.50000

Interprétation :

✓ Trafic reçu
✓ Application joignable
✓ Réponse envoyée

Filtrer par adresse IP

Capturer uniquement une IP :

pktmon filter add -i 192.168.1.10

Capturer plusieurs IP :

pktmon filter add -i 192.168.1.10
pktmon filter add -i 192.168.1.20

Capture pour analyse Wireshark

Méthode recommandée :

pktmon filter remove

pktmon filter add -p 20500

pktmon start --capture --pkt-size 0

Faire le test.

pktmon stop

Convertir :

pktmon etl2pcap PktMon.etl -o Capture.pcapng

Ouvrir directement dans Wireshark.


Rechercher une application liée à un port

UDP

Get-NetUDPEndpoint |
Where-Object LocalPort -eq 20500

TCP

Get-NetTCPConnection |
Where-Object LocalPort -eq 443

Associer un PID à un processus

Get-Process -Id 1234

Ou :

(Get-Process -Id 1234).Path

Résultat :

C:\Program Files\Application\App.exe

Vérifier rapidement le pare-feu

Règles contenant un port :

Get-NetFirewallRule |
Where-Object DisplayName -match "20500"

Ports ouverts :

Get-NetFirewallPortFilter |
Where-Object LocalPort -eq 20500

Workflow recommandé

1. Supprimer les filtres

pktmon filter remove

2. Ajouter le port

pktmon filter add -p 20500

3. Démarrer la capture

pktmon start --etw -m real-time

4. Réaliser le test applicatif

5. Vérifier

Rx uniquement

→ Requête reçue.

Rx + Tx

→ Communication bidirectionnelle.

Aucune trace

→ Le trafic n'arrive pas sur le serveur.

6. Arrêter

pktmon stop

Commandes essentielles à retenir

pktmon filter remove

pktmon filter add -p 20500

pktmon start --etw -m real-time

pktmon start --capture --pkt-size 0

pktmon stop

pktmon format PktMon.etl -o Capture.txt

pktmon etl2pcap PktMon.etl -o Capture.pcapng