Question
Attendre la fin d'une instruction (Résolu)
- Jeel
- Auteur du sujet
- Hors Ligne
- Membre senior
Réduire
Plus d'informations
- Messages : 58
- Remerciements reçus 0
il y a 16 ans 8 mois #488
par Jeel
Attendre la fin d'une instruction (Résolu) a été créé par Jeel
Bonjour,
je désire non seulement lancer un backup avec PowerShell mais aussi récupérer le fichiers log après l'exécution du backup. Je constate que PowerShell n'attends pas la fin du backup, il continu directement les autres instructions.
Comment faire pour le forcer à attendre la fin du backup avant de récupérer les logfiles.
Merci
Jeel<br><br>Message édité par: jeelou2000, à: 8/07/07 22:39
je désire non seulement lancer un backup avec PowerShell mais aussi récupérer le fichiers log après l'exécution du backup. Je constate que PowerShell n'attends pas la fin du backup, il continu directement les autres instructions.
Comment faire pour le forcer à attendre la fin du backup avant de récupérer les logfiles.
Merci
Jeel<br><br>Message édité par: jeelou2000, à: 8/07/07 22:39
Connexion ou Créer un compte pour participer à la conversation.
- Olivier
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 8
- Remerciements reçus 0
il y a 16 ans 8 mois #497
par Olivier
Réponse de Olivier sur le sujet Re:Attendre la fin d'une instruction
Bonjour,
Tu pourrais nous placer le morceau de script en question , afin de voir par exemple comment tu lance ton backup.
@+
Ole.
Tu pourrais nous placer le morceau de script en question , afin de voir par exemple comment tu lance ton backup.
@+
Ole.
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 16 ans 8 mois #514
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Attendre la fin d'une instruction
La méthode la plus simple pour attendre la fin d'un process Win32, c'est de rediriger sa sortie vers $null avec la commandelette out-null:
[code:1]notepad | out-null[/code:1]
Dans ton cas, il suffit de remplacer notepad par le nom du programme de sauvegarde. Le script ne continuera qu'une fois le programme terminé.
Cela dit, tu peux avoir besoin de gérer une éventuelle interruption forcée (si par exemple le programme n'a pas terminé sa sauvegarde à 7h du matin). Dans ce cas, ma solution ci-dessus ne suffira pas. Il faudra passer par la création d'un process avec la classe [System.Diagnostics.Process]. Cela te permet de voir quand le programme a démarré, s'il est terminé et le cas échéant de le \"tuer\". Un exemple très bête, à adapter selon ton besoin:
[code:1]$notepad=[System.Diagnostics.Process]:: Start(\"notepad\"«»)
while (!$notepad.HasExited)
{
if ([DateTime]::Now -gt $notepad.StartTime.AddMinutes(10))
{
$notepad.Kill()
}
}
($notepad.ExitTime - $notepad.StartTime).TotalMinutes[/code:1]
(supprimer l'espace entre les deux-points et Start dans la première ligne du bout de code - c'est pour éviter l'affichage d'un smiley...)
Cet exemple lance le Bloc-notes et attend soit qu'il ait été fermé \"de plein gré\", soit qu'il ait été lancé depuis plus de 10 minutes, auquel cas il le ferme de force. Pour finir, le temps total d'exécution est affiché (en minutes).
Janel
[code:1]notepad | out-null[/code:1]
Dans ton cas, il suffit de remplacer notepad par le nom du programme de sauvegarde. Le script ne continuera qu'une fois le programme terminé.
Cela dit, tu peux avoir besoin de gérer une éventuelle interruption forcée (si par exemple le programme n'a pas terminé sa sauvegarde à 7h du matin). Dans ce cas, ma solution ci-dessus ne suffira pas. Il faudra passer par la création d'un process avec la classe [System.Diagnostics.Process]. Cela te permet de voir quand le programme a démarré, s'il est terminé et le cas échéant de le \"tuer\". Un exemple très bête, à adapter selon ton besoin:
[code:1]$notepad=[System.Diagnostics.Process]:: Start(\"notepad\"«»)
while (!$notepad.HasExited)
{
if ([DateTime]::Now -gt $notepad.StartTime.AddMinutes(10))
{
$notepad.Kill()
}
}
($notepad.ExitTime - $notepad.StartTime).TotalMinutes[/code:1]
(supprimer l'espace entre les deux-points et Start dans la première ligne du bout de code - c'est pour éviter l'affichage d'un smiley...)
Cet exemple lance le Bloc-notes et attend soit qu'il ait été fermé \"de plein gré\", soit qu'il ait été lancé depuis plus de 10 minutes, auquel cas il le ferme de force. Pour finir, le temps total d'exécution est affiché (en minutes).
Janel
Connexion ou Créer un compte pour participer à la conversation.
- Jeel
- Auteur du sujet
- Hors Ligne
- Membre senior
Réduire
Plus d'informations
- Messages : 58
- Remerciements reçus 0
il y a 16 ans 8 mois #520
par Jeel
Réponse de Jeel sur le sujet Re:Attendre la fin d'une instruction
Un tout grand merci à Janel; le \"notepad | out-null\" est vraiment ce qu'il me faudrait
Bien à toi
Jeel
Bien à toi
Jeel
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.064 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Attendre la fin d'une instruction (Résolu)