Question
[Résolu] Enchainement de script
- lavocat
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 9 ans 6 mois #22289
par lavocat
[Résolu] Enchainement de script a été créé par lavocat
Bonjour,
débutant en powershell j'ai besoin d'aide pour le problème ci-dessous:
Contexte:
Je dois enchainer des scripts dont le but final est de migrer des serveurs w2003 vers des serveurs W2012 R2, pour cela je dois lancer un script principal qui effectuera le lancement de tous les scripts nécessaire aux différentes étapes de création et migration.
Mon travail est de créer tous ses scripts. Dure mais pas impossible.
Actuellement je suis sur la création du script principal.
J'utilise la commande invoke-command pour executer les scripts.
je fais mes tests avec des petits scripts qui font coucou et qui envoie un write-output à 0 ou à 1. je récupère ce 0 ou 1 depuis mon script principal pour déterminer si je stoppe l'execution du script ou si je peux enchainer avec un autre script.
Le pb c'est que dès le 2ème script mon script principal ne récupère pas cette valeur à O ou à 1, et me mets le msg d'erreur ci-dessous:
Voila si quelqu'un peut m'aider, car je ne sais pas quoi faire, merci d'avance. je mets un bout de mon code si cela peut aider.
Bout de script principal
[code:1]ForEach ( $Line In $List )
{ $Line1 = Split-Path -Leaf $Line
Write-host \"$Date_du_Jour - $Heure_du_Jour |Info | Il reste ( $LigneNB ) script(s) à enchainer\" -ForegroundColor Green
\"$Date_du_Jour - $Heure_du_Jour |Info | Il reste ( $LigneNB ) script(s) à enchainer\" | Add-Content $Log_Cour
Write-host $Line1 -ForegroundColor Yellow
If ( !( Test-Path $Line ) )
{ Write-host \"Le script $Line1 est introuvable\" -ForegroundColor Red
\"$Date_du_Jour - $Heure_du_Jour |Erreur | Le script ( $Line ) est introuvable\" | Add-Content $Log_Cour
Write-host \"Arrêt du script Général\" -ForegroundColor Red
\"$Date_du_Jour - $Heure_du_Jour |Erreur | Arrêt du script Général\" | Add-Content $Log_Cour
\"=\" * ( $Nom_du_Script.Length + 43 ) | Add-Content $Log_Cour
Exit
}
Else
{
[int]$Script = 0
write-host \"$Date_du_Jour - $Heure_du_Jour |OK | Le script ( $Line1 ) est en cours d'execution\" -ForegroundColor Green
\"$Date_du_Jour - $Heure_du_Jour |OK | Le script ( $Line1 ) est en cours d'execution\" | Add-Content $Log_Cour
$Msg1 = \"$Date_du_Jour - $Heure_du_Jour |Erreur | L'execution du script ( $Line1 ) est en Erreur - Arrêt du script`r`n\"
$Msg1 += \"=\" * ( $Nom_du_Script.Length + 43 )
$Msg0 = \"$Date_du_Jour - $Heure_du_Jour |OK | L'execution du script ( $Line1 ) s'est terminée sans erreur`r`n\"
$Msg0 += \"=\" * ( $Nom_du_Script.Length + 43 )
$script = Invoke-Command -session $RemoteSession -filepath $Line
Write-host \"Le code retour est ( $script )\" -ForegroundColor Yellow
Remove-pSSession -session $RemoteSession
}
switch ( $script )
{
1 { Write-Host $Msg1 -ForegroundColor Red
$Msg1 | Add-Content $Log_Cour
Remove-pSSession -session $RemoteSession
Exit }
0 { Write-host $Msg0 -ForegroundColor Green
$Msg0 | Add-Content $Log_Cour
$LigneNB = $LigneNB -1
Remove-pSSession -session $RemoteSession }
}
}
$Information_a_Tracer = \"=\" * ( $Nom_du_Script.Length + 43 )
$Information_a_Tracer += \"`r`n$Date_du_Jour - $Heure_du_Jour |OK | Script Général terminé`r`n\"
$Information_a_Tracer += \"=\" * ( $Nom_du_Script.Length + 43 )
$Information_a_Tracer | Add-Content $Log_Cour
[/code:1]
bout d'un des script executés
[code:1]write-host \"coucou1\"
Write-output 0[/code:1]<br><br>Message édité par: Arnaud, à: 15/09/16 20:32
débutant en powershell j'ai besoin d'aide pour le problème ci-dessous:
Contexte:
Je dois enchainer des scripts dont le but final est de migrer des serveurs w2003 vers des serveurs W2012 R2, pour cela je dois lancer un script principal qui effectuera le lancement de tous les scripts nécessaire aux différentes étapes de création et migration.
Mon travail est de créer tous ses scripts. Dure mais pas impossible.
Actuellement je suis sur la création du script principal.
J'utilise la commande invoke-command pour executer les scripts.
je fais mes tests avec des petits scripts qui font coucou et qui envoie un write-output à 0 ou à 1. je récupère ce 0 ou 1 depuis mon script principal pour déterminer si je stoppe l'execution du script ou si je peux enchainer avec un autre script.
Le pb c'est que dès le 2ème script mon script principal ne récupère pas cette valeur à O ou à 1, et me mets le msg d'erreur ci-dessous:
Cannot invoke pipeline because runspace is not in the Opened state. Current state of runspace is 'Closed'.
Voila si quelqu'un peut m'aider, car je ne sais pas quoi faire, merci d'avance. je mets un bout de mon code si cela peut aider.
Bout de script principal
[code:1]ForEach ( $Line In $List )
{ $Line1 = Split-Path -Leaf $Line
Write-host \"$Date_du_Jour - $Heure_du_Jour |Info | Il reste ( $LigneNB ) script(s) à enchainer\" -ForegroundColor Green
\"$Date_du_Jour - $Heure_du_Jour |Info | Il reste ( $LigneNB ) script(s) à enchainer\" | Add-Content $Log_Cour
Write-host $Line1 -ForegroundColor Yellow
If ( !( Test-Path $Line ) )
{ Write-host \"Le script $Line1 est introuvable\" -ForegroundColor Red
\"$Date_du_Jour - $Heure_du_Jour |Erreur | Le script ( $Line ) est introuvable\" | Add-Content $Log_Cour
Write-host \"Arrêt du script Général\" -ForegroundColor Red
\"$Date_du_Jour - $Heure_du_Jour |Erreur | Arrêt du script Général\" | Add-Content $Log_Cour
\"=\" * ( $Nom_du_Script.Length + 43 ) | Add-Content $Log_Cour
Exit
}
Else
{
[int]$Script = 0
write-host \"$Date_du_Jour - $Heure_du_Jour |OK | Le script ( $Line1 ) est en cours d'execution\" -ForegroundColor Green
\"$Date_du_Jour - $Heure_du_Jour |OK | Le script ( $Line1 ) est en cours d'execution\" | Add-Content $Log_Cour
$Msg1 = \"$Date_du_Jour - $Heure_du_Jour |Erreur | L'execution du script ( $Line1 ) est en Erreur - Arrêt du script`r`n\"
$Msg1 += \"=\" * ( $Nom_du_Script.Length + 43 )
$Msg0 = \"$Date_du_Jour - $Heure_du_Jour |OK | L'execution du script ( $Line1 ) s'est terminée sans erreur`r`n\"
$Msg0 += \"=\" * ( $Nom_du_Script.Length + 43 )
$script = Invoke-Command -session $RemoteSession -filepath $Line
Write-host \"Le code retour est ( $script )\" -ForegroundColor Yellow
Remove-pSSession -session $RemoteSession
}
switch ( $script )
{
1 { Write-Host $Msg1 -ForegroundColor Red
$Msg1 | Add-Content $Log_Cour
Remove-pSSession -session $RemoteSession
Exit }
0 { Write-host $Msg0 -ForegroundColor Green
$Msg0 | Add-Content $Log_Cour
$LigneNB = $LigneNB -1
Remove-pSSession -session $RemoteSession }
}
}
$Information_a_Tracer = \"=\" * ( $Nom_du_Script.Length + 43 )
$Information_a_Tracer += \"`r`n$Date_du_Jour - $Heure_du_Jour |OK | Script Général terminé`r`n\"
$Information_a_Tracer += \"=\" * ( $Nom_du_Script.Length + 43 )
$Information_a_Tracer | Add-Content $Log_Cour
[/code:1]
bout d'un des script executés
[code:1]write-host \"coucou1\"
Write-output 0[/code:1]<br><br>Message édité par: Arnaud, à: 15/09/16 20:32
Connexion ou Créer un compte pour participer à la conversation.
- lavocat
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 9 ans 6 mois #22293
par lavocat
Réponse de lavocat sur le sujet Re:Enchainement de script
j'ai solutionné mon pb.
Je n'utilise pas invoke-command
mais . SCRIPT.PS1
ensuite j'utilise exit et $lastexitcode pour récupérer le résultat
Je n'utilise pas invoke-command
mais . SCRIPT.PS1
ensuite j'utilise exit et $lastexitcode pour récupérer le résultat
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.038 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Enchainement de script