- PowerShell permet une automatisation très puissante, même avec des comptes sans privilèges d'administrateur, à condition que les scripts soient conçus en tenant compte du contexte de sécurité disponible.
- Le Planificateur de tâches Windows est essentiel pour exécuter automatiquement des scripts PowerShell, en contrôlant les planifications, les conditions et le nombre d'exécutions.
- Une configuration appropriée des politiques d'exécution, des autorisations minimales et de la signature des scripts réduit les risques et rend l'automatisation sûre et maintenable.
- En combinant PowerShell, les tâches planifiées et les outils d'accès à distance, vous pouvez tout gérer, des tâches locales simples à la gestion avancée de Microsoft 365 et IIS.
Si vous vous demandez comment Automatisez des tâches dans PowerShell sans être administrateur.Vous n'êtes pas seul. C'est un scénario très courant : vous devez exécuter des scripts, planifier des nettoyages, générer des rapports ou gérer Microsoft 365, mais vous ne disposez pas de privilèges élevés sur la machine ou vous ne souhaitez tout simplement pas les utiliser pour des raisons de sécurité.
La bonne nouvelle est qu'en vous familiarisant avec les outils offerts par Windows (PowerShell, le Planificateur de tâches et certaines options de ligne de commande), vous pouvez mettre en place un système de automatisation assez puissante sans toucher au compte administrateurIl est toutefois essentiel de comprendre le contexte dans lequel les scripts sont exécutés, les limitations auxquelles vous êtes confrontés sans privilèges élevés, et comment tout configurer pour éviter toute défaillance dès la première occasion.
Exécuter PowerShell sans droits d'administrateur
Avant d'aborder l'automatisation avancée, il est important de comprendre comment Ouvrir PowerShell sans privilèges élevés Même si Windows semble constamment vous inciter à « Exécuter en tant qu'administrateur », dans de nombreux environnements d'entreprise ou partagés, cette option n'est tout simplement pas disponible.
Il existe une astuce très utile basée sur la commande runas Cela vous permet de démarrer une session PowerShell avec un niveau de confiance restreint, idéal pour travailler sans élévation de privilèges, même si votre compte utilisateur dispose de ces privilèges. Pour ce faire, suivez simplement ces étapes :
-
Ouvrez le invite de commandes (cmd) en mode normal, sans utiliser l'option « Exécuter en tant qu'administrateur ».
-
Dans la fenêtre cmd, tapez cette commande et appuyez sur Entrée :
exécuter en tant que /trustlevel:0x20000 powershell
Cette commande lance une nouvelle session PowerShell sous un niveau de confiance plus limitéCela vous permet d'éviter certains problèmes lorsqu'un élément ne fonctionne pas correctement dans une console avec privilèges élevés. Un exemple classique est l'installation d'outils utilisateur tels que… SpiceterSi vous essayez de le télécharger ou de le configurer à partir d'une session PowerShell disposant de droits d'administrateur, le processus peut échouer, alors qu'à partir d'une session disposant d'autorisations normales, il fonctionne sans problème.
Cette approche correspond parfaitement à une philosophie de moindre privilègeVous n'élevez les autorisations qu'en cas de stricte nécessité et laissez la majeure partie de l'automatisation fonctionner avec le même contexte qu'un utilisateur standard ou effectuant un travail quotidien.
PowerShell comme fondement de l'automatisation moderne
PowerShell est bien plus qu'une simple console bleue : c'est un cadre d'automatisation et langage de script Conçu pour gérer les systèmes Windows et, dans ses versions les plus récentes (PowerShell Core), également Linux et macOS, il exploite les cmdlets (commandes spécialisées), les objets et les tubes, permettant ainsi de construire des tâches complexes à partir de petits éléments réutilisables.
La différence par rapport à l'invite de commandes classique est énorme : avec PowerShell, vous pouvez enchaînement de commandes, manipulation d'objets, interrogation des journaux, services, IIS, SQL, Microsoft 365 et pratiquement tous les produits Microsoft ou tiers disposant de modules compatibles. Cela en fait un outil idéal pour automatiser toutes les tâches, du simple nettoyage de fichiers temporaires au déploiement complet d'applications web.
Il est important de distinguer entre PowerShell (l'environnement) est notre valeur principale. script PowerShellL'environnement est la console ou le terminal où vous saisissez des commandes interactives, tandis qu'un script est un fichier .ps1 contenant une séquence ordonnée d'instructions, de conditions, de fonctions et de variables créées pour effectuer des tâches répétitives sans avoir à tout saisir à chaque fois.
Ces scripts PowerShell constituent la base sur laquelle beaucoup d'autres sont construits. stratégies d'automatisation informatique: gestion de masse des utilisateurs, déploiement de mises à jour, surveillance du système, génération automatique de rapports, tâches de nettoyage périodiques, etc. Et, mieux encore, bon nombre de ces scénarios peuvent être exécutés sans accès direct à un compte d'administrateur local, à condition que le script ne touche qu'aux ressources auxquelles votre utilisateur a déjà accès.
Configurez l'environnement PowerShell et les stratégies d'exécution
Pour que l'automatisation fonctionne sans problème, il est nécessaire de contrôler son comportement. Stratégie d'exécution PowerShellCette politique définit quels scripts peuvent être exécutés et d'où, et constitue généralement le premier obstacle rencontré par quiconque se lance dans l'automatisation.
Les politiques de mise en œuvre les plus courantes sont :
- LimitéIl s'agit du paramètre par défaut dans de nombreuses installations. Seules les commandes interactives sont autorisées ; les scripts .ps1 sont bloqués. C'est l'option la plus sécurisée, mais en pratique, Cela empêche toute automatisation basée sur des scripts.
- ToutSignéSeuls les scripts signés numériquement par un éditeur de confiance peuvent être exécutés. Ceci convient aux environnements où vous souhaitez contrôle strict du code qui se déroule dans les équipes.
- Signé à distanceLes scripts téléchargés depuis Internet ou des serveurs distants doivent être signés, mais les scripts locaux non signés peuvent être exécutés. Cette politique, relativement équilibrée, est très courante en entreprise.
- Libre: permet l'exécution de n'importe quel script, qu'il soit signé ou non. Non recommandé pour la production car elle expose le système à un risque élevé.
Vous pouvez consulter votre police d'assurance actuelle avec :
Get-ExecutionPolicy
Et modifiez-le (si votre compte dispose des autorisations nécessaires) en utilisant Set-ExecutionPolicy, par exemple:
Set-ExecutionPolicy RemoteSigned
Si vous n'êtes pas administrateur, vous ne pourrez peut-être pas modifier la stratégie au niveau de la machine, mais vous pourrez l'ajuster au niveau de l'utilisateur ou du processus, selon la configuration de votre organisation. Dans tous les cas, lors de la planification de l'automatisation sans privilèges élevés, tenez compte de la stratégie d'exécution. C'est simplement une restriction de sécurité supplémentaire avec laquelle vous devez composer. et concevez vos scripts en conséquence.
Créez et modifiez facilement des scripts PowerShell
Bien qu'il soit possible d'écrire des scripts dans n'importe quel éditeur de texte, il est beaucoup plus pratique d'utiliser des outils avec coloration syntaxique et outils de développementsurtout à mesure que les scripts s'étoffent et commencent à inclure des fonctions, des modules et une logique complexe.
Les options les plus courantes pour travailler avec des scripts PowerShell sont :
- Code Visual Studio (code VS)Aujourd'hui, c'est l'option recommandée par Microsoft. Elle est gratuite, légère et, avec l'extension PowerShell officielle installée, offre la saisie semi-automatique (IntelliSense), le débogage pas à pas, les extraits de code, l'intégration Git et un terminal intégré.
- ISE PowerShellIl s'agit de l'environnement intégré classique fourni avec Windows PowerShell 5.1 et les versions antérieures. Bien que considéré comme obsolète par rapport à VS Code, il reste largement utilisé dans de nombreux environnements.
- Bloc-notes ou autres éditeurs simples: convient aux scripts courts ou rapides, même si vous perdez de nombreuses fonctionnalités utiles qui facilitent la vie lorsque le code se complexifie.
Dans tous les cas, le processus de base est similaire : vous créez un nouveau fichier, vous écrivez le code PowerShell et vous l’enregistrez avec l’extension appropriée. .ps1 et ensuite vous l'exécutez depuis une console. Par exemple, si vous enregistrez le script dans C:\Scripts\MiScript.ps1Vous pouvez le lancer depuis PowerShell en procédant comme suit :
& "C:\Scripts\MiScript.ps1"
Pour que tout cela s'intègre à l'automatisation, vous devrez réfléchir à Comment ce script sera-t-il appelé de manière programmée ? sans utiliser les privilèges d'administrateur, chose que nous verrons plus tard avec le Planificateur de tâches.
Automatisez avec le Planificateur de tâches Windows et PowerShell
Le Planificateur de tâches Windows est l'outil qui vous permet de déclencher automatiquement des scripts PowerShell Selon les calendriers, les événements ou les conditions du système. Bien que de nombreux guides l'utilisent pour des tâches nécessitant des privilèges d'administrateur, il est également parfaitement valable pour l'automatisation dans un contexte utilisateur standard, à condition que la tâche soit configurée avec le compte approprié.
La bibliothèque du Planificateur de tâches organise toutes les tâches dans des dossiers et, pour chacun d'eux, propose plusieurs onglets clés :
- Généralités: nom, description, compte sous lequel il s'exécute et options de sécurité (par exemple, s'il s'exécute même si l'utilisateur n'est pas connecté).
- Déclencheurs: détermine quand la tâche est lancée : à l'ouverture de session, à l'allumage de l'ordinateur, tous les jours, à une heure précise, lorsqu'un événement se produit, etc.
- Actions: définit ce que fait la tâche lorsqu'elle est déclenchée, généralement en lançant un programme, qui dans ce cas sera powershell.exe avec les arguments appropriés.
- Conditions: vous permet de régler précisément quand il s'exécute : uniquement si l'ordinateur est branché, s'il est inactif pendant un certain temps, si le réseau répond à certaines caractéristiques, etc.
- Paramètres (Configuración): paramètres supplémentaires tels que l'autorisation de l'exécution à la demande, les nouvelles tentatives en cas d'échec, l'arrêt si l'exécution est trop longue, le comportement si l'exécution est déjà en cours, etc.
- Histoire: enregistre les exécutions, les erreurs et les avertissements, très utile pour le débogage lorsqu'un programme ne fonctionne pas comme prévu.
Pour lancer un script PowerShell à partir du Planificateur de tâches, le schéma typique dans l'onglet Actions est le suivant :
- Programme / script:
powershell.exe - Ajouter argumentsQuelque chose comme ça
-File C:\Scripts\MiScript.ps1ajouter d'autres paramètres si nécessaire, tels que-ExecutionPolicy Bypasso-NoExitselon vos besoins. - Commencez en: facultatif, répertoire où se trouve le script si vous utilisez des chemins relatifs.
En utilisant le compte utilisateur standard comme compte d'exécution de la tâche (dans l'onglet Général), le script s'exécutera avec les mêmes autorisations que vous avez Lors de la connexion, cela correspond parfaitement au principe d'automatisation sans privilèges d'administrateur. Cependant, si le script nécessite l'accès à des parties du système réservées aux administrateurs, il échouera. Il est donc crucial de concevoir chaque tâche en tenant compte du contexte de sécurité disponible.
Avantages de l'automatisation avec le Planificateur de tâches et PowerShell
L'association du Planificateur de tâches et des scripts PowerShell offre de nombreux avantages, même sans privilèges élevés. Parmi les principaux :
- Gain de temps: les tâches répétitives telles que le nettoyage, la génération de rapports ou l'exportation de données s'exécutent automatiquement pendant que vous effectuez d'autres tâches ou même lorsque la session est fermée (si la tâche est configurée pour cela).
- cohérenceLe script fait toujours exactement la même chose, dans le même ordre, sans aucune erreur, ce qui réduit la marge d'erreur humaine.
- FiabilitéVous pouvez programmer des routines régulières (quotidiennes, hebdomadaires, mensuelles) qui maintiennent le système ou vos données en bon état, même sans intervention manuelle.
- Efficacité des ressourcesIl est facile de programmer l'exécution des scripts pour les heures creuses, évitant ainsi les impacts sur les performances pendant les heures de pointe.
- Flexibilité: les déclencheurs basés sur le temps, la connexion, le démarrage du système ou les événements permettent automatisations hautement adaptées à votre environnement.
- la gestion des erreursVous pouvez configurer les nouvelles tentatives, consigner la sortie PowerShell, envoyer des e-mails ou écrire des événements spécifiques en cas d'échec.
- SécuritéEn exécutant des scripts avec des comptes utilisateurs restreints, vous réduisez le risque qu'une erreur de script puisse causer des dommages importants au système. N'utilisez les tâches disposant de permissions étendues qu'en cas d'absolue nécessité.
Pour une automatisation avancée dans les grands réseaux, PowerShell offre encore plus de possibilités : grâce à des tâches planifiées bien conçues, vous pouvez enchaînement de flux de travail complexesorchestrer des tâches sur différentes machines et répondre automatiquement à des événements spécifiques.
Exemples pratiques d'automatisation avec PowerShell
Une fois le cadre clairement établi, ce qui fait vraiment la différence, ce sont les scripts spécifiques que vous exécutezVoici quelques scénarios très courants où PowerShell excelle, aussi bien au sein d'équipes individuelles que dans des environnements plus vastes.
Gestion de Microsoft 365 avec PowerShell
Dans l'environnement Microsoft 365, PowerShell est devenu l'outil incontournable pour Gérer les utilisateurs, les licences et les services en masseAvec les modules appropriés, vous pouvez vous connecter à votre locataire et automatiser une bonne partie des tâches quotidiennes, telles que : Migrer les profils utilisateur et OfficePour commencer, on utilise généralement le module MSOnline classique (bien que les modules Microsoft Graph et Exchange Online soient aujourd'hui plus courants). Le flux de travail de base serait le suivant :
- Installez les modules nécessaires (par exemple, à partir d'une session PowerShell disposant des autorisations nécessaires pour installer des modules) :
Install-Module -Name PowerShellGet -Force -AllowClobber
Install-Module -Name MSOnline - Connectez-vous au service en utilisant vos identifiants d'administrateur Microsoft 365 :
Connect-MsolService
À partir de là, vous pouvez automatiser des tâches telles que :
- Inscription massive des utilisateurs à partir d'un fichier CSV, attribution des mots de passe et des propriétés de profil.
- Changements dans la composition du groupe en fonction de règles (par exemple, déplacer des utilisateurs vers des groupes de sécurité spécifiques).
- Désactivation automatique des comptes inactifs en se basant sur des critères tels que la date de la dernière modification du mot de passe ou la date de connexion.
- Génération de rapports périodiques concernant l'activité des utilisateurs, les licences utilisées ou l'état de la sécurité.
Ces scripts peuvent être lancés manuellement depuis une console disposant des autorisations appropriées dans Microsoft 365 ou intégrés à des tâches planifiées sur un serveur d'administration. Bien que la gestion des locataires nécessite un compte disposant de privilèges élevés dans le cloud, l'ordinateur à partir duquel vous exécutez le script… Vous n'avez pas forcément besoin d'un compte d'administrateur local.à condition de pouvoir installer des modules et se connecter à des services distants.
Automatisation de la maintenance locale
Sur les ordinateurs Windows classiques, même avec un compte standard, vous pouvez créer des scripts pour :
- Sauvegarder les dossiers utilisateur par copies et synchronisation vers un autre lecteur ou vers un emplacement réseau auquel vous avez accès.
- Nettoyez les fichiers temporaires et supprimez les logiciels inutiles. dans vos chemins de profil, caches d'application ou journaux qui ne nécessitent pas d'autorisations d'administrateur.
- Enregistrement de l'utilisation du disque, du processeur ou de la mémoire Du point de vue de votre compte, générer des rapports dans un répertoire où vous pouvez écrire.
- Examiner les processus internes ou des services utilisateurs qui ne nécessitent pas de privilèges élevés pour vérifier leur statut.
Ces scripts, associés au Planificateur de tâches exécuté sous votre compte utilisateur, vous permettent de configurer un routine de maintenance et de surveillance de base Très pratique même lorsque le service informatique ne vous donne pas d'accès administrateur.
Automatisation à distance avec Splashtop et d'autres systèmes
Dans les environnements où le travail s'effectue à distance, des outils tels que Splashtop Elles ajoutent une dimension intéressante. Ce type de solution offre un accès distant sécurisé aux équipements et, dans certains cas, des fonctionnalités spécifiques pour :
- Jeter invites de commandes ou consoles PowerShell distantes sans avoir besoin de démarrer une session de bureau complète.
- Exécutez des scripts PowerShell simultanément sur plusieurs points de terminaison, avec des contrôles d'audit et une planification centralisée.
- Appliquer des politiques, déployer des correctifs ou des scripts de remédiation à des groupes d'ordinateurs de manière automatisée.
Splashtop AEM, par exemple, est spécifiquement conçu pour gérer et automatiser les tâches sur de vastes parcs d'appareilsElle intègre parfaitement l'exécution de scripts PowerShell à sa plateforme. Selon votre configuration, vous pouvez exploiter ces fonctionnalités même si votre compte local n'est pas administrateur, en déléguant une partie du contrôle au système de gestion à distance.
Scripts PowerShell pour IIS, les bases de données et le déploiement Web
Sur les serveurs hébergeant des applications web sur IIS, Web Deploy version 2.1 inclut un ensemble de scripts PowerShell qui simplifient considérablement le processus. Préparation des sites en vue de leur publication à l'aide de Web DeployBien que les privilèges d'administrateur de serveur soient généralement requis pour la configuration initiale, il est utile de se familiariser avec eux car ils font partie intégrante de nombreuses infrastructures de déploiement automatisées.
Les principaux scripts sont :
- SetupSiteForPublish.ps1: crée ou configure un site IIS, un utilisateur de déploiement non administrateur et un fichier de profil de publication (.publishsettings).
- CréerSqlDatabase.ps1: crée une base de données SQL Server, une connexion et un utilisateur avec les autorisations db_owner, et ajoute la chaîne de connexion au fichier de publication.
- CréerMySqlDatabase.ps1: fait la même chose mais pour MySQL, en créant une base de données et un utilisateur disposant des autorisations nécessaires.
- AjouterDelegationRules.ps1Configurez les règles de délégation dans IIS pour permettre à Web Deploy de fonctionner correctement dans les environnements délégués.
le script Configurer le site pour la publicationPar exemple, il peut instantanément monter un site nommé WDeploySite sur un port disponible (entre 8080 et 8200), créer un pool d'applications associé et générer un utilisateur local non administrateur (WDeploySiteuser) disposant des autorisations nécessaires sur le répertoire physique du site et dans IIS. Toutes ces informations sont enregistrées dans un fichier .publishsettings, utilisable par des outils tels que WebMatrix ou Visual Studio.
Les scripts de base de données ajoutent à ce profil chaînes de connexion SQL Server ou MySQLIl est également possible de créer des identifiants et des utilisateurs spécifiques avec des mots de passe (qui peuvent être générés automatiquement ou définis manuellement dans l'appel de script). Bien que ces outils aient été conçus pour des déploiements privilégiés, leur philosophie s'inscrit dans l'idée de accorder à chaque application et à chaque processus l'accès minimal nécessaireSéparer clairement les comptes administratifs et les comptes de publication.
Bonnes pratiques en matière de sécurité et de performance des scripts PowerShell
Toute stratégie d'automatisation, en particulier lorsqu'elle est mise en œuvre sans privilèges d'administrateur, doit reposer sur une série de bonnes pratiques de sécurité et de performance pour éviter les problèmes à moyen terme.
Voici quelques conseils clés :
- Concevoir des scripts en utilisant le principe du moindre privilège: que chaque script ne touche qu'aux ressources strictement nécessaires et que le compte qui l'exécute (utilisateur standard, compte de service, etc.) ne dispose que des autorisations essentielles.
- Signature de documents confidentiels et utiliser des politiques d'exécution qui exigent une signature au moins pour les scripts téléchargés depuis Internet ou partagés sur le réseau de l'entreprise.
- Protéger les identifiants et les informations sensibleséviter de les stocker en clair dans des scripts et recourir à un stockage sécurisé, à des variables d'environnement chiffrées ou à des solutions pour synchroniser et chiffrer les copies dans le cloud le cas échéant.
- Mettre en œuvre une gestion des erreurs robusteUtilisez des blocs try/catch, consignez les erreurs et, si possible, envoyez des alertes en cas de défaillance critique.
- Optimiser les performancesRéutiliser les fonctions et les modules, minimiser les boucles inutiles, utiliser les cmdlets natives autant que possible et tester différentes approches pour réduire les temps d'exécution.
- Surveiller et auditer les tâches planifiéesExaminez régulièrement l'historique du Planificateur de tâches, les journaux d'événements et les fichiers journaux générés par les scripts afin de détecter les comportements anormaux ou les défaillances récurrentes.
- Toujours effectuer les tests dans des environnements de développement ou de test avant de mettre en œuvre une nouvelle tâche ou un nouveau script en production, surtout s'il interagit avec des systèmes critiques ou des données sensibles.
En tenant compte de tout cela, il est possible de construire un écosystème d'automatisation PowerShell très performant, s'appuyant sur des tâches planifiées et des outils distants. Seule une petite partie de l'infrastructure nécessite des comptes hautement privilégiés Le reste peut être géré par des utilisateurs standard ou disposant de droits très limités. En planifiant soigneusement les contextes d'exécution, la conception des scripts et la gestion des autorisations, il est tout à fait possible d'automatiser une grande partie des tâches quotidiennes sous Windows et Microsoft 365 sans avoir constamment recours au compte administrateur.
Écrivain passionné par le monde des octets et de la technologie en général. J'aime partager mes connaissances à travers l'écriture, et c'est ce que je vais faire dans ce blog, vous montrer toutes les choses les plus intéressantes sur les gadgets, les logiciels, le matériel, les tendances technologiques et plus encore. Mon objectif est de vous aider à naviguer dans le monde numérique de manière simple et divertissante.




