Référence terrain PowerShell pour identifier un poste, inspecter services, événements, réseau, stockage et exécuter des contrôles distants sans perdre le contexte.
Aide, syntaxe & sécurité
Get-Help Get-Service -FullAffiche syntaxe, paramètres, exemples et remarques avant d’utiliser une commande inconnue.
Get-Command *dns*Recherche les commandes disponibles par nom ou verbe/nom.
Get-Service Spooler | Get-MemberIndispensable pour comprendre quelles propriétés peuvent être filtrées ou exportées.
Start-Transcript -Path C:Temppowershell-transcript.txtConserve les commandes et sorties utiles pendant une intervention.
Système & identité
hostnameConfirme la machine réellement ciblée.
whoami /allAffiche utilisateur, groupes, SID et privilèges du jeton courant.
Get-ComputerInfo | Select-Object WindowsProductName,WindowsVersion,OsArchitecture,CsNameContrôle édition, version, architecture et nom système.
(Get-CimInstance Win32_OperatingSystem).LastBootUpTimeAide à repérer un serveur jamais redémarré ou un reboot récent inattendu.
Processus & services
Get-Process | Sort-Object CPU -Descending | Select-Object -First 15 Name,Id,CPURepère rapidement les processus ayant consommé le plus de CPU depuis leur démarrage.
Get-Service | Where-Object Status -eq 'Stopped' | Sort-Object DisplayNameÀ interpréter avec le type de serveur : de nombreux services sont volontairement arrêtés.
Get-Service SpoolerVérifie état et nom exact avant toute action.
Restart-Service Spooler -PassThruÀ utiliser seulement après identification de l’impact et des dépendances.
Journaux Windows
Get-WinEvent -ListLog * | Sort-Object RecordCount -Descending | Select-Object -First 20 LogName,RecordCountPermet d’identifier les journaux volumineux ou spécialisés.
Get-WinEvent -FilterHashtable @{LogName='System';Level=2;StartTime=(Get-Date).AddHours(-4)} -ErrorAction SilentlyContinue | Select-Object -First 30 TimeCreated,Id,ProviderName,MessageFiltre les erreurs sur une fenêtre courte pour corréler avec l’incident.
Get-WinEvent -FilterHashtable @{LogName='System';Id=41} -MaxEvents 20Utile pour confirmer la fréquence d’un Event ID précis.
wevtutil epl System C:TempSystem.evtxConserve une copie du journal avant nettoyage ou analyse externe.
Réseau & DNS
Get-NetIPConfigurationVue synthétique IP, passerelle et DNS par interface.
Get-NetAdapter | Sort-Object Status,NameContrôle état, vitesse et interface réellement utilisée.
Resolve-DnsName exemple.frDistingue rapidement un problème DNS d’un problème de connectivité.
Test-NetConnection serveur.exemple.local -Port 443Valide DNS, route et établissement TCP
Stockage & fichiers
Get-Volume | Where-Object DriveLetter | Select-Object DriveLetter,FileSystemLabel,HealthStatus,Size,SizeRemainingContrôle santé logique et espace restant.
Get-PhysicalDisk | Select-Object FriendlyName,MediaType,HealthStatus,OperationalStatus,SizeÀ compléter avec l’outil constructeur si un disque remonte Warning/Unhealthy.
Get-ChildItem C:Data -File -Recurse -ErrorAction SilentlyContinue | Sort-Object Length -Descending | Select-Object -First 20 FullName,LengthCiblez un chemin précis pour éviter une lecture coûteuse de tout le système.
Get-FileHash C:Tempfichier.zip -Algorithm SHA256Permet de comparer l’intégrité de deux copies.
Administration distante
Test-WSMan serveur01Vérifie que WinRM répond avant d’ouvrir une session distante.
Enter-PSSession -ComputerName serveur01Session interactive : utilisez un compte dédié et quittez avec Exit-PSSession.
Invoke-Command -ComputerName serveur01 -ScriptBlock { Get-Service }Préférable pour une collecte ponctuelle et scriptable.
$cred = Get-CredentialStocke temporairement un PSCredential en mémoire, pas un mot de passe en clair.
Pipeline, filtres & exports
Get-Service | Where-Object Status -eq 'Running'Filtre les objets sur leurs propriétés, pas sur du texte affiché.
Get-Process | Select-Object Name,Id,CPU,WorkingSetRéduit la sortie aux informations nécessaires.
Get-Service | Select-Object Name,Status,StartType | Export-Csv C:Tempservices.csv -NoTypeInformation -Encoding UTF8Produit un fichier exploitable dans Excel ou un autre outil.
Get-NetIPConfiguration | ConvertTo-Json -Depth 5 | Set-Content C:Tempnetwork.json -Encoding UTF8Pratique pour joindre un état structuré à un ticket.
À retenir
- Certaines commandes nécessitent une console élevée ou les modules RSAT adaptés.
- Évitez les commandes de modification tant que l’état initial n’est pas capturé.
- Une sortie vide n’est pas toujours une erreur : vérifiez les droits, filtres et le contexte distant.
- Pour un serveur de production, privilégiez une collecte ciblée plutôt qu’une commande récursive lourde.