Contexte

Vous retrouverez dans cette page les erreurs rencontrées lors de la configuration d'un Windows supervisé pour le pack windows-by-WinRM__shinken : exécution du script, service WinRM, compte de supervision, permissions et Active Directory.

Pour les erreurs remontées par les checks une fois la supervision en place (Transport error, Authentication failed, AccessDenied...), consultez la page Erreurs du pack windows-by-WinRM__shinken.

Les erreurs

Exécution du script

Impossible de charger le fichier <nom_du_script.ps1> car l'exécution de scripts est désactivée

Le script Configure-Host.ps1 refuse de démarrer. PowerShell bloque par défaut les scripts non signés numériquement via sa stratégie d'exécution (Execution Policy). Aucune modification n'a été appliquée sur la machine.

Impossible de charger le fichier C:\<nom_du_script.ps1>, car l'exécution de scripts
est désactivée sur ce système.
    + CategoryInfo          : Erreur de sécurité : (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

Mots-clés : UnauthorizedAccess · PSSecurityException · Execution Policy · l'exécution de scripts est désactivée · n'est pas signé numériquement

Survient à l'étape : Étape 3 — Autoriser l'exécution du script — voir Étape 3 — Autoriser l'exécution du script sur la page de configuration.

Résolution :

Autorisez l'exécution pour la session courante uniquement :

Set-ExecutionPolicy Unrestricted -Scope Process

-Scope Process ne modifie que la fenêtre PowerShell ouverte : aucun impact persistant sur la machine, la stratégie d'origine est rétablie à la fermeture. Pour connaître la stratégie en vigueur :

Get-ExecutionPolicy -List

WSManFault – Le type de connexion réseau défini sur cet ordinateur est Public

winrm quickconfig s'interrompt sans configurer WinRM. Windows refuse d'activer la gestion à distance tant qu'au moins une carte réseau est en profil Public. Le cas est fréquent sur Windows 10 et Windows 11, où une carte non identifiée bascule automatiquement dans ce profil.

WSManFault
    Message = Le client WinRM ne peut pas traiter la demande. Le type de connexion réseau
    défini sur cet ordinateur est Public. Dans ce type de réseau, le pare-feu bloque le
    pilote WinRM.
Error number:  -2144108183 0x80338169

Mots-clés : WSManFault · 0x80338169 · -2144108183 · connexion réseau · Public · le pare-feu bloque le pilote WinRM

Survient à l'étape : Étape 4 — Lancer le script, ou B.1 en configuration manuelle — voir Prérequis sur la page de configuration.

Résolution :

Identifiez la carte concernée :

Get-NetConnectionProfile

La carte fautive est celle dont NetworkCategory vaut Public :

Name             : Network
InterfaceAlias   : Ethernet
InterfaceIndex   : 6
NetworkCategory  : Public
IPv4Connectivity : Internet
IPv6Connectivity : NoTraffic

Basculez-la en Privé (ou Domaine si la machine est jointe à un annuaire), en remplaçant le nom de l'interface :

Set-NetConnectionProfile -InterfaceAlias "Ethernet" -NetworkCategory Private

Relancez Get-NetConnectionProfile : NetworkCategory doit désormais afficher Private.

Sur un serveur en production, ce changement de profil peut modifier les règles de pare-feu appliquées. Vérifiez vos politiques internes avant de le réaliser.

Service WinRM, compte et permissions

Le service WinRM est arrêté après chaque redémarrage

La supervision fonctionne, puis tous les checks de la machine tombent en erreur après un redémarrage. Sur Windows 10 et Windows 11, le service WinRM est configuré en démarrage manuel par défaut : il ne se relance pas tout seul.

Status   Name               DisplayName
------   ----               -----------
Stopped  WinRM              Gestion à distance de Windows (Gestion WS)

Mots-clés : WinRM · Stopped · StartupType · Manual · connection refused · request timed out

Survient à l'étape : Prérequis — 3. Le service WinRM est actif — voir Prérequis sur la page de configuration.

Résolution :

Set-Service -Name WinRM -StartupType Automatic
Start-Service WinRM
Get-Service WinRM

Le service doit alors apparaître Running :

Status   Name               DisplayName
------   ----               -----------
Running  WinRM              Gestion à distance de Windows (Gest...

Côté Shinken, cette panne se manifeste par une erreur Transport error : connection refused ou request timed out sur tous les checks de l'hôte.

Le nom de groupe local spécifié est introuvable – net localgroup

L'ajout du compte de supervision au groupe Utilisateurs de l’Analyseur de performances échoue, alors que le nom paraît correct à l'écran. Sur un Windows en français, ce groupe s'écrit avec une apostrophe typographique ( U+2019 ) et non avec l'apostrophe droite ' ( U+0027 ) de la touche 4 du clavier. Retaper la commande à la main produit donc un nom que Windows ne reconnaît pas.

net localgroup "Utilisateurs de l'Analyseur de performances" shinken_user /ADD
L’erreur système 1376 s’est produite.

Le groupe local spécifié n’existe pas.

Mots-clés : net localgroup · erreur système 1376 · Le groupe local spécifié n’existe pas · Analyseur de performances · Performance Monitor Users · apostrophe typographique · U+2019

Survient à l'étape : B.6 — Ajouter l'utilisateur aux groupes — voir B.6 — Ajouter l'utilisateur aux groupes sur la page de configuration.

Résolution :

  • Copiez-collez la commande depuis la page de configuration, dont le nom de groupe porte la bonne apostrophe, ou
  • saisissez l'apostrophe avec ALT + 0146 au pavé numérique — elle est différente de celle de la touche 4, ou
  • utilisez le nom anglais du groupe, qui ne contient aucune apostrophe :
net localgroup "Performance Monitor Users" shinken_user /ADD

Ce piège ne concerne que les Windows en français. Les noms anglais — Performance Monitor Users, Remote Management Users, Event Log Readers — ne contiennent aucune apostrophe.

Pour lire le nom exact tel que Windows le stocke :

(Get-LocalGroup | Where-Object Name -like "*Analyseur*").Name

Pour vérifier l'appartenance effective du compte :

net user shinken_user

La supervision s'arrête brutalement du jour au lendemain

Tous les checks d'une machine — ou de l'ensemble du parc si le compte est partagé — passent en erreur simultanément, sans qu'aucune configuration n'ait été modifiée. Le mot de passe du compte de supervision a expiré conformément à la politique de sécurité du domaine ou de la machine.

UNKNOWN – Authentication NTLM failed : Unauthorized

Mots-clés : Authentication failed · Unauthorized · mot de passe expiré · PasswordExpired · PasswordNeverExpires

Survient à l'étape : Étape 4 — Gérer l'expiration du mot de passe — voir Gérer l'expiration du mot de passe sur la page de configuration.

Résolution :

Vérifiez l'état du compte :

net user shinken_user | findstr /C:"expire"

Redéfinissez le mot de passe, puis empêchez son expiration :

$secPass = ConvertTo-SecureString "VotreMotDePasse" -AsPlainText -Force
.\Configure-Host.ps1 -UserName "shinken_user" -Password $secPass -PasswordNeverExpires

Si le mot de passe est déjà expiré, activer -PasswordNeverExpires ne suffit pas à débloquer le compte : il faut aussi redéfinir le mot de passe. Pensez à le mettre à jour dans le Synchronizer côté Shinken.

Les permissions ne semblent pas prises en compte

Les droits viennent d'être accordés au compte de supervision, mais les checks échouent toujours avec une erreur d'accès refusé. Les jetons de connexion déjà ouverts conservent les anciennes autorisations tant que les services ne sont pas relancés.

UNKNOWN – Response fault error: Code: s:Sender, Subcode: w:AccessDenied

Mots-clés : AccessDenied · Permission denied · accès refusé · winmgmt · WinRM · SDDL

Survient à l'étape : B.8 — Appliquer les permissions — voir B.8 — Appliquer les permissions sur la page de configuration.

Résolution :

Redémarrez les deux services concernés :

Restart-Service winmgmt -Force
Restart-Service WinRM -Force

Si l'erreur persiste, patientez quelques minutes ou redémarrez la machine : certains jetons ne sont libérés qu'à l'expiration de leur cache. En Active Directory, laissez également le temps à la réplication de se propager entre contrôleurs de domaine.

Active Directory

Le conteneur cible « CN=Users » est inaccessible – création d'OU impossible

Le script s'arrête au moment de créer l'unité d'organisation dédiée « Shinken supervision users ». Le paramètre -OUPath pointe vers CN=Users, qui est un conteneur et non une unité d'organisation : Active Directory interdit d'y créer une OU.

[KO] Compte et groupe AD : Erreur : Impossible de créer l'OU 'Shinken supervision users' sous 'CN=Users,DC=exemple,DC=local' : Exception calling "CommitChanges" with "0" argument(s): "There is a naming violation.
" Un conteneur tel que CN=Users ne peut pas héberger d'unité d'organisation ; visez une véritable OU avec -OUPath.

Mots-clés : CN=Users · -OUPath · naming violation · There is a naming violation · Impossible de créer l'OU · unité d'organisation · Shinken supervision users

Survient à l'étape : Étape 4 — Spécificités Active Directory — voir Spécificités Active Directory sur la page de configuration.

Dans le déroulé du script :

[3/11] Compte et groupe Active Directory
      Annuaire : DC=exemple,DC=local (via DC01.exemple.local)
Étape Compte et groupe AD échouée
======================================================================
RÉSUMÉ DES ÉTAPES
======================================================================
[OK] Langue en-US fr-FR : Étape réussie
[OK] WinRM quickconfig : Étape réussie
[KO] Compte et groupe AD : Erreur : Impossible de créer l'OU 'Shinken supervision users' sous 'CN=Users,DC=exemple,DC=local' : ...

Résolution :

Visez une véritable unité d'organisation :

.\Configure-Host.ps1 -Default -Domain -OUPath "OU=Utilisateurs,DC=exemple,DC=local"

Sans -OUPath, l'OU dédiée est créée à la racine du domaine : c'est le comportement par défaut, et il fonctionne dans la majorité des cas.

Aucun identifiant de domaine utilisable – échec en mode non interactif

Lancé à distance ou par tâche planifiée sur une machine du domaine, le script s'arrête avant toute modification. Il ne dispose pas d'identifiants pour écrire dans l'annuaire et ne peut pas les demander : une invite bloquerait l'exécution automatisée.

Aucun identifiant de domaine utilisable.
Fournissez-en un de l'une de ces façons :
  - paramètre -DomainCredential (recommandé pour un déclenchement distant) ;
  - exécution sous un compte de domaine habilité (tâche planifiée) ;
  - mode -Interactive, qui demandera les identifiants.

Mots-clés : -DomainCredential · identifiant de domaine · annuaire · Invoke-Command · tâche planifiée · non interactif

Survient à l'étape : Étape 4 — Spécificités Active Directory — voir Spécificités Active Directory sur la page de configuration.

Résolution :

Fournissez explicitement des identifiants habilités à écrire dans l'annuaire :

$cred = Get-Credential
.\Configure-Host.ps1 -Default -Domain -DomainCredential $cred

En mode -Interactive, ou lorsque la session courante dispose déjà des droits d'écriture dans l'annuaire, -DomainCredential est inutile.

Après la configuration

Le check Service $KEY$ State by WinRM remonte une erreur

Les autres checks de la machine fonctionnent, mais la supervision d'un service précis échoue. Le compte de supervision n'a pas l'accès en lecture au service demandé : seuls scmanager, W32Time et WinRM sont autorisés par défaut.

UNKNOWN – Command execution Failed. Permission denied.

Mots-clés : Service $KEY$ State · Permission denied · -ServicesName · sc.exe sdshow · scmanager

Survient à l'étape : Étape 4 — Configurer les services à superviser — voir Configurer les services à superviser sur la page de configuration.

Résolution :

Relancez le script en indiquant le ou les services à autoriser :

.\Configure-Host.ps1 -UserName "shinken_user" -Password $secPass -ServicesName "MonService","AutreService"

Pour vérifier les droits posés sur un service :

sc.exe sdshow MonService

Le nom à fournir est le nom court du service (colonne Name), pas son nom d'affichage. Pour le retrouver :

Get-Service | Where-Object DisplayName -like "*MonApplication*"