Auteur de questions
Script GPO logon

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
Toutes les réponses
-
-
-
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...
-
-
-
-
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 gpola deuxième ligne liste les appli dont le nom contient "sticky", "calculator" ou "photos"
puis les effaces le : Remove-AppxPackagesi 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}
-
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-AppxPackageDu 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
-
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.
-
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/