Créer et exécuter des scripts PowerShell à partir de la console Configuration Manager

S’applique à : Configuration Manager (branche actuelle)

Configuration Manager a une capacité intégrée à exécuter des scripts PowerShell. PowerShell offre l’avantage de créer des scripts automatisés sophistiqués qui sont compris et partagés avec une plus grande communauté. Les scripts simplifient la création d’outils personnalisés pour administrer les logiciels et vous permettent d’accomplir rapidement des tâches courantes, ce qui vous permet d’effectuer des tâches volumineuses plus facilement et de manière plus cohérente.

Remarque

Dans les versions 2006 et antérieures, Configuration Manager n’active pas cette fonctionnalité facultative par défaut. Vous devez activer cette fonctionnalité avant de l’utiliser. Pour plus d’informations, consultez Activer les fonctionnalités facultatives des mises à jour.

Avec cette intégration dans Configuration Manager, vous pouvez utiliser la fonctionnalité Exécuter des scripts pour effectuer les opérations suivantes :

  • Créez et modifiez des scripts à utiliser avec Configuration Manager.
  • Gérer l’utilisation des scripts par le biais de rôles et d’étendues de sécurité.
  • Prise en charge des dossiers pour les scripts.
  • Exécutez des scripts sur des regroupements ou sur des PC Windows gérés localement.
  • Planifiez le runtime des scripts au format UTC sur des collections ou sur des PC Windows gérés localement.
  • Obtenez des résultats de script agrégés rapides à partir d’appareils clients.
  • Surveillez l’exécution du script et affichez les résultats des rapports à partir de la sortie du script.

Avertissement

  • Compte tenu de la puissance des scripts, nous vous rappelons d’être intentionnel et prudent avec leur utilisation. Nous avons intégré des protections supplémentaires pour vous aider ; rôles et étendues séparés. Veillez à valider la précision des scripts avant de les exécuter et à vérifier qu’ils proviennent d’une source approuvée, afin d’éviter l’exécution involontaire de scripts. Soyez conscient des caractères étendus ou autres obfuscations et informez-vous sur la sécurisation des scripts. En savoir plus sur la sécurité des scripts PowerShell
  • Certains logiciels anti-programmes malveillants peuvent déclencher par inadvertance des événements sur les fonctionnalités d’exécution des scripts de Configuration Manager ou CMPivot. Il est recommandé d’exclure %windir%\CCM\ScriptStore afin que le logiciel anti-programme malveillant permette à ces fonctionnalités de s’exécuter sans interférence.

Configuration requise

  • Pour exécuter des scripts PowerShell, le client doit exécuter PowerShell version 3.0 ou ultérieure. Toutefois, si un script que vous exécutez contient des fonctionnalités d’une version ultérieure de PowerShell, le client sur lequel vous exécutez le script doit exécuter cette version de PowerShell.
  • Les clients Configuration Manager doivent exécuter le client à partir de la version 1706 ou ultérieure pour exécuter des scripts.
  • Pour utiliser des scripts, vous devez être membre du rôle de sécurité Configuration Manager approprié.
  • Pour importer et créer des scripts, votre compte doit disposer des autorisations Créer pour les scripts SMS.
  • Pour approuver ou refuser des scripts , votre compte doit disposer des autorisations Approuver pour les scripts SMS.
  • Pour exécuter des scripts , votre compte doit disposer des autorisations Exécuter le script pour les collections.

Pour plus d’informations sur les rôles de sécurité Configuration Manager :
Étendues de sécurité pour les scripts
d’exécutionRôles de sécurité pour les scripts
d’exécution Principes de base de l’administration basée sur les rôles.

Limitations

Run Scripts prend actuellement en charge :

  • Langages de script : PowerShell
  • Types de paramètres : entier, chaîne et list.

Avertissement

N’oubliez pas que lorsque vous utilisez des paramètres, cela ouvre une surface d’exposition pour les risques potentiels d’attaque par injection de PowerShell. Il existe différentes façons d’atténuer et de contourner les problèmes, comme l’utilisation d’expressions régulières pour valider l’entrée de paramètre ou l’utilisation de paramètres prédéfinis. La meilleure pratique courante consiste à ne pas inclure de secrets dans vos scripts PowerShell (aucun mot de passe, etc.). En savoir plus sur la sécurité des scripts PowerShell

