Powershell peut être très utile lors du déploiement d’un poste de travail avec SCCM. Il permet d’exécuter des commandes , voir même de puissants scripts que vous aurez préalablement développé. Cependant quelques prés-requis doivent être connus avant de se lancer dans l’aventure.
Le présent article a pour but de vous guider lors de l’appel de commandes et scripts Powershell durant une séquence de tâches.
Exécuter une commande Powershell
Explications
L’exécution d’une commande Powershell est une tâche relativement aisée, pour la simple et bonne raison que la commande (ou command-let) est nativement présente localement et ne fait appel à aucun script. Par conséquent les paramètres de sécurité par défaut autorisent l’exécution d’une commande locale.
Dans une séquence de tâches, l’exécution d’une commande se fait par le biais d’une étape “Run command line“. Dans cette étape, nous allons spécifier que nous voulons exécuter “powershell.exe” avec les paramètres qui vont bien. Voici la ligne de commande par défaut que vous pouvez utiliser :
powershell.exe -command “& {restart-service ccmexec}”
Exemple
![]() |
![]() |
Il ne me reste plus qu’à tester l’exécution de cette commande pendant le déroulement d’une séquence de tâches.
Exécuter un script Powershell
Exécuter un script Powershell, en d’autres termes exécuter un .ps1, est plus compliqué. les deux raisons qui l’expliquent sont les suivantes :
- d’une part parce que, par défaut, Powershell.exe est configuré pour refuser l’exécution de script,
- d’autre part, si vous exécutez des scripts depuis un point de distribution “(“Access content directly from a distribution point), la configuration renforcée d’Internet Explorer du poste de travail est activée, le serveur sur lequel le script est présent ne fait pas partie des sites de confiance … Donc une erreur apparait donc lors de son exécution.
Exécuter un script localement
Pour exécuter un script qui est présent sur la machine, il nous suffit de modifier légèrement la ligne de commande précédente :
powershell.exe –executionpolicy unrestricted –file “.\monscript.ps1” “.\mesArguments”
cette commande permet d’exécuter le script .ps1 dans un contexte où les scripts sont autorisés. Cette méthode présente le gros avantage de n’autoriser les scripts que durant cette commande. En dehors de l’exécution de ce script, la sécurité reste correctement configurée, à savoir : restricted.
Exécuter un script stocké sur les points de distribution
Pour autoriser l’exécution de scripts qui se situent sur des emplacements distants, la seule solution que j’ai trouvé consiste à modifier les options de sécurité Internet Explorer. En ajoutant l’adresse du serveur qui stocke les scripts dans les sites de confiance, l’exécution de ces scripts devient possible.
L’ajout de l’adresse du ou des serveurs se fait par l’ajout d’une étape “run command line” qui modifie une clé de registre.
REG ADD HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domain\<Mydomain> /v * /t REG_DWORD /d 1 /f
- <mydomain> est le nom DNS du domaine dans lequel se trouve les points de distribution.
Ensuite j’exécute mon script powershell :
powershell.exe –executionpolicy unrestricted –file “\\UNCPath\monscript.ps1” “\\UNCPath\mesArguments”
Exemple (très) pratique
Dans l’exemple suivant, je souhaiterai créer une connexion VPN en lançant le script PowerShell fournit par Microsoft ici.
J’ai tout d’abord créé un package contenant le script ainsi que le fichier de définition de ma connexion VPN dans SCCM, puis l’ai envoyé sur mes points de distribution. J’ai ensuite créé une séquence de tâches et l’ai publié en spécifiant que les programmes doivent être lancés depuis le point de distribution.
Dernière étape : TESTER et le tour est joué !
Enjoy 

What’s up everyone, it’s my first visit at this web site, and paragraph is actually fruitful in favor of me, keep up posting these articles.