none
Script GPO logon RRS feed

  • Question

  • Bonjour a tous,

    J'ai besoin, pour ma société, de créer un script qui fonctionne au démarrage de l'ordinateur afin de supprimer toutes les Windows APPS.

    J'ai mis ceci dans mon fichier ps1

    ligne 1) Start-Process -FilePath "powershell" -Verb runAs -WindowStyle Hidden
    ligne 2) Get-AppxPackage -AllUsers | where-object {$_.name –notlike "*sticky*"} | where-object {$_.name –notlike "*windowscalculator*"} | where-object {$_.name –notlike "*photos*"} | Remove-AppxPackage

    Si j’exécute la ligne 2 en powershell Admin pas de soucis cela fonctionne correctement.
    Si j’exécute le script complet j'ai bien une nouvelle fenêtre powershell admin qui s'ouvre mais la ligne reste vide (j'ai viré le "hidden" pour voir ce qu'il se passe).

    J'ai essayé de tout mettre sur la ligne 1 mais je ne sais pas quoi mettre entre "Hidden" et "Get-appxpackage".

    J'ai bien mis le script en tant que script powershell en logon et exécuter en 1er. Il faut peut etre ajouter un argument ?

    Je pense que je n'en suis pas loin mais je ne vois pas ce qui bloque. J'aimerais que cela reste aussi simple que ca, je ne veux pas avoir a identifier un compte particulier pour que cela marche. 

    En vous remerciant d'avance pour votre aide !!!

    Tijah82
    mardi 27 novembre 2018 10:38