Exécuter les auteurs de scripts et les approbateurs

Exécuter des scripts utilise le concept d’auteurs de scripts et d’approbateurs de script comme rôles distincts pour l’implémentation et l’exécution d’un script. Le fait d’avoir les rôles d’auteur et d’approbateur séparés permet une vérification de processus importante pour l’outil puissant qu’est Exécuter des scripts. Il existe un rôle d’exécuteur de script supplémentaire qui permet l’exécution de scripts, mais pas la création ou l’approbation de scripts. Consultez Créer des rôles de sécurité pour les scripts.

Contrôle des rôles de scripts

Par défaut, les utilisateurs ne peuvent pas approuver un script qu’ils ont créé. Étant donné que les scripts sont puissants, polyvalents et potentiellement déployés sur de nombreux appareils, vous pouvez séparer les rôles entre la personne qui crée le script et la personne qui approuve le script. Ces rôles offrent un niveau de sécurité supplémentaire contre l’exécution d’un script sans supervision. Vous pouvez désactiver l’approbation secondaire pour faciliter les tests.

Approuver ou refuser un script

Les scripts doivent être approuvés par le rôle d’approbateur de script avant de pouvoir être exécutés. Pour approuver un script :

  1. Dans la console Configuration Manager, cliquez sur Bibliothèque de logiciels.
  2. Dans l’espace de travail Bibliothèque de logiciels , cliquez sur Scripts.
  3. Dans la liste Script , choisissez le script que vous souhaitez approuver ou refuser, puis, sous l’onglet Accueil , dans le groupe Script , cliquez sur Approuver/Refuser.
  4. Dans la boîte de dialogue Approuver ou refuser le script , sélectionnez Approuver ou Refuser pour le script. Si vous le souhaitez, entrez un commentaire sur votre décision. Si vous refusez un script, il ne peut pas être exécuté sur les appareils clients.
    Script - Approbation
  5. Suivez les instructions de l’Assistant. Dans la liste Script , la colonne État d’approbation change en fonction de l’action que vous avez effectuée.

Autoriser les utilisateurs à approuver leurs propres scripts

Cette approbation est principalement utilisée pour la phase de test du développement de scripts.

  1. Dans la console Configuration Manager, cliquez sur Administration.
  2. Dans l’espace de travail Administration , développez Configuration du site, puis cliquez sur Sites.
  3. Dans la liste des sites, choisissez votre site, puis, sous l’onglet Accueil , dans le groupe Sites , cliquez sur Paramètres de hiérarchie.
  4. Sous l’onglet Général de la boîte de dialogue Propriétés des paramètres de hiérarchie , décochez la case Les auteurs de script nécessitent un approbateur de script supplémentaire.

Importante

Il est recommandé de ne pas autoriser un auteur de script à approuver ses propres scripts. Il doit être autorisé uniquement dans un paramètre de laboratoire. Examinez attentivement l’impact potentiel de la modification de ce paramètre dans un environnement de production.

Étendues de sécurité

Exécuter des scripts utilise des étendues de sécurité, une fonctionnalité existante de Configuration Manager, pour contrôler la création et l’exécution des scripts via l’attribution de balises qui représentent des groupes d’utilisateurs. Pour plus d’informations sur l’utilisation des étendues de sécurité, consultez Configurer l’administration basée sur les rôles pour Configuration Manager.

Créer des rôles de sécurité pour les scripts

Les trois rôles de sécurité utilisés pour l’exécution de scripts ne sont pas créés par défaut dans Configuration Manager. Pour créer les rôles d’exécuteurs de scripts, d’auteurs de scripts et d’approbateurs de script, suivez les étapes décrites.

  1. Dans la console Configuration Manager, accédez à Administration>Security>Roles
  2. Cliquez avec le bouton droit sur un rôle, puis cliquez sur Copier. Des autorisations sont déjà attribuées au rôle que vous copiez. Veillez à ne prendre que les autorisations souhaitées.
  3. Donnez au rôle personnalisé un Nom et une Description.
  4. Attribuez au rôle de sécurité les autorisations décrites ci-dessous.

