đ Commandes Utiles PowerShell â Avec Explications¶
1. Navigation & Gestion de fichiers¶
†Changer de rĂ©pertoire¶
cd C:\MonDossier
Change le répertoire de travail courant vers
C:\MonDossier.
†Lister le contenu dâun dossier¶
dir
# ou
ls
Affiche la liste des fichiers et dossiers dans le répertoire actuel.
lsest un alias deGet-ChildItem.
†CrĂ©er un dossier¶
mkdir MonNouveauDossier
Crée un nouveau dossier nommé
MonNouveauDossierdans le répertoire actuel.
†Supprimer un dossier vide¶
rmdir MonDossier
Supprime le dossier
MonDossiersâil est vide.
†Supprimer un fichier¶
del monfichier.txt
Supprime le fichier
monfichier.txt.
†Copier un fichier¶
copy source.txt destination.txt
Copie le fichier
source.txtversdestination.txt.
†DĂ©placer ou renommer un fichier¶
move ancien.txt nouveau.txt
Renomme ou déplace
ancien.txtversnouveau.txt.
2. Commandes PowerShell avancĂ©es¶
†Afficher le chemin actuel¶
Get-Location
Retourne le chemin du répertoire courant.
†Aller Ă la racine dâun lecteur¶
Set-Location C:\
Change le répertoire courant vers la racine du disque C.
†CrĂ©er un dossier avec mĂ©thode avancĂ©e¶
New-Item -Name "MonDossier" -ItemType Directory
Crée un dossier nommé
MonDossier.
†CrĂ©er un fichier avec du contenu¶
New-Item -Name "fichier.txt" -ItemType File -Value "Mon contenu"
Crée le fichier
fichier.txtet y insĂšre"Mon contenu".
†Copier un fichier avec chemin complet¶
Copy-Item -Path "source.txt" -Destination "copie.txt"
Copie
source.txtverscopie.txt.
†Supprimer un dossier et tout son contenu¶
Remove-Item -Path "MonDossier" -Recurse
Supprime récursivement tous les fichiers/dossiers dans
MonDossier.
†Lister tous les fichiers de maniĂšre rĂ©cursive¶
Get-ChildItem -Recurse
Liste tous les fichiers et sous-dossiers Ă partir du dossier courant.
3. Gestion des processus¶
†Lister les processus en cours¶
tasklist
Affiche tous les processus en cours comme dans le gestionnaire de tĂąches.
†Forcer lâarrĂȘt dâun processus¶
taskkill /IM notepad.exe /F
ArrĂȘte immĂ©diatement toutes les instances de
notepad.exe.
†Version PowerShell de la liste des processus¶
Get-Process
Affiche une liste détaillée des processus PowerShell en cours.
†ArrĂȘter un processus spĂ©cifique¶
Stop-Process -Name "notepad"
ArrĂȘte le processus nommĂ©
notepad.
4. Configuration rĂ©seau¶
†Afficher la configuration IP¶
ipconfig
Affiche les détails IP des interfaces réseau.
†Vider le cache DNS¶
ipconfig /flushdns
Efface le cache DNS local pour forcer la résolution DNS à nouveau.
†Tester la connectivitĂ© rĂ©seau¶
ping google.com
Envoie des paquets ICMP Ă
google.compour vérifier la connectivité.
†Voir les connexions rĂ©seau actives¶
netstat -an
Affiche toutes les connexions TCP/UDP avec leurs statuts.
5. Informations systĂšme¶
†Obtenir un rapport complet du systĂšme¶
systeminfo
Fournit des informations détaillées sur le systÚme (RAM, OS, patchs...).
†Rapport sur lâĂ©tat de la batterie¶
powercfg /batteryreport
GénÚre un rapport HTML sur la santé de la batterie (portable).
†Infos sur la carte graphique¶
Get-WmiObject win32_videocontroller
Affiche les détails sur les GPU installés.
†Infos sur le systĂšme dâexploitation¶
Get-WmiObject win32_operatingsystem
Affiche des infos comme le nom de lâOS, version, build, etc.
6. Gestion des versions¶
†Version de PowerShell installĂ©e¶
$PSVersionTable.PSVersion
Affiche la version principale de PowerShell.
†DĂ©tails complets de version¶
$PSVersionTable
Montre toutes les versions des composants de PowerShell.
†Lister les modules installĂ©s¶
Get-InstalledModule | Select-Object Name, Version
Affiche les modules PowerShell installés avec leurs versions.
†Version dâun module spĂ©cifique¶
Get-InstalledModule -Name "AzureAD" | Select-Object Version
Montre uniquement la version du module
AzureAD.
7. Gestion DNS¶
â Ajouter un enregistrement DNS¶
Add-DnsServerResourceRecordA -ComputerName "DNS01" -ZoneName "domain.com" -Name "serveur" -IPv4Address "192.168.1.10"
Crée un enregistrement de type A pour le nom
serveur.domain.compointant vers192.168.1.10, sur le serveur DNSDNS01.
â Supprimer un enregistrement DNS¶
Remove-DnsServerResourceRecord -ComputerName "DNS01" -ZoneName "domain.com" -RRType "A" -Name "serveur" -Force
Supprime l'enregistrement de type A
serveur.domain.comsurDNS01, sans demander de confirmation (grĂące Ă-Force).
8. Gestion des utilisateurs¶
â CrĂ©er un utilisateur local¶
net user nouvelutilisateur MotDePasse /add
Crée un nouvel utilisateur local nommé
nouvelutilisateuravec le mot de passe indiqué.
â Ajouter un utilisateur au groupe Administrateurs¶
net localgroup administrators nouvelutilisateur /add
Ajoute
nouvelutilisateurau groupe local des administrateurs.
â Modifier la politique d'exĂ©cution¶
Set-ExecutionPolicy RemoteSigned
Permet l'exécution de scripts locaux non signés, mais exige que les scripts téléchargés soient signés par un éditeur de confiance.
9. Scripts : Gestion des comptes utilisateurs¶
a. â Voir la date de derniĂšre connexion d'un compte local¶
$nom=Read-Host -Prompt "Saisir un nom de compte local"
$compte=[ADSI]"WinNT://./$nom"
if ($compte.path){
Write-Host $compte.LastLogin
Write-Host $compte.FullName
Write-host $compte.Description
}
else{
Write-Host "$nom non trouvé"
}
- Demande le nom d'un utilisateur.
- Charge l'objet compte local via ADSI.
- Affiche sa date de derniĂšre connexion, nom complet et description.
b. â Ajouter un compte local via script¶
$local=[ADSI]"WinNT://."
$nom=Read-Host -Prompt "Saisir un nom"
$prenom=Read-host -Prompt "Saisir un Prénom"
$fullname=$nom+$prenom
$description=Read-Host -Prompt "Saisir une description"
$compte=[ADSI]"WinNT://./$nom"
if (!$compte.path){
$utilisateur=$local.create("user",$nom)
$utilisateur.InvokeSet("fullName",$fullname)
$utilisateur.InvokeSet("Description",$description)
$utilisateur.CommitChanges()
Write-Host "$nom ajouté"
}
else{
Write-Host "$nom existe déjà "
}
- Permet d'automatiser la création d'un compte local avec nom, prénom et description.
- Vérifie si le compte existe avant de le créer.
c. â Lire un fichier contenant des utilisateurs¶
$fichier="C:\\testPowerShell\\listeCompte.txt"
if (Test-Path $fichier){
$colLignes=Get-Content $fichier
foreach($ligne in $colLignes){
$tabCompte=$ligne.Split("/")
Write-Host $tabCompte[0]
Write-Host $tabCompte[1]
Write-Host $tabCompte[2]
}
}
else{
Write-Host "$fichier pas trouvé"
}
- Lit un fichier texte contenant une liste de comptes séparés par
/.- Affiche chaque ligne sous forme d'éléments séparés (ex : Nom/Prénom/Description).
10. Gestion des services Windows¶
đ Lister les services¶
Get-Service
Affiche tous les services installés sur le systÚme avec leur état (Running, Stopped, etc.).
â Lister uniquement les services en cours d'exĂ©cution¶
Get-Service | Where-Object {$_.Status -eq 'Running'}
Filtre la liste pour ne montrer que les services en cours de fonctionnement.
â ArrĂȘter un service¶
Stop-Service -Name "NomDuService"
ArrĂȘte le service spĂ©cifiĂ© par son nom.
â¶ïž DĂ©marrer un service¶
Start-Service -Name "NomDuService"
Démarre le service spécifié.
đ RedĂ©marrer un service¶
Restart-Service -Name "NomDuService"
RedĂ©marre un service en l'arrĂȘtant puis en le relançant.
âïž Modifier le type de dĂ©marrage dâun service¶
Set-Service -Name "NomDuService" -StartupType Automatic
Change le type de démarrage du service (ici défini à "Automatique").
11. SĂ©curitĂ© et pare-feu¶
đ Afficher lâĂ©tat du pare-feu¶
Get-NetFirewallProfile
Montre lâĂ©tat (activĂ©/dĂ©sactivĂ©) du pare-feu pour chaque profil rĂ©seau (Domaine, Public, PrivĂ©).
đ Activer le pare-feu pour tous les profils¶
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
Active le pare-feu pour les trois profils réseau.
đ DĂ©sactiver le pare-feu¶
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
Désactive le pare-feu pour tous les profils.
â Ajouter une rĂšgle pour autoriser un port¶
New-NetFirewallRule -DisplayName "HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
Crée une rÚgle nommée "HTTP" qui autorise les connexions entrantes TCP sur le port 80.
12. RĂ©seau avancĂ©¶
đ Afficher les interfaces rĂ©seau¶
Get-NetAdapter
Liste toutes les interfaces réseau présentes sur la machine.
đ Activer une interface¶
Enable-NetAdapter -Name "Ethernet"
Active lâinterface rĂ©seau nommĂ©e "Ethernet".
đ DĂ©sactiver une interface¶
Disable-NetAdapter -Name "Ethernet"
DĂ©sactive lâinterface rĂ©seau spĂ©cifiĂ©e.
đ Afficher la table ARP¶
arp -a
Affiche la table ARP qui relie les adresses IP aux adresses MAC dans le réseau local.
đ RĂ©solution DNS¶
Resolve-DnsName openai.com
RĂ©sout un nom de domaine en adresse IP Ă lâaide des serveurs DNS configurĂ©s.
13. Supervision & Logs¶
đ Afficher les 10 derniers Ă©vĂ©nements du journal systĂšme¶
Get-EventLog -LogName System -Newest 10
Affiche les 10 derniers événements du journal systÚme.
đïž Lister les journaux disponibles¶
Get-EventLog -List
Liste tous les journaux dâĂ©vĂ©nements disponibles.
â Filtrer les erreurs dâapplication¶
Get-EventLog -LogName Application -EntryType Error
Affiche uniquement les Ă©vĂ©nements de type erreur dans le journal dâapplication.
đš Afficher les Ă©vĂ©nements critiques¶
Get-WinEvent -LogName System -FilterXPath "*[System[(Level=1)]]"
Filtre pour ne montrer que les événements critiques (niveau 1) dans le journal systÚme.
14. Utilitaires systĂšme¶
đŠ Lister les logiciels installĂ©s¶
Get-WmiObject -Class Win32_Product | Select-Object Name, Version
Affiche la liste des logiciels installés avec leurs versions.
đ Lister les programmes de dĂ©marrage¶
Get-CimInstance -ClassName Win32_StartupCommand | Select-Object Name, Command
Montre les programmes qui se lancent au démarrage de Windows.
đ± Lister les variables dâenvironnement¶
Get-ChildItem Env:
Liste toutes les variables dâenvironnement systĂšme et utilisateur.
đ RedĂ©marrer la machine¶
Restart-Computer
RedĂ©marre immĂ©diatement lâordinateur.
âčïž Ăteindre la machine¶
Stop-Computer
Ăteint lâordinateur local.
15. Gestion des droits et permissions¶
đ Afficher les permissions dâun dossier¶
Get-Acl "C:\MonDossier" | Format-List
Affiche la liste détaillée des permissions sur le dossier "C:\MonDossier".
â Appliquer des permissions sur un dossier (lecture seule)¶
$acl = Get-Acl "C:\MonDossier"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("NomUtilisateur", "Read", "ContainerInherit,ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
Set-Acl "C:\MonDossier" $acl
- RécupÚre les ACL (droits) actuels du dossier.
- CrĂ©e une nouvelle rĂšgle dâaccĂšs en lecture seule.
- Lâajoute aux rĂšgles existantes.
- Applique la nouvelle liste dâACL.
â Supprimer une rĂšgle dâaccĂšs pour un utilisateur¶
$acl = Get-Acl "C:\MonDossier"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("NomUtilisateur", "Read", "ContainerInherit,ObjectInherit", "None", "Allow")
$acl.RemoveAccessRule($rule)
Set-Acl "C:\MonDossier" $acl
Supprime la rĂšgle de lecture prĂ©cĂ©demment appliquĂ©e pour lâutilisateur spĂ©cifiĂ©.
đĄïž Attribuer le contrĂŽle total Ă un utilisateur¶
$acl = Get-Acl "C:\MonDossier"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("NomUtilisateur", "FullControl", "ContainerInherit,ObjectInherit", "None", "Allow")
$acl.SetAccessRule($rule)
Set-Acl "C:\MonDossier" $acl
Attribue les droits complets (lecture, écriture, suppression, etc.) à un utilisateur sur le dossier.
đ« DĂ©sactiver lâhĂ©ritage des permissions¶
$acl = Get-Acl "C:\MonDossier"
$acl.SetAccessRuleProtection($true, $false)
Set-Acl "C:\MonDossier" $acl
- DĂ©sactive lâhĂ©ritage des permissions.
- Supprime les rÚgles héritées.