Toutes les réponses

  • Bonjour,

    Je pense que ta ligne 1 n'est pas utile vu que tu vas exécuter ton script via une GPO Ordinateur et non Utilisateur.

    La GPO Ordinateur va exécuter ton script avec le compte system il me semble donc avec le maximum de droit.

    Izhocell

    mardi 27 novembre 2018 10:50
  • Déjà merci pour ta réponse.

    Il me semblait avoir déjà testé de cette façon mais je vais recommencer. Je reviens donner des news ensuite.

    :)

    mardi 27 novembre 2018 10:55
  • Bon je viens de retenter et ça ne fonctionne pas de cette façon.

    J'ai beau mettre en Ordinateur logon script powershell rien ne se passe.

    J'ai ajouté les droits sur les ordinateurs du domaine mais ca ne change rien...

    C'est un vrai bordel le powershell en logon.

    J'ai cru comprendre qu'il faudrait faire comme ceci : 

    Un script : Start-Process -FilePath "powershell" -Verb runAs -WindowStyle Hidden -argumentlist "chemin/nom du script a lancer"

    et faire un 2e script : Get-AppxPackage -AllUsers | where-object {$_.name –notlike "*sticky*"} | where-object {$_.name –notlike "*windowscalculator*"} | where-object {$_.name –notlike "*photos*"} | Remove-AppxPackage

    C'est tout de meme dingue qu'un truc aussi simple soit si compliqué a mettre en place par GPO...

    mardi 27 novembre 2018 13:53
  • Mais sinon vous mettriez quoi entre -windowstyle Hidden et Get-appxPackage ? J'ai essayé de mettre | mais ca ne fonctionne pas, j'ai essayé de mettre des " avant get-appxpackage et apres remove-appxpackage mais ca ne change rien...
    mardi 27 novembre 2018 13:59
  • Sur un de tes postes clients qui doit exécuter le script, ouvre une console et tape la commande RSOP

    Ca va t'ouvrir une fenêtre, tu cliques droit sur Ordinateur, Propriété et regardes si ta GPO est bien appliqué et si elle est en erreur ou non  ?

    mardi 27 novembre 2018 14:21
  • Toujours sur ton poste client, qu'est-ce que te retourne la commande powershell suivante : 

    Get-ExecutionPolicy -list

    mardi 27 novembre 2018 14:23
  • salut Tijah82

    pour te donner quelques explication sur tes lignes de code

    Start-Process -FilePath "powershell" -Verb runAs -WindowStyle Hidden

    cette commande ouvre une fenêtre PowerShell
    le -verb runas demande l'élévation admin
    mais le -WindowStyle Hidden demande a ce que la fenêtre soit cacher !!! 
    et c'est tous pour cette ligne
    en gros elle te sert a rien dans une gpo

    la deuxième ligne liste les appli dont le nom contient "sticky", "calculator" ou "photos"
    puis les effaces le :  Remove-AppxPackage

    si tu tien à garder la première ligne, tu peut

    soit mettre un point virgule ";" entre les deux ligne

    soit transformer les deux ligne en une

    Start-Process -FilePath "powershell.exe -command {Get-AppxPackage -AllUsers | where-object {$_.name –notlike `"*sticky*`"}| where-object {$_.name –notlike `"*windowscalculator*`"} | where-object {$_.name –notlike `"*photos*`"} | Remove-AppxPackage}" -Verb runAs -WindowStyle Hidden
    

    je te conseil dans cette dernière méthode de simplifier l'ensemble en ne gardent que la parti "DOS" et de la mettre dans un fichier batch pour ta GPO

    powershell.exe -command {Get-AppxPackage -AllUsers | where-object {$_.name –notlike "*sticky*"}| where-object {$_.name –notlike "*windowscalculator*"} | where-object {$_.name –notlike "*photos*"} | Remove-AppxPackage}

     

    mardi 27 novembre 2018 14:36
  • Alors j'ai réussi a faire fonctionner la GPO de cette façon :

    Au lieu de l'appliquer a l'ordinateur je l'ai appliqué a l'utilisateur en gardant mes 2 lignes (j'ai fait le test sans mettre le Hidden pour que la fenêtre s'affiche):

    ligne 1) Start-Process -FilePath "powershell" -Verb runAs -WindowStyle Hidden
    ligne 2) Get-AppxPackage -AllUsers | where-object {$_.name –notlike "*sticky*"} | where-object {$_.name –notlike "*windowscalculator*"} | where-object {$_.name –notlike "*photos*"} | Remove-AppxPackage

    Du coup vous me conseiller de créer un .bat avec ceci ? Mais en Ordinateur et non en Utilisateur on est d'accord ?

    powershell.exe -command {Get-AppxPackage -AllUsers | where-object {$_.name notlike "*sticky*"}| where-object {$_.name notlike "*windowscalculator*"} | where-object {$_.name notlike "*photos*"} | Remove-AppxPackage}

    Ou vu que maintenant que ça fonctionne en Utilisateur je peux faire une seul ligne dans mon ps1

    Start-Process -FilePath "powershell.exe -command {Get-AppxPackage -AllUsers | where-object {$_.name –notlike `"*sticky*`"}| where-object {$_.name –notlike `"*windowscalculator*`"} | where-object {$_.name notlike `"*photos*`"} | Remove-AppxPackage}" -Verb runAs -WindowStyle Hidden

    En tout cas vous êtes rapide et efficace :)

    Edit : J'ai fini ma journée mais je viendrais consulter demain matin et mettre en place ce que vous pensez le mieux.


    • Modifié Tijah82 mardi 27 novembre 2018 16:30
    mardi 27 novembre 2018 16:17
  • Alors j'ai réussi a faire fonctionner la GPO de cette façon :

    Au lieu de l'appliquer a l'ordinateur je l'ai appliqué a l'utilisateur en gardant mes 2 lignes (j'ai fait le test sans mettre le Hidden pour que la fenêtre s'affiche):

    Edit : J'ai fini ma journée mais je viendrais consulter demain matin et mettre en place ce que vous pensez le mieux.


    je pense que tous tes test ne fonctionné pas car tu utilisé une GPO ordinateur au lieu d'utilisateur. Je ne suis pas un spécialiste des appx mais j'ai souvent constaté que les suppressions ne fonctionne que pour un utilisateur  

    après seul la ligne deux est utile dans ton script quelque soit la méthode

    et donc par principe faire au plus simple et clair pour un prochain dépannage, dans ton cas une GPO utilisateur avec le démarrage d'un script PowerShell.

    mardi 27 novembre 2018 17:29
  • Tu peux donner le détail de la commande dans la GPO.

    Par défaut le mode d'execution d'un poste pour powerschell est restricted.

    Fais un get-executionpolicy pour t'en assurer.

    Ensuite tu peux essayer d'exécuter ta commande powershell manuellement avec les option -nolog et -executionpoliicy

    Par exemple :

    powershell.exe -noprofile -executionpolicy Unrestricted -file C:\Script\monscript.ps1

    Voir aussi :

    http://woshub.com/running-powershell-startup-scripts-using-gpo/

    mercredi 28 novembre 2018 08:23