none
GPO lançant un script Powershell

    Question

  • Bonjour,

    Je viens d' installer un serveur de domaine Windows 2008 SR2.
    A l' intérieur du domaine, j'ai défini une OU "test" avec une GPO "TestGPO".

    Je souhaiterais installer des scripts de logon pour les utilisateurs appartenant à mon OU, et se connectant sur des PC appartenant aussi à mon OU.
    Les postes PC concernés fonctionnent soit sous Windows XP (SP2 ou SP3), soit sous Windows 7 (très peu pour l' instant, mais plus dans ' avenir).

    Mais j' ai la forte impression que la GPO ne sait pas gérer de scripts Powershell.  On peut lancer des scripts VBS, mais dès qu' on veut mettre un petit script de test en Powershell, plus rien.

     Lorsque l' on arrive au menu de la GPO permettant d' éditer des scripts de logon, (Configuration utilisateur > Stratégies > Paramètres Windows> Scripts ouverture/fermeture de session > Ouverture de session , en cliquant sur l' onglet correspondant aux scripts Powershell, une information prévient qu' on ne peut les exécuter que sous Windows 2008 SR2 ou sous Windows 7.

    Cela signifie-t-il que le SERVEUR ou le PC qui me sert de console d' administration sur le domaine doivent faire tourner l' un de ces 2 systèmes ?
    Ou bien cette condition s' applique-t-elle aux postes CLIENTS sur lesquels je me connecterai ?

    A supposer que je puisse exécuter mes scripts Powershell. Dois-je installer des choses supplémentaires sur le serveur et / ou les postes clients ?

    En vous remerciant de votre aide.
    Thursday, February 25, 2010 7:42 PM

Answers


  • Oui c'est parfaitement possible, nous travaillons depuis un moment avec des scripts powershell au logon.

    Il suffit, dans l'éditeur de GPO, d'ajouter ce genre de ligne dans les propriétés d'ouverture ou de fermeture de session dans l'onglet "Scripts":

    Nom du script :
    Powershell.exe

    Paramètres du scripts :
    -NoLogo -NonInteractive -Command \\<DOMAIN>\netlogon\<SCRIPT.ps1>


    Tu peux aussi faire des choses plus funky si tu a plusieurs domaines en allant le chercher dans la conf TCPIP stockée dans le registre et par exemple, logger les messages renvoyés par ton script :

    -NoLogo -NonInteractive -Command "powershell -Command { $domain=$(get-itemproperty "HKLM:\System\CurrentControlSet\Services\TCPIP\Parameters").Domain; Invoke-Expression $(Resolve-Path "\\$domain\NETLOGON\<SCRIPT.ps1>") | Out-File C:\log\log.txt"}


    Pour info, le contexte d'exécution d'origine n'est pas powershell, CF. l'aide de powershell.exe : "Vous ne pouvez spécifier un bloc de script qu'en exécutant PowerShell.exe dans Windows PowerShell."
    C'est pourquoi je rappel ici "powershell" pour pouvoir executer mon bloc de script.


    Par ailleurs, depuis la version server 2008 R2, un onglet "Scripts PowerShell" est apparu. Je ne sais pas encore qu'elle est la différence avec le précèdent onglet si ce n'est que tu peux ajouter directement ton script powershell pour l'exécuter, dans appeler la commande "powershell". Je pensais que le contexte d'exécution serait Powershell mais il semblerait d'après quelques tests que non :(

    Cdt,
    Marc Magnin.
    Thursday, April 01, 2010 9:01 AM

All replies

  • Bonjour,

    un lien sur powershell et les GPO :

    http://technet.microsoft.com/en-us/library/ee461027.aspx

    A+
    Joël
    Friday, February 26, 2010 8:18 AM
  • Merci pour ce lien;
    En réalité mon objectif n'est pas de créer une GPO avec powershell, mais plutôt de lancer un script écrit en powershell (genre monscript.ps1)  à partir d' une GPO créée par l'utilitaire  de gestion des stratégies de groupe et de pouvoir exécuter ce script powershell  au login de  chacun des comptes appartenant à l' OU sur laquelle ma GPO est définie. Est-ce possible ou pas ?

    Merci de vos réponses


    Monday, March 08, 2010 7:13 PM

  • Oui c'est parfaitement possible, nous travaillons depuis un moment avec des scripts powershell au logon.

    Il suffit, dans l'éditeur de GPO, d'ajouter ce genre de ligne dans les propriétés d'ouverture ou de fermeture de session dans l'onglet "Scripts":

    Nom du script :
    Powershell.exe

    Paramètres du scripts :
    -NoLogo -NonInteractive -Command \\<DOMAIN>\netlogon\<SCRIPT.ps1>


    Tu peux aussi faire des choses plus funky si tu a plusieurs domaines en allant le chercher dans la conf TCPIP stockée dans le registre et par exemple, logger les messages renvoyés par ton script :

    -NoLogo -NonInteractive -Command "powershell -Command { $domain=$(get-itemproperty "HKLM:\System\CurrentControlSet\Services\TCPIP\Parameters").Domain; Invoke-Expression $(Resolve-Path "\\$domain\NETLOGON\<SCRIPT.ps1>") | Out-File C:\log\log.txt"}


    Pour info, le contexte d'exécution d'origine n'est pas powershell, CF. l'aide de powershell.exe : "Vous ne pouvez spécifier un bloc de script qu'en exécutant PowerShell.exe dans Windows PowerShell."
    C'est pourquoi je rappel ici "powershell" pour pouvoir executer mon bloc de script.


    Par ailleurs, depuis la version server 2008 R2, un onglet "Scripts PowerShell" est apparu. Je ne sais pas encore qu'elle est la différence avec le précèdent onglet si ce n'est que tu peux ajouter directement ton script powershell pour l'exécuter, dans appeler la commande "powershell". Je pensais que le contexte d'exécution serait Powershell mais il semblerait d'après quelques tests que non :(

    Cdt,
    Marc Magnin.
    Thursday, April 01, 2010 9:01 AM