Aller au contenu principal
Ousmane Salifou Lankoandé

MCN du Québec et La Poste du Burkina Faso

SUP-01 — Automatisation des interventions et diagnostics Windows avec PowerShell

Automatisation de contrôles Windows en lecture seule : connectivité, services, journaux, inventaire logiciel, versions, client SCCM/MECM et Windows Update. Le projet s'appuie sur des tâches réellement exercées — installations silencieuses, inventaire, vérification de versions, correctifs et scripts de remédiation.

Période
2015 – aujourd'hui
Mon rôle
Administrateur systèmes et infrastructure / support TI N2-N3
Organisation
MCN du Québec et La Poste du Burkina Faso

Technologies

  • PowerShell
  • Windows 10/11
  • Active Directory
  • SCCM / MECM
  • WinRM
  • Windows Update
Sur cette page
  1. Résumé
  2. Contexte métier et technique
  3. Objectifs d’automatisation
  4. Problématiques de support N2/N3 couvertes
  5. Responsabilités réellement exercées
  6. Architecture logique
  7. Processus de diagnostic
  8. Démonstration technique : Windows-Support-Toolkit
  9. Réalisations techniques de la démonstration
  10. Compétences démontrées
  11. Résultats vérifiables
  12. Captures et documentation technique

Résumé

SUP-01 transpose en une trousse PowerShell de démonstration les activités de support et d’administration Windows que j’ai exercées au Ministère de la Cybersécurité et du Numérique du Québec et à La Poste du Burkina Faso : installations silencieuses, vérification de versions applicatives, inventaire des logiciels, application de correctifs et développement de scripts de remédiation. La trousse automatise les contrôles de premier niveau N2/N3 — connectivité, services, journaux, SCCM/MECM et Windows Update — et restitue des résultats structurés dans un rapport HTML. Elle est volontairement en lecture seule : elle diagnostique et recommande, mais n’applique jamais de correction sans validation humaine.

Distinction importante. Les tâches d'administration et les scripts de remédiation cités ci-dessus sont attestés par mon expérience professionnelle. Le dépôt Windows-Support-Toolkit, ses dix fonctions, ses diagrammes et son rapport HTML sont une démonstration technique personnelle créée pour ce portfolio. Il ne contient aucun code, paramètre ni donnée provenant d'un employeur.

Contexte métier et technique

Dans un parc Windows administré avec Active Directory et SCCM/MECM, un incident poste n’est presque jamais une seule question. Un utilisateur peut signaler qu’une application ne se déploie pas, qu’un correctif manque ou qu’un poste ne répond plus. Derrière ce symptôme peuvent se cacher une perte de connectivité, WinRM fermé, un service arrêté, un client SCCM non assigné à son point de gestion, une stratégie Windows Update injoignable ou une version applicative non conforme.

Le problème du support N2/N3 n’est donc pas l’absence de commandes : c’est leur dispersion et l’absence de trace homogène. SUP-01 organise les vérifications dans un ordre de diagnostic, retourne le même format de résultat pour chaque contrôle et produit un rapport joignable à un billet.

Objectifs d’automatisation

  • Réduire les contrôles manuels répétés à une séquence lisible et reproductible.
  • Distinguer un poste injoignable d’un contrôle réellement en échec grâce au statut Ignore.
  • Vérifier les prérequis d’accès avant d’interroger un poste distant.
  • Inventorier les logiciels et comparer leurs versions à une version minimale attendue.
  • Diagnostiquer les éléments qui empêchent un client SCCM/MECM de recevoir ses politiques ou ses déploiements.
  • Produire une restitution exploitable par le support, sans divulguer de mots de passe ni déclencher de remédiation destructive.

Problématiques de support N2/N3 couvertes

