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

S’applique à : Gestionnaire de Configuration (branche actuelle)

Configuration Manager dispose d’une capacité intégrée pour exécuter des scripts PowerShell. PowerShell a l’avantage de créer des scripts sophistiqués et automatisés compris et partagés avec une communauté plus large. Les scripts simplifient la création d’outils personnalisés pour administrer les logiciels et vous permettent d’accomplir rapidement des tâches spécifiques, ce qui vous permet d’effectuer des tâches de grande taille plus facilement et plus régulièrement.

Notes

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 les opérations suivantes :

  • Créez et modifiez des scripts à utiliser avec Configuration Manager.
  • Gérer l’utilisation des scripts via les rôles et les étendues de sécurité.
  • Exécutez des scripts sur des collections ou des ordinateurs Windows locaux individuels.
  • Obtenir des résultats de script agrégés rapides à partir d’appareils clients.
  • Surveillez l’exécution des scripts et affichez les résultats des rapports à partir de la sortie du script.

Avertissement

  • Étant donné la puissance des scripts, nous vous rappelons d’être intentionnel et prudent avec leur utilisation. Nous avons créé 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 sont issus d’une source fiable, afin d’éviter toute exécution involontaire de script. Soyez attentif aux caractères étendus ou à d’autres obfuscations et formez-vous sur la sécurisation des scripts. En savoir plus sur la sécurité des scripts PowerShell
  • Certains logiciels anti-programme malveillant peuvent déclencher par inadvertance des événements sur les fonctionnalités Scripts d’exécuter Configuration Manager ou CMPivot. Il est recommandé d’exclure %windir%\CCM\ScriptStore afin que le logiciel anti-programme malveillant autorise ces fonctionnalités à s’exécuter sans interférences.

Conditions préalables

  • 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 afin d’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 avoir des autorisations créer des autorisations pour les scripts SMS.
  • Pour approuver ou refuser des scripts : votre compte doit avoir des autorisations d’approbation pour les scripts SMS.
  • Pour exécuter des scripts : votre compte doit avoir des autorisations d’exécuter un script pour les collections.

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

Limites

Exécuter des scripts prend actuellement en charge :

  • Langages de script : PowerShell
  • Types de paramètres : integer, string et list.

Avertissement

Sachez que lorsque vous utilisez des paramètres, il ouvre une zone de surface pour un risque potentiel d’attaque par injection PowerShell. Il existe différentes façons d’atténuer et de contourner ce type de 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éfincis. 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 des auteurs de scripts et des approuveurs

Run Scripts utilise le concept d’auteurs de scripts et d’approuveurs de script comme rôles distincts pour l’implémentation et l’exécution d’un script. La séparation des rôles d’auteur et d’approbation permet à un processus important de vérifier l’outil puissant d’exécuter des scripts. Il existe un rôle d’exécution de script supplémentaire qui permet l’exécution de scripts, mais pas la création ou l’approbation de scripts. Voir Créer des rôles de sécurité pour les scripts.

Contrôle des rôles scripts

Par défaut, les utilisateurs ne peuvent pas approuver un script qu’ils ont rédigé. É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 a écrit 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’approbation 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. Éventuellement, 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 entreprises.

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 Hiérarchie Paramètres .
  4. Sous l’onglet Général de la boîte de dialogue Paramètres propriétés, cochez la case Pour les auteurs de scripts, vous avez besoin d’un approuveur de script supplémentaire.

Important

En tant que meilleure pratique, vous ne devez pas autoriser un auteur de script à approuver ses propres scripts. Il doit uniquement être autorisé dans un paramètre d’atelier. Examinez attentivement l’impact potentiel de la modification de ce paramètre dans un environnement de production.

Étendues de sécurité

Run Scripts utilise des étendues de sécurité, une fonctionnalité existante de Configuration Manager, pour contrôler la auteur et l’exécution des scripts en attribuant des balises représentant des groupes d’utilisateurs. Pour plus d’informations sur l’utilisation des étendues de sécurité, voir Configurer l’administrationbasé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 des scripts ne sont pas créés par défaut dans Configuration Manager. Pour créer les rôles d’émetteurs de script, d’auteurs de scripts et d’approuveurs de scripts, suivez les étapes décrites.

  1. Dans la console Configuration Manager, sélectionnez Rôles de sécurité > > d’administration
  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 à prendre uniquement les autorisations que vous souhaitez.
  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 : scripts d’écriture

  • 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 : Assurez-vous que les listes suivantes sont définies sur Oui .
Catégorie Permission State
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 d’écrire des scripts, mais elles ne peuvent pas les approuver ni les exécuter.
  • Autorisations : assurez-vous que les autorisations suivantes sont définies.
Catégorie Permission State
Collection Exécuter le script Non
Site Lecture Oui
SMS Scripts Créer Oui
SMS Scripts Lecture Oui
SMS Scripts Delete Oui
SMS Scripts Modification Oui

Role Name: Script Approvers

  • Description: ces autorisations permettent à ce rôle d’approuver des scripts, mais elles ne peuvent pas les créer ni les exécuter.
  • Autorisations : Assurez-vous que les autorisations suivantes sont définies.
