Principe PowerShell
PowerShell manipule des objets, pas seulement du texte. Utiliser
Get-Member pour voir leurs propriétés et méthodes.Get-Service | Get-Member
Get-Service | Select-Object Name, Status
Get-Service | Where-Object Status -eq 'Running'Aide et découverte
| Commande | Rôle | Exemple |
|---|---|---|
Get-Help | Afficher l’aide d’une commande. | Get-Help Get-Service -Examples |
Get-Command | Rechercher des cmdlets. | Get-Command *NetAdapter* |
Get-Member | Inspecter les objets du pipeline. | Get-Process | Get-Member |
Get-Alias | Afficher les alias. | Get-Alias ls |
Fichiers et texte
Get-ChildItem C:\Users -Recurse -Filter *.txt
Get-ChildItem C:\Logs -Recurse -File | Select-Object Name, FullName
Get-Content .\serveurs.txt
Get-Content .\serveurs.txt | Select-String '^DC'
(Get-Content .\serveurs.txt).Count
Set-Content .\sortie.txt 'Première ligne'
Add-Content .\sortie.txt 'Nouvelle ligne'
Copy-Item .\source .\sauvegarde -Recurse
Move-Item .\ancien.txt .\nouveau.txt
Remove-Item .\test -Recurse -WhatIfServices, processus et événements
Get-Service
Get-Service | Where-Object Status -eq 'Running'
Get-Service Spooler | Restart-Service
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10
Stop-Process -Name notepad -Force
Get-WinEvent -LogName System -MaxEvents 20
Get-WinEvent -FilterHashtable @{LogName='System'; Level=2}Réseau
Get-NetIPConfiguration
Get-NetIPAddress -AddressFamily IPv4
Get-NetRoute -AddressFamily IPv4
Get-DnsClientServerAddress
Test-Connection serveur01 -Count 1 -Quiet
Test-NetConnection serveur01 -Port 445
Resolve-DnsName serveur01
Get-NetTCPConnection -State ListenActive Directory
Import-Module ActiveDirectory
Get-ADUser -Filter * | Select-Object Name, SamAccountName
Get-ADUser jedi -Properties MemberOf, Enabled
Get-ADGroupMember GG_TSSR
Get-ADComputer -Filter * | Select-Object Name, OperatingSystem
Search-ADAccount -LockedOut
Unlock-ADAccount jedi
Disable-ADAccount jedi
Get-ADOrganizationalUnit -Filter *Variables, conditions et boucles
$serveurs = Get-Content .\serveurs.txt
foreach ($serveur in $serveurs) {
$repond = Test-Connection $serveur -Count 1 -Quiet
if ($repond) {
Write-Host "$serveur : OK"
}
else {
Write-Warning "$serveur : KO"
}
}Pipeline, tri et export
Get-Service |
Where-Object Status -eq 'Running' |
Sort-Object DisplayName |
Select-Object Name, DisplayName, Status
Get-Process |
Sort-Object WorkingSet64 -Descending |
Select-Object -First 10 Name, Id, WorkingSet64 |
Export-Csv .\processus.csv -NoTypeInformation -Encoding UTF8Gestion des erreurs
try {
Get-Item C:\inexistant -ErrorAction Stop
}
catch {
Write-Error "Échec : $($_.Exception.Message)"
}
finally {
Write-Host "Fin du traitement"
}🚨 Réflexe TSSR
- Tester les commandes destructrices avec
-WhatIf. - Filtrer tôt avec
Where-Objectou directement avec les paramètres de la cmdlet. - Afficher uniquement les propriétés utiles avec
Select-Object. - Utiliser
-ErrorAction Stopdans un bloctry/catch.
⚠ Pièges fréquents
- Comparer avec
-eq, pas avec=. - Confondre
$_, l’objet courant du pipeline, et une variable classique. - Oublier que
Format-Tablesert à l’affichage et ne doit pas être placé avant un export. - Utiliser un alias dans un script destiné à être relu ; préférer les noms complets.