Skip to content

📘 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. ls est un alias de Get-ChildItem.


➀ CrĂ©er un dossier

mkdir MonNouveauDossier

Crée un nouveau dossier nommé MonNouveauDossier dans le répertoire actuel.


➀ Supprimer un dossier vide

rmdir MonDossier

Supprime le dossier MonDossier s’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.txt vers destination.txt.


➀ DĂ©placer ou renommer un fichier

move ancien.txt nouveau.txt

Renomme ou déplace ancien.txt vers nouveau.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.txt et y insÚre "Mon contenu".


➀ Copier un fichier avec chemin complet

Copy-Item -Path "source.txt" -Destination "copie.txt"

Copie source.txt vers copie.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.com pour 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.com pointant vers 192.168.1.10, sur le serveur DNS DNS01.


➔ Supprimer un enregistrement DNS

Remove-DnsServerResourceRecord -ComputerName "DNS01" -ZoneName "domain.com" -RRType "A" -Name "serveur" -Force

Supprime l'enregistrement de type A serveur.domain.com sur DNS01, 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é nouvelutilisateur avec le mot de passe indiqué.


➔ Ajouter un utilisateur au groupe Administrateurs

net localgroup administrators nouvelutilisateur /add

Ajoute nouvelutilisateur au 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.