Comment pouvez-vous définir une limite de temps pour un script PowerShell pour exécuter?
Je veux mettre une limite de temps sur une PowerShell (v2) du scénario de la force quitte après l'expiration de ce délai.
Je vois en PHP, ils ont des commandes comme set_time_limit et max_execution_time où vous pouvez limiter combien de temps le script et même une fonction peut exécuter.
Avec mon script, une boucle do-while qui est en regardant le temps n'est pas approprié que je suis de l'appel d'un code externe de la bibliothèque qui peut simplement passer pour une longue période de temps.
Je veux limiter un bloc de code et d'autoriser uniquement pour exécuter pour les x secondes, après quoi je vais mettre un terme à leur bloc de code et de renvoyer une réponse à l'utilisateur que le script a expiré.
J'ai regardé au fond des emplois, mais ils opèrent dans un autre thread, afin de ne pas avoir tuer des droits sur le parent fil.
Quelqu'un a traité ce ou une solution?
Merci!
OriginalL'auteur David Thomas | 2010-06-11
Vous devez vous connecter pour publier un commentaire.
Je sais que c'est un vieux post, mais j'ai utilisé dans mes scripts.
Je ne suis pas sûr si son utilisation correcte, mais le Système.Les minuteries.Minuteur de que Georges mettre en place m'a donné une idée et il semble fonctionner pour moi.
- Je l'utiliser pour les serveurs qui parfois se bloquer sur une requête WMI, le délai d'attente s'arrête elle est collée.
Au lieu de write-host j'ai ensuite éditer le message dans un fichier journal de sorte que je peux voir les serveurs qui sont brisés et les corriger si nécessaire.
Je n'ai pas utiliser un guid-je utiliser les serveurs de nom d'hôte.
J'espère que cela a un sens, et vous aide à.
OriginalL'auteur OneLogicalMyth
Quelque chose comme cela devrait fonctionner aussi...
OriginalL'auteur boeprox
Voici un exemple d'utilisation d'un Timer. Je n'ai pas essayé personnellement, mais je pense que cela devrait fonctionner:
OriginalL'auteur George Howarth
Comment quelque chose comme cela:
Lors de l'utilisation des heures ou des jours, comme une minuterie, assurez-vous de régler l' $laps de Temps.TotalMinutes
et le format HH:mm, car cela ne facilite pas l'utilisation de jours dans l'exemple.
OriginalL'auteur Andy Schaats
Voici ma solution, inspirée par ce blog. Ça va se terminer en cours d'exécution lorsque tout a été exécutée, ou le temps s'épuise (selon ce qui survient en premier).
Je place les choses que je veux exécuter pendant un temps limité dans une fonction:
J'ai une autre fonction qui va garder un œil sur une minuterie et si tout s'est terminée en cours d'exécution:
... et puis finalement j'ai commencer ma fonction
WhatIWannaDo
comme un arrière-plan de l'emploi et de la transmettre à laLimit-JobWithTime
(y compris des exemples de la façon d'obtenir de sortie de l'Emploi):OriginalL'auteur malla
Je suis venu avec ce script.
Code:
OriginalL'auteur Jonathan Ramackers