SCCM 2007 : Commandes et scripts PowerShell dans une séquence de tâches

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

Je commence par éditer la séquence de tâches dans laquelle je souhaite ajouter ma commande
Je vais ensuite ajouter un step “Run command line”
Je paramètre l'étape

 

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.
7
Dans ma séquence de tâches, j’ajoute deux étapes du type “run command line”. 4
la première va ajouter l’adresse de mes points de distribution dans les sites de confiance Internet Explorer.
REG ADD HKCU\Software\Microsoft\Windows\CurrentVersion\
Internet Settings\ZoneMap\Domain\<Mydomain> /v * /t REG_DWORD /d 1 /f
5
La seconde va demander l’exécution du script PowerShell en elle-même.
powershell.exe –executionpolicy unrestricted –file“.\createRasconnection.ps1” “.\maConnectionVpn.xml”
6
Dernière étape : TESTER et le tour est joué !
Enjoy Sourire

2 réflexions au sujet de “SCCM 2007 : Commandes et scripts PowerShell dans une séquence de tâches

Laisser un commentaire