Autorisations de rôle de sécurité

Nom du rôle : Exécuteurs de script

  • Description : ces autorisations permettent à ce rôle d’exécuter uniquement des scripts précédemment créés et approuvés par d’autres rôles.
  • Autorisations: Vérifiez que les éléments suivants sont définis sur Oui.
Catégorie Autorisation État
Collection Exécuter le script Oui
Site Lecture Oui
SMS Scripts Lecture Oui

Nom du rôle : Auteurs de scripts

  • Description : ces autorisations permettent à ce rôle de créer des scripts, mais ils ne peuvent pas les approuver ou les exécuter.
  • Autorisations : vérifiez que les autorisations suivantes sont définies.
Catégorie Autorisation État
Collection Exécuter le script Non
Site Lecture Oui
SMS Scripts Créer Oui
SMS Scripts Lecture Oui
SMS Scripts Supprimer Oui
SMS Scripts Modifier Oui

Nom du rôle : Approbateurs de script

  • Description : ces autorisations permettent à ce rôle d’approuver des scripts, mais ils ne peuvent pas les créer ou les exécuter.
  • Autorisations: Vérifiez que les autorisations suivantes sont définies.
Catégorie Autorisation État
Collection Exécuter le script Non
Site Lecture Oui
SMS Scripts Lecture Oui
SMS Scripts Approuver Oui
SMS Scripts Modifier Oui

Exemple d’autorisations de scripts SMS pour le rôle d’auteurs de scripts

Exemple d’autorisations de scripts SMS pour le rôle d’auteurs de scripts

Prise en charge des dossiers pour les scripts

À partir de la version 2403, vous pouvez organiser les scripts à l’aide de dossiers. Cette modification permet une meilleure catégorisation et une meilleure gestion des scripts.

Ouvrez la console Configuration Manager et accédez à l’espace de travail Bibliothèque de logiciels. Dans le ruban ou le menu contextuel, dans Scripts, sélectionnez l’une des options suivantes :

  • Créer un dossier
  • Supprimer le dossier
  • Renommer le dossier
  • Déplacer des dossiers
  • Définir des étendues de sécurité

Créer un script

  1. Dans la console Configuration Manager, cliquez sur Bibliothèque de logiciels.
  2. Dans l’espace de travail Bibliothèque de logiciels , cliquez sur Scripts.
  3. Sous l’onglet Accueil , dans le groupe Créer , cliquez sur Créer un script.
  4. Dans la page Script de l’Assistant Création d’un script , configurez les paramètres suivants :
    • Nom du script : entrez un nom pour le script. Bien que vous puissiez créer plusieurs scripts portant le même nom, l’utilisation de noms en double vous complique la recherche du script dont vous avez besoin dans la console Configuration Manager.
    • Langage de script : actuellement, seuls les scripts PowerShell sont pris en charge.
    • Importer : importez un script PowerShell dans la console. Le script s’affiche dans le champ Script .
    • Effacer : supprime le script actuel du champ Script.
    • Script : affiche le script actuellement importé. Vous pouvez modifier le script dans ce champ si nécessaire.
  5. Suivez les instructions de l’Assistant. Le nouveau script s’affiche dans la liste Script avec l’état En attente d’approbation. Avant de pouvoir exécuter ce script sur les appareils clients, vous devez l’approuver.

Importante

Évitez de générer un script de redémarrage d’appareil ou de redémarrage de l’agent Configuration Manager lors de l’utilisation de la fonctionnalité Exécuter des scripts. Cela peut entraîner un état de redémarrage continu. Si nécessaire, des améliorations ont été apportées à la fonctionnalité de notification du client qui permettent le redémarrage des appareils. La colonne redémarrage en attente peut vous aider à identifier les appareils qui ont besoin d’un redémarrage.

Paramètres de script

