Comment est-il possible d'exécuter un script PowerShell sans afficher une fenêtre ou tout autre signe à l'utilisateur?
En d'autres termes, le script doit s'exécuter silencieusement en arrière-plan sans aucun signe à l'utilisateur.
Crédit supplémentaire pour une réponse qui n'utilise pas de composants tiers :)
windows
powershell
scripting
batch-file
silent
Thomas Bratt
la source
la source
Réponses:
Vous pouvez soit l'exécuter comme ceci (mais cela montre une fenêtre pendant un moment):
Ou vous utilisez un fichier d'aide que j'ai créé pour éviter la fenêtre appelée PsRun.exe qui fait exactement cela. Vous pouvez télécharger des fichiers source et exe. Exécutez des tâches planifiées avec l'interface graphique WinForm dans PowerShell . Je l'utilise pour les tâches planifiées.
Modifié: comme Marco l'a noté, ce paramètre -windowstyle n'est disponible que pour V2.
la source
-WindowStyle Hidden
si la tâche est définieRun whether user is logged on or not
sur l'onglet Général sous la section "Options de sécurité".J'avais ce même problème. J'ai découvert que si vous allez à la tâche dans le planificateur de tâches qui exécute le script powershell.exe , vous pouvez cliquer sur " Exécuter si l'utilisateur est connecté ou non " et cela n'affichera jamais la fenêtre PowerShell lorsque la tâche s'exécute.
la source
Vous pouvez utiliser les extensions de communauté PowerShell et procédez comme suit:
Vous pouvez également le faire avec VBScript:
http://blog.sapien.com/index.php/2006/12/26/more-fun-with-scheduled-powershell/Planifier des tâches PowerShell masquées (Internet Archive)
Plus de plaisir avec PowerShell programmé (Internet Archive)
(Via ce fil de discussion .)
la source
Voici une approche qui ne nécessite pas d'arguments de ligne de commande ou un lanceur séparé. Ce n'est pas complètement invisible car une fenêtre s'affiche momentanément au démarrage. Mais il disparaît ensuite rapidement. Là où ça va, c'est, je pense, l'approche la plus simple si vous souhaitez lancer votre script en double-cliquant dans l'explorateur, ou via un raccourci du menu Démarrer (y compris, bien sûr, le sous-menu Démarrage). Et j'aime que cela fasse partie du code du script lui-même, pas quelque chose d'extérieur.
Mettez ceci au début de votre script:
la source
Voici un one-liner:
Bien qu'il soit possible que cela clignote une fenêtre très brièvement, cela devrait être un événement rare.
la source
J'avais ce problème lors de l'exécution à partir de c #, sous Windows 7, le service "Interactive Services Detection" apparaissait lors de l'exécution d'une fenêtre PowerShell cachée en tant que compte SYSTEM.
L'utilisation du paramètre "CreateNoWindow" a empêché le service ISD d'afficher son avertissement.
la source
Je pense que le meilleur moyen de masquer l'écran de la console du PowerShell lorsque vous exécutez un script d'arrière-plan est ce code ( réponse " Bluecakes ").
J'ajoute ce code au début de tous mes scripts PowerShell dont j'ai besoin pour exécuter en arrière-plan.
la source
ps1 caché du planificateur de tâches et du raccourci aussi
la source
J'ai créé un petit outil passant l'appel à n'importe quel outil de console que vous souhaitez démarrer sans fenêtre jusqu'au fichier d'origine:
https://github.com/Vittel/RunHiddenConsole
Après la compilation, renommez simplement l'exécutable en «<targetExecutableName> w.exe» (ajoutez un «w») et placez-le à côté de l'exécutable d'origine. Vous pouvez ensuite appeler eG powershellw.exe avec les paramètres habituels et cela ne fera pas apparaître de fenêtre.
Si quelqu'un a une idée de la façon de vérifier si le processus créé attend une entrée, je serai ravi d'inclure votre solution :)
la source
MessageBox
sans aucun flash de la fenêtre au démarrage (nécessitant un EXE compilé en tant que Winexe, pas une application console, et nécessitant que le Planificateur de tâches soit défini sur "Exécuter uniquement lorsque l'utilisateur est connecté on "donc les dialogues s'affichent dans la session de bureau en cours.) Merci d'avoir implémenté cela, powershellw.exe est sur ma liste de souhaits depuis des années!Voici une solution de travail dans Windows 10 qui n'inclut aucun composant tiers. Cela fonctionne en encapsulant le script PowerShell dans VBScript.
Étape 1: nous devons modifier certaines fonctionnalités de Windows pour permettre à VBScript d'exécuter PowerShell et d'ouvrir les fichiers .ps1 avec PowerShell par défaut.
-go pour exécuter et tapez "regedit". Cliquez sur OK, puis laissez-le s'exécuter.
- collez ce chemin "HKEY_CLASSES_ROOT \ Microsoft.PowerShellScript.1 \ Shell" et appuyez sur Entrée.
-now ouvre l'entrée sur la droite et change la valeur à 0.
-Ouvrez PowerShell en tant qu'administrateur et tapez «Set-ExecutionPolicy -ExecutionPolicy RemoteSigned», appuyez sur Entrée et confirmez la modification avec «y», puis entrez.
Étape 2: Nous pouvons maintenant commencer à encapsuler notre script.
-enregistrez votre script Powershell sous forme de fichier .ps1.
-créer un nouveau document texte et coller ce script.
-maintenant, changez le chemin du fichier vers l'emplacement de votre script .ps1 et enregistrez le document texte.
-Maintenant, faites un clic droit sur le fichier et allez renommer. Changez ensuite l'extension de nom de fichier en .vbs et appuyez sur Entrée, puis cliquez sur OK.
TERMINÉ! Si vous ouvrez maintenant le .vbs, vous ne devriez voir aucune fenêtre de console pendant que votre script s'exécute en arrière-plan.
assurez-vous de voter si cela a fonctionné pour vous!
la source
Voici une démonstration amusante de contrôle des différents états de la console, y compris minimiser et masquer.
la source