Catégorie Permission State
Collection Exécuter le script Non
Site Lecture Oui
SMS Scripts Lecture Oui
SMS Scripts Approuver Oui
SMS Scripts Modification Oui

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

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

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éer un script, configurez les paramètres suivants :
    • Nom du script : entrez un nom pour le script. Bien que vous pouvez créer plusieurs scripts du même nom, l’utilisation de noms en double 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 des scripts avec l’état En attente d’approbation. Avant de pouvoir exécuter ce script sur les appareils clients, vous devez l’approuver.

Important

Évitez de scripter un redémarrage d’appareil ou un 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 permet le redémarrage des appareils. La colonne de redémarrage en attente peut 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 les paramètres de script pour ; Types de données String , Integer. Des listes de valeurs prédéfines sont également disponibles. Si votre script possède des types de données non pris en compte, 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 possède sa propre boîte de dialogue pour ajouter des détails supplémentaires et la validation. S’il existe un paramètre par défaut dans le script, il est éumé dans l’interface utilisateur du paramètre et vous pouvez le définir. Configuration Manager ne modifiera pas la valeur par défaut, car il ne modifiera jamais directement le script. Vous pouvez l’utiliser comme des « valeurs suggérées pré-remplies » dans l’interface utilisateur, mais Configuration Manager ne donne pas accès aux valeurs « par défaut » au moment de l’utilisation. Vous pouvez contourner cette situation en éditant le script pour qu’il soit correctement modifié par défaut.

Important

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

Il existe un problème connu où les valeurs de paramètres qui incluent ou sont 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 possède une boîte de dialogue Propriétés de paramètre de script pour que vous ajoutiez la validation de 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 de 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 - a short for Regular Expression. Pour plus d’informations sur l’utilisation de l’expression régulière, voir 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 a la place des messages d’erreur de validation système.

Utilisation de la validation des expressions régulières

Une expression régulière est une forme compacte de programmation qui vérifie une chaîne de caractères par rapport à une validation codée. Par exemple, vous pouvez vérifier l’absence d’un caractère alphabétique majuscule dans le champ Prénom en plaçant le champ [^A-Z] 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, voir .NET Regular Expression and Regular Expression Language.

Exemples de script

Voici quelques exemples illustrant les scripts que vous souhaitez 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 raison de votre entrée d’appellation.

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 l’ordinateur 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 maintient pas l’état d’approbation.

Conseil

Ne modifiez pas un script qui s’exécute activement sur les clients. Ils ne terminent pas l’exécution du script d’origine, et il se peut que vous n’obtenez pas les résultats prévus de ces clients.

Modifier un script

  1. Go to the Scripts node under the Software Library workspace.
  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 fermez lorsque vous avez terminé la modification.

Copier un script

  1. Go to the Scripts node under the Software Library workspace.
  2. Sélectionnez le script à copier, puis cliquez sur Copier dans le ruban.
  3. Renommez le script dans le champ Nom du script et a effectuer les modifications supplémentaires dont vous aurez peut-être besoin.
  4. Cliquez sur Suivant pour afficher le résumé, puis fermez 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 une collection. Une fois que l’exécution de votre script commence, il est lancé rapidement par le biais d’un système à priorité élevée qui sort d’attente en une heure. Les résultats du script sont ensuite renvoyés à l’aide d’un système de message 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 Collections de périphériques.
  3. Dans la liste Collections de périphériques, cliquez sur la collection d’appareils sur lesquels vous souhaitez exécuter le script.
  4. Sélectionnez une collection de votre choix, cliquez sur Exécuter le script.
  5. Dans la page Script de l’Assistant Exécuter le script, choisissez un script dans la liste. Seuls les scripts approuvés sont affichés.
  6. Cliquez sur Suivant, puis terminez l’Assistant.

Important

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.

Exécution de l’ordinateur 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 provisioné en conséquence.

Surveillance 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 lors de son exécution, 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 en cours ou de la suppression du script.

Moniteur de script - État d’exécuter des scripts

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

  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 écrit sur les appareils clients. Un code de sortie de script de 0 indique généralement que le script a été correctement lancé.

    Moniteur de script - Script tronqué

Sortie du script

Sortie du script de retour du client à l’aide de la mise en forme JSON en axant les résultats du script vers l’cmdlet ConvertTo-Json. Le format JSON renvoie systématiquement une sortie de script lisible. Pour les scripts qui ne renvoient pas d’objets en sortie, l'ConvertTo-Json convertit la sortie en une chaîne simple que le client renvoie au lieu de JSON.

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

  • Évitez de renvoyer une sortie de script importante, 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 de sous-objet

Vous pouvez afficher la 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 renvoie du texte valide au format JSON ou que la sortie peut être convertie en JSON à l’aide de l’cmdlet ConvertTo-Json PowerShell, affichez la sortie détaillée en tant que sortie JSON ou sortie brute. Sinon, la seule option est Sortie de script.

Exemple : la sortie du script est convertible en JSON valide

Commande : $PSVersionTable.PSVersion

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

Exemple : Sortie de script non valide JSON

Commande : 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 la 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 cmdlets PowerShell suivantes pour automatiser certaines de ces tâches :

Voir aussi