L’ajout de paramètres à un script offre une flexibilité accrue pour votre travail. Vous pouvez inclure jusqu’à 10 paramètres. L’exemple suivant décrit la fonctionnalité Exécuter des scripts avec des paramètres de script pour : Types de données String, Integer . Des listes de valeurs prédéfinies sont également disponibles. Si votre script a des types de données non pris en charge, vous recevez un avertissement.

Dans la boîte de dialogue Créer un script , cliquez sur Paramètres de script sous Script.

Chacun des paramètres de votre script a sa propre boîte de dialogue pour ajouter des détails et une validation supplémentaires. S’il existe un paramètre par défaut dans le script, il sera énuméré dans l’interface utilisateur du paramètre et vous pouvez le définir. Configuration Manager ne remplace pas la valeur par défaut, car il ne modifie jamais directement le script. Vous pouvez considérer cela comme des « valeurs suggérées préremplies » sont fournies dans l’interface utilisateur, mais Configuration Manager ne fournit pas l’accès aux valeurs « par défaut » au moment de l’exécution. Vous pouvez contourner ce problème en modifiant le script pour avoir les valeurs par défaut correctes.

Importante

Les valeurs de paramètre ne peuvent pas contenir un seul guillemet.

Il existe un problème connu où les valeurs de paramètre qui incluent ou sont placées entre guillemets simples ne sont pas transmises correctement au script. Lorsque vous spécifiez des valeurs de paramètre par défaut contenant un espace dans un script, utilisez plutôt des guillemets doubles. Lorsque vous spécifiez des valeurs de paramètre par défaut lors de la création ou de l’exécution d’un script, il n’est pas nécessaire d’entourer la valeur par défaut entre guillemets doubles ou simples, que la valeur contienne ou non un espace.

Validation des paramètres

Chaque paramètre de votre script a une boîte de dialogue Propriétés du paramètre de script qui vous permet d’ajouter une validation pour ce paramètre. Après avoir ajouté la validation, vous devez obtenir des erreurs si vous entrez une valeur pour un paramètre qui ne répond pas à sa validation.

Exemple : FirstName

Dans cet exemple, vous pouvez définir les propriétés du paramètre de chaîne , FirstName.

Paramètres de script - chaîne

La section validation de la boîte de dialogue Propriétés du paramètre de script contient les champs suivants pour votre utilisation :

  • Longueur minimale : nombre minimal de caractères du champ FirstName .
  • Longueur maximale : nombre maximal de caractères du champ FirstName
  • RegEx : abréviation de Expression régulière. Pour plus d’informations sur l’utilisation de l’expression régulière, consultez la section suivante, Utilisation de la validation d’expression régulière.
  • Erreur personnalisée : utile pour ajouter votre propre message d’erreur personnalisé qui remplace tous les messages d’erreur de validation système.

Utilisation de la validation d’expression régulière

Une expression régulière est une forme compacte de programmation permettant de vérifier une chaîne de caractères par rapport à une validation encodée. Par exemple, vous pouvez vérifier l’absence d’un caractère alphabétique majuscule dans le champ FirstName en plaçant [^A-Z] dans le champ RegEx .

Le traitement des expressions régulières pour cette boîte de dialogue est pris en charge par le .NET Framework. Pour obtenir des conseils sur l’utilisation d’expressions régulières, consultez Expression régulière .NET et Langage d’expression régulière.

Exemples de script

Voici quelques exemples qui illustrent les scripts que vous souhaiterez peut-être utiliser avec cette fonctionnalité.

Créer un dossier et un fichier

Ce script crée un dossier et un fichier dans le dossier, en fonction de votre entrée de nommage.

Param(
[Parameter(Mandatory=$True)]
[string]$FolderName,
[Parameter(Mandatory=$True)]
[string]$FileName
)

New-Item $FolderName -type directory
New-Item $FileName -type file

Obtenir la version du système d’exploitation

Ce script utilise WMI pour interroger la machine sur sa version du système d’exploitation.

Write-Output (Get-WmiObject -Class Win32_operatingSystem).Caption

