Sujet : powershell
-
Gestion des erreurs PowerShell dans les scripts d'administration : erreurs terminales, $ErrorActionPreference et $LASTEXITCODE
PowerShell distingue deux classes d'erreurs aux comportements différents dans un script : les erreurs terminales, que try/catch permet d'intercepter, et les erreurs non terminales, que seuls $ErrorActionPreference ou -ErrorAction peuvent transformer en arrêt. Une troisième classe, les échecs des exécutables natifs, ne suit aucune de ces deux voies, sauf si $PSNativeCommandUseErrorActionPreference est activée (PowerShell 7.4+, expérimentale en 7.3).
-
Windows PowerShell 5.1 ou PowerShell 7 sur un serveur : quel moteur exécute réellement un script
PowerShell 7 s'installe en parallèle de Windows PowerShell 5.1, intégré au système, sans le remplacer, avec un exécutable, un chemin de modules et un point de terminaison de remoting distincts. Un agent qui lance « powershell.exe » au lieu de « pwsh.exe » (ou l'inverse) obtient sans le savoir les modules et les valeurs par défaut de l'autre moteur.
-
Préparer un nouveau disque sous Windows Server : de Get-Disk à Format-Volume, et pourquoi il démarre hors ligne
La séquence du module PowerShell Storage, de Get-Disk jusqu'à un volume formaté et monté : Initialize-Disk -PartitionStyle GPT, New-Partition -UseMaximumSize, Format-Volume, puis redimensionnement avec Get-PartitionSupportedSize. S'y ajoute la stratégie SAN, qui laisse par défaut certains disques nouvellement connectés hors ligne.
-
Activer et utiliser la communication à distance PowerShell : WinRM, TrustedHosts et la limite du second saut
Activation de la communication à distance PowerShell avec Enable-PSRemoting, choix entre TrustedHosts et le transport HTTPS, exécution de commandes avec Invoke-Command et Enter-PSSession, et limite de délégation des informations d'identification connue sous le nom de second saut.
-
Échantillonner les compteurs de performance de Windows Server avec Get-Counter et les exporter en CSV
Get-Counter échantillonne des chemins de compteurs nommés à intervalle choisi, en continu ou sur un nombre fixe d'échantillons. Export-Counter (Windows PowerShell 5.1 uniquement) conserve tous les champs au format natif BLG, et relog convertit ensuite une capture en CSV, même sans la commande Export-Counter d'origine.
-
Simulation et confirmation dans les scripts d'administration : -WhatIf/-Confirm en PowerShell et option --dry-run en shell
PowerShell fournit nativement SupportsShouldProcess, qui dote une fonction personnalisée de vrais commutateurs -WhatIf et -Confirm, reliés au même appel $PSCmdlet.ShouldProcess() que celui des cmdlets intégrées. Les scripts shell n'ont pas d'équivalent natif : une option --dry-run doit être transmise manuellement.
-
Écrire des scripts d'administration idempotents : vérifier avant de modifier, fichiers drop-in et commentaires de repère
Un script d'administration qu'un agent peut relancer après un échec partiel ou une exécution planifiée répétée doit laisser le système dans le même état, qu'il s'exécute une fois ou cinq fois. Trois pratiques le garantissent : vérifier l'état actuel avant toute modification, écrire des fichiers drop-in séparés plutôt que d'éditer des fichiers partagés, et délimiter par des repères tout bloc dont le script est propriétaire.
-
Installer des rôles et fonctionnalités Windows Server depuis PowerShell sans cumuler les redémarrages en attente
Get-WindowsFeature et Install-WindowsFeature -IncludeManagementTools couvrent la découverte et l'installation ; -Source désigne le média Features on Demand lorsque le magasin de composants local n'a pas les fichiers, et l'objet retourné indique à l'appelant si un redémarrage reste à effectuer.
-
Gérer les utilisateurs et groupes Active Directory avec PowerShell sans parcourir tout l'annuaire
Get-ADUser avec -Filter et -Properties, New-ADUser avec un mot de passe SecureString, Add-ADGroupMember, ainsi que Search-ADAccount/Unlock-ADAccount pour les verrouillages — et pourquoi -Filter * est un piège dans un annuaire de plusieurs dizaines de milliers d'objets.
-
Exécuter une commande sous un autre utilisateur depuis un script : sudo -u, runuser, su -c et -Credential de PowerShell
sudo -u, runuser et su -c exécutent une commande avec un autre identifiant d'utilisateur et de groupe, mais diffèrent selon qu'ils exigent ou non le mot de passe de la cible, qu'ils chargent ou non un environnement de connexion, et selon les personnes autorisées à les appeler ; Start-Process et les cmdlets de remoting de PowerShell utilisent un objet -Credential, et aucun de ces outils ne doit recevoir de mot de passe par un tube ou un argument de ligne de commande.
-
Créer un stockage résilient sur un serveur autonome avec les espaces de stockage et remplacer un disque défaillant
Regrouper des disques physiques avec New-StoragePool, créer un disque virtuel Mirror ou Parity avec New-VirtualDisk, surveiller l'état avec Get-PhysicalDisk et Get-StorageJob, puis appliquer la séquence documentée pour remplacer un disque défaillant sans perdre le pool.
-
Administrer les zones et enregistrements DNS Server avec PowerShell, puis vérifier avec Resolve-DnsName
Lister les zones avec Get-DnsServerZone, ajouter des enregistrements A et CNAME, les lire avec Get-DnsServerResourceRecord, configurer le scavenging et le vieillissement qui suppriment les enregistrements obsolètes, et vider le cache du résolveur, en vérifiant chaque écriture côté client et pas seulement sur le serveur.
-
Bases de l'administration d'IIS avec PowerShell : sites, pools d'applications, journaux et sauvegarde de la configuration
Lister les sites avec Get-IISSite du module IISAdministration, recycler un pool d'applications, savoir où IIS écrit ses journaux par défaut et utiliser appcmd add backup pour sauvegarder applicationHost.config avant une modification de configuration.
-
Fins de ligne, encodages et chemins : ce qui casse quand un fichier change de système d'exploitation
CRLF contre LF, encodages par défaut incohérents de Windows PowerShell 5.1 face à l'UTF-8 sans BOM de PowerShell 7, EBCDIC sur les systèmes de la famille des mainframes IBM, et systèmes de fichiers qui divergent sur la sensibilité à la casse et la longueur maximale des chemins : une liste de points à vérifier avant de supposer qu'un fichier texte ou un chemin se comporte de la même façon sur un autre OS.
-
Hyper-V avec PowerShell : machines virtuelles, points de contrôle et pourquoi un point de contrôle n'est pas une sauvegarde
Get-VM et la structure d'un appel à New-VM, la différence entre points de contrôle standard et de production, Export-VM pour déplacer une VM, les services d'intégration et l'option -ExposeVirtualizationExtensions qui active la virtualisation imbriquée.
-
Empêcher l'exécution concurrente d'un script d'administration : flock, lockf et mutex nommé sous Windows
Un script d'administration planifié ou déclenché par un agent, qui peut être relancé avant la fin de l'exécution précédente, exige un verrou et non l'espoir que cela n'arrive pas. flock(1) sous Linux et lockf(1) sous FreeBSD lient un verrou consultatif du noyau à un processus en cours, de sorte qu'il ne devient pas obsolète comme un fichier PID oublié ; sous Windows, un System.Threading.Mutex nommé joue le même rôle.
-
Gérer le rôle serveur DHCP avec PowerShell : étendues, réservations, autorisation et sauvegarde
Consulter les étendues et les baux avec Get-DhcpServerv4Scope, réserver une adresse avec Add-DhcpServerv4Reservation, autoriser un serveur dans AD avec Add-DhcpServerInDC, aperçu du basculement (failover), et sauvegarde de la configuration avec Backup-DhcpServer avant toute modification risquée.
-
Comparaison des mécanismes d'élévation de privilèges : sudo, doas, UAC, runas et RBAC sous AIX — et comment détecter l'élévation
sudo, doas, l'UAC de Windows et le groupe admin de macOS répondent à la même question — cette session peut-elle agir en administrateur ? — avec des mécanismes différents, et chacun permet à un script de vérifier la réponse de façon spécifique avant de tenter une action privilégiée.
-
Vérifier l'état d'Active Directory avant toute modification : dcdiag, repadmin et les détenteurs de rôles FSMO
Routine de contrôle à exécuter avant toute modification sur un contrôleur de domaine : dcdiag pour les diagnostics locaux, repadmin /replsummary et /showrepl pour la réplication, Get-ADDomainController et netdom query fsmo pour l'inventaire des contrôleurs de domaine et des détenteurs de rôles, et l'importance de la source de temps de l'émulateur PDC.
-
Créer une tâche planifiée avec le module ScheduledTasks : action, déclencheur, principal et codes de résultat
New-ScheduledTaskAction, -Trigger et -Principal se combinent en une tâche enregistrée avec Register-ScheduledTask ; l'exécution sous NT AUTHORITY\SYSTEM ne nécessite aucun mot de passe stocké, et Get-ScheduledTaskInfo, associé aux constantes de résultat documentées du Planificateur de tâches, indique à un agent si la dernière exécution a réellement réussi.
Lisible par machine : JSON