Symptôme observéContrôles structurés par SUP-01Limite volontaire
Poste impossible à administrer à distanceDNS, ICMP, ports 5985/5986/445Le script n’active pas WinRM ni le pare-feu
Application absente ou version ancienneInventaire registre, comparaison de versionsLe script ne déploie ni ne met à jour l’application
SCCM/MECM ne déploie plusService CcmExec, version, site, point de gestion, journaux et cycles documentésLes cycles sont proposés, jamais déclenchés automatiquement
Correctifs non reçusServices, source WSUS/SCCM, dernière recherche, derniers correctifsAucun téléchargement ni installation de mise à jour
Incident difficile à transmettreObjets normalisés, rapport HTML et journal horodatéLa décision et la remédiation restent humaines

Responsabilités réellement exercées

  • Installations silencieuses d’applications.
  • Vérification des versions applicatives.
  • Inventaire des logiciels.
  • Application de correctifs.
  • Développement de scripts de remédiation.

Ces réalisations constituent le socle métier de SUP-01. La trousse de démonstration ne prétend pas être le script de production utilisé chez ces organisations ; elle rend visible la méthode : prérequis, collecte contrôlée, résultats lisibles, recommandations et traçabilité.

Architecture logique

Architecture conceptuelle : un poste d'administration PowerShell s'authentifie auprès d'Active Directory, obtient les autorisations nécessaires puis interroge des postes Windows par WinRM. Les modules lisent services, journaux, client SCCM, registre et Windows Update ; les résultats génèrent un rapport HTML et un journal.
Accès distant et collecte en lecture seule. Les conditions d'accès sont explicites : session élevée, authentification Kerberos, groupe Active Directory donnant les droits d'administration locale et WinRM accessible. Ouvrir le schéma en taille réelle

Conditions d’accès et sécurité

  1. L’opérateur ouvre une session PowerShell élevée avec un compte autorisé.
  2. Active Directory authentifie ce compte ; aucun mot de passe n’est inscrit dans le code ou dans un fichier de journal.
  3. Le compte doit être administrateur local du poste cible — idéalement par un groupe AD dédié, plutôt que par une attribution individuelle.
  4. WinRM / PowerShell Remoting doit être activé et autorisé par pare-feu. Le port 5985 est le cas courant dans un réseau interne de confiance ; le port 5986 est à privilégier lorsqu’une configuration HTTPS est exigée.
  5. La trousse lit les informations ; elle ne modifie ni les services, ni les stratégies, ni les règles de pare-feu.

Processus de diagnostic

Processus de diagnostic : sélection des contrôles, vérification des prérequis, connectivité, contrôles en lecture seule, consolidation des résultats, rapport et recommandations. Si le poste est injoignable, les contrôles ultérieurs sont ignorés. La remédiation est une décision humaine hors de la trousse.
Le diagnostic avant la remédiation. Le statut Ignore évite d'interpréter une absence d'accès comme une panne du composant contrôlé. La trousse s'arrête aux recommandations. Ouvrir le schéma en taille réelle

Démonstration technique : Windows-Support-Toolkit

Architecture de la trousse : un script principal charge un module PowerShell. Les fonctions de diagnostic Windows et de gestion de parc retournent toutes un objet Wst.Resultat ; le module produit un rapport HTML et un journal.
Organisation du dépôt indépendant. Les huit contrôles retournent un objet commun ; le rapport HTML ne dépend donc pas de la fonction qui a produit chaque résultat. Ouvrir le schéma en taille réelle

Le dépôt local est prêt à être publié : C:\Users\Utilisateur\Documents\Windows-Support-Toolkit.

Lien GitHub à compléter après publication : Windows-Support-Toolkit

# Menu interactif, poste local
.\Invoke-SupportToolkit.ps1

# Diagnostic ciblé et rapport associé à un billet
.\Invoke-SupportToolkit.ps1 -ComputerName PC-0042 `
  -Check Connectivite,Services,SCCM `
  -Context 'INC0012345'