Modifier ou copier des scripts PowerShell

Vous pouvez modifier ou copier un script PowerShell existant utilisé avec la fonctionnalité Exécuter des scripts . Au lieu de recréer un script que vous devez modifier, modifiez-le directement. Les deux actions utilisent la même expérience d’Assistant que lorsque vous créez un script. Lorsque vous modifiez ou copiez un script, Configuration Manager ne conserve pas l’état d’approbation.

Conseil

Ne modifiez pas un script qui s’exécute activement sur les clients. Ils ne termineront pas l’exécution du script d’origine et vous risquez de ne pas obtenir les résultats prévus à partir de ces clients.

Modifier un script

  1. Accédez au nœud Scripts sous l’espace de travail Bibliothèque de logiciels .
  2. Sélectionnez le script à modifier, puis cliquez sur Modifier dans le ruban.
  3. Modifiez ou réimportez votre script dans la page Détails du script .
  4. Cliquez sur Suivant pour afficher le résumé , puis sur Fermer lorsque vous avez terminé la modification.

Copier un script

  1. Accédez au nœud Scripts sous l’espace de travail Bibliothèque de logiciels .
  2. Sélectionnez le script à copier, puis cliquez sur Copier dans le ruban.
  3. Renommez le script dans le champ Nom du script et apportez les modifications supplémentaires nécessaires.
  4. Cliquez sur Suivant pour afficher le résumé , puis sur Fermer lorsque vous avez terminé la modification.

Exécuter un script

Une fois qu’un script est approuvé, il peut être exécuté sur un seul appareil ou un regroupement. Une fois que l’exécution de votre script commence, il est lancé rapidement par le biais d’un système de haute priorité qui expire en une heure. Les résultats du script sont ensuite retournés à l’aide d’un système de messages d’état.

Pour sélectionner une collection de cibles pour votre script :

  1. Dans la console Configuration Manager, cliquez sur Ressources et conformité.
  2. Dans l’espace de travail Ressources et conformité, cliquez sur Regroupements d’appareils.
  3. Dans la liste Regroupements d’appareils, cliquez sur le regroupement d’appareils sur lesquels vous souhaitez exécuter le script.
  4. Sélectionnez la collection de votre choix, puis cliquez sur Exécuter le script.
  5. Dans la page Script de l’Assistant Exécution d’un script , choisissez un script dans la liste. Seuls les scripts approuvés sont affichés.
  6. Cliquez sur Suivant, puis terminez l’Assistant.

Importante

Si un script ne s’exécute pas, par exemple parce qu’un appareil cible est désactivé pendant la période d’une heure, vous devez l’exécuter à nouveau.

Planifier le runtime des scripts

À partir de Configuration Manager Current Branch version 2309, vous pouvez maintenant planifier le runtime des scripts au format UTC.

Planifier l’exécution de script sur une collection :

  1. Dans la console Configuration Manager, cliquez sur Ressources et conformité.

  2. Dans l’espace de travail Ressources et conformité, cliquez sur Regroupements d’appareils.

  3. Dans la liste Regroupements d’appareils, cliquez sur le regroupement d’appareils sur lesquels vous souhaitez planifier le script.

  4. Sélectionnez la collection de votre choix, puis cliquez sur Exécuter le script.

  5. Dans la page Planification, cochez la case Planifier l’exécution du script à l’heure et spécifiez l’heure de planification au format UTC.

  6. Vérifiez les détails affichés dans la page récapitulative.

  7. Cliquez sur Suivant, puis terminez l’Assistant.

    Capture d’écran du script - planification.

Remarque

Un maximum de vingt-cinq scripts planifiés seront traités toutes les 5 minutes.

Exécution de la machine cible

Le script est exécuté en tant que compte système ou ordinateur sur le ou les clients ciblés. Ce compte dispose d’un accès réseau limité. Tout accès aux systèmes et emplacements distants par le script doit être approvisionné en conséquence.

Analyse des scripts

