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é
- Aide détaillée — Get-Help Get-Service -FullAffiche syntaxe, paramètres, exemples et remarques avant d’utiliser une commande inconnue.
- Rechercher une commande — Get-Command *dns*Recherche les commandes disponibles par nom ou verbe/nom.
- Explorer les propriétés — Get-Service Spooler | Get-MemberIndispensable pour comprendre quelles propriétés peuvent être filtrées ou exportées.
- Journaliser la session — Start-Transcript -Path C:\Temp\powershell-transcript.txtConserve les commandes et sorties utiles pendant une intervention.
Système & identité
- Nom du poste — hostnameConfirme la machine réellement ciblée.
- Contexte utilisateur — whoami /allAffiche utilisateur, groupes, SID et privilèges du jeton courant.
- Informations Windows — Get-ComputerInfo | Select-Object WindowsProductName,WindowsVersion,OsArchitecture,CsNameContrôle édition, version, architecture et nom système.
- Dernier démarrage — (Get-CimInstance Win32_OperatingSystem).LastBootUpTimeAide à repérer un serveur jamais redémarré ou un reboot récent inattendu.
Processus & services
- Top CPU — 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.
- Services arrêtés — 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.
- État d’un service — Get-Service SpoolerVérifie état et nom exact avant toute action.
- Redémarrage ciblé — Restart-Service Spooler -PassThruÀ utiliser seulement après identification de l’impact et des dépendances.
Journaux Windows
- Logs disponibles — Get-WinEvent -ListLog * | Sort-Object RecordCount -Descending | Select-Object -First 20 LogName,RecordCountPermet d’identifier les journaux volumineux ou spécialisés.
- Erreurs système récentes — 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.
- Événement par ID — Get-WinEvent -FilterHashtable @{LogName='System';Id=41} -MaxEvents 20Utile pour confirmer la fréquence d’un Event ID précis.
- Exporter un EVTX — wevtutil epl System C:\Temp\System.evtxConserve une copie du journal avant nettoyage ou analyse externe.
Réseau & DNS
- Configuration complète — Get-NetIPConfigurationVue synthétique IP, passerelle et DNS par interface.
- Cartes réseau — Get-NetAdapter | Sort-Object Status,NameContrôle état, vitesse et interface réellement utilisée.
- Résolution DNS — Resolve-DnsName exemple.frDistingue rapidement un problème DNS d’un problème de connectivité.
- Test de port — Test-NetConnection serveur.exemple.local -Port 443Valide DNS, route et établissement TCP dans une seule commande.
Stockage & fichiers
- Volumes — Get-Volume | Where-Object DriveLetter | Select-Object DriveLetter,FileSystemLabel,HealthStatus,Size,SizeRemainingContrôle santé logique et espace restant.
- Disques physiques — Get-PhysicalDisk | Select-Object FriendlyName,MediaType,HealthStatus,OperationalStatus,SizeÀ compléter avec l’outil constructeur si un disque remonte Warning/Unhealthy.
- Fichiers volumineux — 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.
- Empreinte SHA-256 — Get-FileHash C:\Temp\fichier.zip -Algorithm SHA256Permet de comparer l’intégrité de deux copies.
Administration distante
- Tester WinRM — Test-WSMan serveur01Vérifie que WinRM répond avant d’ouvrir une session distante.
- Session distante — Enter-PSSession -ComputerName serveur01Session interactive : utilisez un compte dédié et quittez avec Exit-PSSession.
- Commande distante — Invoke-Command -ComputerName serveur01 -ScriptBlock { Get-Service }Préférable pour une collecte ponctuelle et scriptable.
- Identifiants — $cred = Get-CredentialStocke temporairement un PSCredential en mémoire, pas un mot de passe en clair.
Pipeline, filtres & exports
- Filtrer — Get-Service | Where-Object Status -eq 'Running'Filtre les objets sur leurs propriétés, pas sur du texte affiché.
- Choisir les colonnes — Get-Process | Select-Object Name,Id,CPU,WorkingSetRéduit la sortie aux informations nécessaires.
- Exporter CSV — Get-Service | Select-Object Name,Status,StartType | Export-Csv C:\Temp\services.csv -NoTypeInformation -Encoding UTF8Produit un fichier exploitable dans Excel ou un autre outil.
- Exporter JSON — Get-NetIPConfiguration | ConvertTo-Json -Depth 5 | Set-Content C:\Temp\network.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.