Question Comment interrompre et reprendre un processus
- J-L Prout
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 28
- Remerciements reçus 0
il y a 4 mois 2 semaines #35070
par J-L Prout
Comment interrompre et reprendre un processus a été créé par J-L Prout
Je n'ai pas encore travaillé le sujet, mais j'aimerais bien savoir par quel moyen on pourrait interrompre l'exécution d'un script PowerShell puis le reprendre.
N'y aurait-il pas une combinaison de touches ou un raccourci clavier qui pourrait faire cela? Si, de surcroît, on offre des choix au moment de la reprise ce serait une très bonne solution.
Merci aux expérimentés qui se seraient déjà posé la question, et qui l'auraient même résolue!!!!
N'y aurait-il pas une combinaison de touches ou un raccourci clavier qui pourrait faire cela? Si, de surcroît, on offre des choix au moment de la reprise ce serait une très bonne solution.
Merci aux expérimentés qui se seraient déjà posé la question, et qui l'auraient même résolue!!!!
Connexion ou Créer un compte pour participer à la conversation.
- Fabien
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 146
- Remerciements reçus 22
il y a 4 mois 14 heures #35237
par Fabien
Réponse de Fabien sur le sujet Comment interrompre et reprendre un processus
Bonjour J-L Prout,
A ma connaissance; il n'y a pas de raccourci clavier pour interrompre un script temporairement.
Il y a Ctrl+C pour stopper le script mais il n'y a pas de possibilité de reprise du script.
Cependant, tu peux intégrer dans ton script un menu interactif avec les possibilités que tu souhaites.
Voici un script d'exemple pour pouvoir te montrer.
Dans ce script, j'ai fait un menu pour Continuer, Répéter la tâche ou Stopper/enregistrer la progression.
L'enregistrement s'effectue dans un fichier Json sur la machine qui exécute le script.
Les tâches dans le script sont fictives, il y a juste un temps d'attente de 3 secondes pour chaque tâche.
A ma connaissance; il n'y a pas de raccourci clavier pour interrompre un script temporairement.
Il y a Ctrl+C pour stopper le script mais il n'y a pas de possibilité de reprise du script.
Cependant, tu peux intégrer dans ton script un menu interactif avec les possibilités que tu souhaites.
Voici un script d'exemple pour pouvoir te montrer.
Dans ce script, j'ai fait un menu pour Continuer, Répéter la tâche ou Stopper/enregistrer la progression.
L'enregistrement s'effectue dans un fichier Json sur la machine qui exécute le script.
Les tâches dans le script sont fictives, il y a juste un temps d'attente de 3 secondes pour chaque tâche.
# Fichier d'état
$stateFile = "C:\Temp\state.json"
# Étapes du script (modifiable)
$steps = @(
"Vérifier la connectivité réseau",
"Analyser les fichiers de logs",
"Sauvegarder les données",
"Nettoyer les anciens fichiers",
"Envoyer le rapport par mail"
)
# Fonction d'affichage d'en-tête
function Show-Header {
Clear-Host
Write-Host "=========================================" -ForegroundColor Magenta
Write-Host " SCRIPT PAUSE / REPRISE INTERACTIF" -ForegroundColor Magenta
Write-Host "=========================================" -ForegroundColor Magenta
Write-Host ""
}
# Fonction de barre de progression
function Show-ProgressBar($current, $total, $label) {
$percent = [math]::Round(($current / $total) * 100)
$barLength = 30
$filledLength = [math]::Round($barLength * $percent / 100)
$bar = ("█" * $filledLength).PadRight($barLength)
Write-Host ("[{0}] {1}% - {2}" -f $bar, $percent, $label)
}
# Charger l'état précédent
if (Test-Path $stateFile) {
$state = Get-Content $stateFile | ConvertFrom-Json
$currentStep = [int]$state.currentStep
Show-Header
Write-Host "Reprise du script à l'étape $currentStep / $($steps.Count)" -ForegroundColor Cyan
Start-Sleep -Seconds 2
} else {
$currentStep = 0
Show-Header
Write-Host "Nouveau démarrage du script" -ForegroundColor Green
Start-Sleep -Seconds 1
}
# Boucle principale
for ($i = $currentStep; $i -lt $steps.Count; $i++) {
Show-Header
$stepName = $steps[$i]
Write-Host "=== Étape $($i + 1) / $($steps.Count) ===" -ForegroundColor Cyan
Show-ProgressBar $i $steps.Count $stepName
Write-Host ""
# --- Exemple de traitement (à remplacer par ton code) ---
Write-Host "Exécution de : $stepName..." -ForegroundColor Yellow
Start-Sleep -Seconds 3
Write-Host "Étape $($i + 1) terminée." -ForegroundColor Green
# -------------------------------------------------------
# Sauvegarde de la progression
@{ currentStep = $i + 1 } | ConvertTo-Json | Set-Content $stateFile
# Menu interactif
Write-Host ""
Write-Host "----------------------------------------"
Write-Host "Que veux-tu faire ?" -ForegroundColor Cyan
Write-Host " [C] Continuer à l'étape suivante"
Write-Host " [R] Répéter cette étape"
Write-Host " [S] Stopper et enregistrer la progression"
Write-Host "----------------------------------------"
do {
$choice = Read-Host "Ton choix"
switch ($choice.ToUpper()) {
'C' { Write-Host "Reprise du script..." -ForegroundColor Green; $repeat = $false }
'R' { Write-Host "Répétition de l'étape..." -ForegroundColor Yellow; $i--; $repeat = $false }
'S' { Write-Host "Arrêt demandé. Tu pourras reprendre plus tard." -ForegroundColor Red; exit }
default { Write-Host "Choix invalide. Tape C, R ou S."; $repeat = $true }
}
} while ($repeat)
}
# Si tout est terminé
if (Test-Path $stateFile) { Remove-Item $stateFile -Force }
Show-Header
Show-ProgressBar $steps.Count $steps.Count "Terminé"
Write-Host "Toutes les étapes ont été exécutées avec succès." -ForegroundColor Green
Connexion ou Créer un compte pour participer à la conversation.
- Francois Dunoyer
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 21
- Remerciements reçus 4
il y a 3 mois 1 semaine #35394
par Francois Dunoyer
Réponse de Francois Dunoyer sur le sujet Comment interrompre et reprendre un processus
Si tu as des affichages
appuie sur sur espace et ça interrompt l'exécution du script
Après, ca ne permet pas de debuguer, ça bloque juste l'affichage
appuie sur sur espace et ça interrompt l'exécution du script
Après, ca ne permet pas de debuguer, ça bloque juste l'affichage
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.083 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les initiés
- Comment interrompre et reprendre un processus