Une fois que vous avez lancé l’exécution d’un script sur une collection d’appareils, utilisez la procédure suivante pour surveiller l’opération. Vous pouvez surveiller un script en temps réel à mesure qu’il s’exécute, puis revenir à l’état et aux résultats d’une exécution de script d’exécution donnée. Les données d’état du script sont nettoyées dans le cadre de la tâche de maintenance Supprimer les opérations clientes anciennes ou de la suppression du script.

Moniteur de script - État de l’exécution du script

  1. Dans la console Configuration Manager, cliquez sur Surveillance.

  2. Dans l’espace de travail Surveillance , cliquez sur État du script.

  3. Dans la liste État du script , vous affichez les résultats de chaque script que vous avez exécuté sur les appareils clients. Un code de sortie de script 0 indique généralement que le script s’est exécuté avec succès.

    Moniteur de script - Script tronqué

Planifier l’analyse des scripts sur une collection

  1. Dans la console Configuration Manager, cliquez sur Surveillance.

  2. Dans l’espace de travail Surveillance, cliquez sur le nœud Scripts planifiés.

  3. Une nouvelle ligne s’affiche dans la liste des scripts planifiés.

  4. Vérifiez qu’une nouvelle ligne a été affichée dans la liste des scripts planifiés. La colonne d’état doit avoir la valeur Scheduled. La colonne ClientOperationId doit être vide. Vérifiez que les autres colonnes telles que Nom du script, Heure de planification, etc. ont des valeurs appropriées.

  5. Après l’heure de planification, actualisez le nœud Scripts planifiés . La colonne d’état doit avoir la valeur Opération cliente lancée avec succès. La colonne ClientOperationId doit avoir une valeur entière.

  6. Dans l’espace de travail Surveillance, cliquez sur le nœud État du script. Vérifiez que la nouvelle ligne a été affichée dans la liste et que ClientOperationId est égal au ClientOperationId du nœud Scripts planifiés .

  7. Cliquez sur Afficher l’état et vérifiez que la sortie du script s’affiche.

    Capture d’écran du script - planifier la surveillance,

Sortie du script

La sortie du script de retour du client à l’aide de la mise en forme JSON en pipant les résultats du script vers l’applet de commande ConvertTo-Json . Le format JSON retourne systématiquement une sortie de script lisible. Pour les scripts qui ne retournent pas d’objets en tant que sortie, l’applet de commande ConvertTo-Json convertit la sortie en chaîne simple que le client retourne au lieu de JSON.

  • Les scripts qui obtiennent un résultat inconnu, ou où le client était hors connexion, ne s’affichent pas dans les graphiques ou le jeu de données.

  • Évitez de retourner une sortie de script volumineuse, car elle est tronquée à 4 Ko.

  • Convertissez un objet enum en valeur de chaîne dans les scripts afin qu’ils soient correctement affichés dans la mise en forme JSON.

    Convertir un objet enum en une valeur sting

Vous pouvez afficher une sortie de script détaillée au format JSON brut ou structuré. Cette mise en forme facilite la lecture et l’analyse de la sortie. Si le script retourne du texte valide au format JSON ou si la sortie peut être convertie en JSON à l’aide de l’applet de commande PowerShell ConvertTo-Json , affichez la sortie détaillée sous la forme Sortie JSON ou Sortie brute. Sinon, la seule option est Sortie du script.

Exemple : la sortie du script est convertible en JSON valide

Commander: $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      16299  551

Exemple : La sortie du script n’est pas json valide

Commander: Write-Output (Get-WmiObject -Class Win32_OperatingSystem).Caption

Microsoft Windows 10 Enterprise

Fichiers journaux

  • Sur le client, par défaut dans C :\Windows\CCM\logs :

    • Scripts.log
    • CcmMessaging.log
  • Sur le mp, par défaut, dans C :\SMS_CCM\Logs :

    • MP_RelayMsgMgr.log
  • Sur le serveur de site, par défaut dans C :\Program Files\Configuration Manager\Logs :

    • SMS_Message_Processing_Engine.log

Automatiser avec Windows PowerShell

Vous pouvez utiliser les applets de commande PowerShell suivantes pour automatiser certaines de ces tâches :

Voir aussi