# Campagne en lecture seule, sur des postes autorisés
.\Invoke-SupportToolkit.ps1 `
  -ComputerName (Get-Content .\postes.txt) `
  -Check Tous `
  -Credential (Get-Credential)

Fonctions incluses

FamilleFonctionCe qu’elle vérifie
AccèsTest-WstConnectivityDNS, ICMP, ports WinRM et SMB
WindowsGet-WstServiceStateServices arrêtés ou désactivés
WindowsGet-WstEventSummaryErreurs et événements critiques regroupés
ParcGet-WstInstalledSoftwareRegistre 32/64 bits et installations utilisateur, sans Win32_Product
ParcTest-WstApplicationVersionConformité à une version minimale
SCCMTest-WstSccmClientCcmExec, version, site, point de gestion et journal
SCCMGet-WstSccmCycleStatusJournaux client et cycles documentés, non exécutés
CorrectifsTest-WstWindowsUpdateSource WSUS/SCCM, recherche et correctifs
RestitutionNew-WstHtmlReportRapport HTML autonome et sûr à ouvrir hors ligne
TraçabilitéWrite-WstLogJournal horodaté, un fichier par jour

Capture d’exécution et rapport d’exemple

Le rapport d’exemple est généré à partir de données de laboratoire fictives : postes PC-0042 et PC-0043, domaine LABO, adresses 192.0.2.0/24 réservées à la documentation. Aucun nom de poste, compte ou adresse de mon environnement réel n’est publié.

Rapport HTML généré par la trousse. L'exemple illustre le statut normalisé, les détails et les recommandations sans exposer un diagnostic réel. Ouvrir le rapport d'exemple dans un nouvel onglet.

Réalisations techniques de la démonstration

  • Module compatible PowerShell 5.1 et PowerShell 7, sans dépendance externe.
  • Dix fonctions documentées, commentées et organisées une par fichier.
  • Vérification systématique des prérequis ; un poste inaccessible retourne un état exploitable au lieu d’une exception brute.
  • Format Wst.Resultat commun à tous les contrôles : ordinateur, contrôle, statut, résumé, détails, recommandations et horodatage.
  • Inventaire applicatif fondé sur le registre — et non Win32_Product, dont l’interrogation peut déclencher une reconfiguration MSI.
  • Rapport HTML autonome avec échappement des contenus, pour éviter qu’un message de journal ne casse le rendu.
  • Journalisation des opérations, sans mot de passe ni donnée de démonstration réelle dans le dépôt.
  • Exécution réelle validée localement : import du module, les dix fonctions, génération du rapport fictif et vérification de sa reproductibilité.

Compétences démontrées

DomaineDémonstration
PowerShellModule, fonctions avancées, gestion d’erreurs, objets structurés et script d’orchestration
Windows 10/11Services, journalisation, registre, correctifs et Windows Update
Active DirectoryAuthentification Kerberos, délégation des autorisations via groupes
Support N2/N3Ordre de diagnostic, distinction entre échec et contrôle non réalisable, recommandations actionnables
SCCM/MECMSanté du client, point de gestion, journaux, cycles et inventaire applicatif
Sécurité d’administrationÉlévation, WinRM, absence de mot de passe intégré, aucune remédiation automatique
DocumentationREADME GitHub, diagrammes, aide PowerShell intégrée et rapport HTML d’exemple

Résultats vérifiables

  • Dépôt Git local indépendant créé avec un commit initial : Windows-Support-Toolkit.
  • 10 fonctions PowerShell exportées ; syntaxe de tous les scripts validée par le parseur PowerShell.
  • Contrôles exécutés en lecture seule sur le poste local de laboratoire : connectivité, services, journaux, inventaire, client SCCM, journaux SCCM, Windows Update et comparaison de version.
  • Rapport HTML fictif généré deux fois avec le même hachage SHA-256 : résultat reproductible.
  • Aucun gain de productivité chiffré n’est revendiqué : il dépendrait du parc, des droits, du niveau de maturité SCCM et du processus de support.

Captures et documentation technique

Les schémas, le README et le rapport HTML d’exemple constituent la documentation de démonstration. Avant une publication GitHub, remplacer l’URL [À-COMPLÉTER] par votre identifiant GitHub ; aucune donnée d’organisation ne doit être ajoutée au dépôt.