Planificateur de tâches - comment exécuter un script PowerShell avec plusieurs paramètres?

5

J'utilise powershell.exe en tant que programme et " -Command "& C:\Windows\logon.ps1; exit $LASTEXITCODE"; ExecutionPolicy RemoteSigned" en tant que paramètre, mais cela ne semble pas fonctionner.

Quelques choses que j'aimerais:

  1. obtenir un résultat dans le planificateur de tâches afin que je sache si tout a bien fonctionné ou s'il y a eu des erreurs

  2. récupère la sortie du script dans un fichier output.txt (un fichier incrémentiel est-il possible?)

  3. exécuter le script caché

FernandoSBS
la source
Vous pouvez utiliser un fichier de commandes pour effectuer votre travail (à l'aide de PowerShell), vérifier le code de sortie / le niveau d'erreur, rediriger la sortie, etc. Vous pouvez bien sûr l' exécuter en mode masqué . Si un fichier de commandes n'est pas acceptable, vous pouvez exécuter directement le script PS masqué ( 1 , 2 ).
Karan
ok mais si je veux donner les arguments dans le planificateur de tâches lui-même, est-ce possible? Comment faire?
FernandoSBS

Réponses:

2

Je ne sais pas si vous avez oublié la - dans votre question mais c'est -ExecutionPolicy. Si ce script n'est pas signé, il ne l'exécutera pas non plus, vous pouvez l'utiliser bypasscomme politique d'exécution pour l'exclure.

Je doute que vous puissiez exécuter les scripts et les commandes les uns après les autres dans la ligne de commande. Ajoutez le exit $LASTEXITCODEau script et exécutez-le avec le -File C:\script.ps1.

Si, par exécution, vous ne voulez pas dire que la fenêtre de la console est cachée , j’appelle généralement mes scripts comme

powershell.exe -noprofile -executionpolicy bypass -file C:\script.ps1

et ne jamais voir une fenêtre.

Pour obtenir la sortie de votre script dans un fichier, dirigez vos commandes vers Tee-Object

"Hello World" | Tee-Object C:\output.file

Vous pouvez nommer le fichier comme bon vous semble, implémenter une logique dans votre script pour que le nom de fichier s'incrémente ou - mon préféré - utiliser YYYYMMddhhmmss dans le nom du fichier.


Mettre à jour

En outre, extrait de la page Technet de Microsoft sur Powershell:

Les blocs de script doivent être placés entre accolades ({}). Vous pouvez spécifier un bloc de script uniquement lors de l'exécution de PowerShell.exe dans Windows PowerShell . Les résultats du script sont renvoyés au shell parent sous forme d'objets XML désérialisés, et non d'objets réels.

Si la valeur de Command est une chaîne, Command doit être le dernier paramètre de la commande, car tous les caractères tapés après la commande sont interprétés comme les arguments de la commande .

MDMoore313
la source
ok la plupart des choses ont fonctionné, mais je ne reçois toujours pas le résultat dans le fichier texte. Pourriez-vous me donner plus d'indications à ce sujet? Le script s'exécute automatiquement dans loggon mais ne le sort pas dans un fichier. Je l'exécute avec: -file "C:\Eternita\Arruma_Maps.ps1" -executionpolicy bypass -noexitest-il nécessaire que le fichier de sortie existe pour que le fichier soit créé ou le script crée le fichier s'il n'existe pas?
FernandoSBS
aussi quel déclencheur devrais-je utiliser, je veux qu'il s'exécute chaque fois que je déverrouille l'ordinateur après la veille ou la mise sous tension
FernandoSBS
Vous devez diriger la sortie vers une cmdlet qui enverra le résultat au fichier. Collez mon exemple ci-dessus et cela devrait vous aider à démarrer. En ce qui concerne le déclencheur à utiliser, il s'agit d'une question distincte qui devrait être posée dans une question SE distincte.
MDMoore313
J'ai utilisé l'objet tee dans le script. quoi d'autre? Je ne comprends pas
FernandoSBS