Question
Fichier de trace d execution de script
- gloo
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 23
- Remerciements reçus 0
il y a 15 ans 8 mois #7293
par gloo
Fichier de trace d execution de script a été créé par gloo
Bonjour,
Connaissez vous un moyen de dupliquer la sortie standard et erreur standard vers un fichier ?
Par exemple, en KSH j'ecrivais dans mon script des lignes du genre
[code:1]
ligne_de_commande_1 2>&1 | tee -a fic.log
ligne_de_commande_2 2>&1 | tee -a fic.log
ligne_de_commande_3 2>&1 | tee -a fic.log
[/code:1]
(2>&1 redirige l erreur standard vers la sortie standard et tee -a duplique la sortie standard dans un fichier en ajout)
cela permettait de voir l affichage de l execution du script a l ecran et d'avoir les traces en fichier de log pour consulation ultérieure...
S.<br><br>Message édité par: gloo, à: 29/06/10 14:30
Connaissez vous un moyen de dupliquer la sortie standard et erreur standard vers un fichier ?
Par exemple, en KSH j'ecrivais dans mon script des lignes du genre
[code:1]
ligne_de_commande_1 2>&1 | tee -a fic.log
ligne_de_commande_2 2>&1 | tee -a fic.log
ligne_de_commande_3 2>&1 | tee -a fic.log
[/code:1]
(2>&1 redirige l erreur standard vers la sortie standard et tee -a duplique la sortie standard dans un fichier en ajout)
cela permettait de voir l affichage de l execution du script a l ecran et d'avoir les traces en fichier de log pour consulation ultérieure...
S.<br><br>Message édité par: gloo, à: 29/06/10 14:30
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 15 ans 8 mois #7298
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Fichier de trace d execution de script
Sur les redirections tu peux consulter
cette page
et le fichier d'aide about_Redirection.
Sous PS il existe le cmdlet Tee-object, par contre les redirections, si je me souviens bien, n'ont rien à avoir avec le pipeline, on ne peut pas rediriger le flux de sortie ET l'émettre dans le pipeline.
Ceci ne fonctionne pas :
[code:1]
Dir mydata.txt, myfiles.txt > output.txt 2>&1|Foreach -begin {Write-host \"BEGIN\"} -process {write-host $_ -f
ore green} -end {\"END\"; $res=$input|% {$_}; $res -eq $null}
[/code:1]
Le parseur ne renvoi pas d'erreur, les blocs Begin et End sont bien exécutés mais le bloc Process ne reçoit aucun objet.
Il est possible d'utiliser Start-Transcript, mais il ne gére pas les erreurs ni les affichages sur la console réalisés à l'aide Write-Host.
La gestion des logs n'est pas aisé nativement sous PS.
Sous PS il existe le cmdlet Tee-object, par contre les redirections, si je me souviens bien, n'ont rien à avoir avec le pipeline, on ne peut pas rediriger le flux de sortie ET l'émettre dans le pipeline.
Ceci ne fonctionne pas :
[code:1]
Dir mydata.txt, myfiles.txt > output.txt 2>&1|Foreach -begin {Write-host \"BEGIN\"} -process {write-host $_ -f
ore green} -end {\"END\"; $res=$input|% {$_}; $res -eq $null}
[/code:1]
Le parseur ne renvoi pas d'erreur, les blocs Begin et End sont bien exécutés mais le bloc Process ne reçoit aucun objet.
Il est possible d'utiliser Start-Transcript, mais il ne gére pas les erreurs ni les affichages sur la console réalisés à l'aide Write-Host.
La gestion des logs n'est pas aisé nativement sous PS.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- gloo
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 23
- Remerciements reçus 0
il y a 15 ans 8 mois #7299
par gloo
Réponse de gloo sur le sujet Re:Fichier de trace d execution de script
merci pour tes reponses.
Tee-object a l'air de faire comme tee.
Par contre je ne trouve pas l'option en mode ajout pour qu il ne tronque pas systematiquement le fichier.
concernant Start-Transcript, ca me semble sympa. Je l'appelle dans mon script et tout est tracé sans etre obligé d ajouter ma commande en fin de chaque ligne ...sauf que si je fais Control-C, le script n'a pas atteint le Stop-Transcript
et ma session PS continue a ecrire dans le fichier de log... J'aurais cru que le stop aurait été implicite puisque que le processus fils a été arreté.... enfin... dans le cas ou executer un script genere bien un processus fils.... (non?)
qu en penses tu ?
Tee-object a l'air de faire comme tee.
Par contre je ne trouve pas l'option en mode ajout pour qu il ne tronque pas systematiquement le fichier.
concernant Start-Transcript, ca me semble sympa. Je l'appelle dans mon script et tout est tracé sans etre obligé d ajouter ma commande en fin de chaque ligne ...sauf que si je fais Control-C, le script n'a pas atteint le Stop-Transcript
et ma session PS continue a ecrire dans le fichier de log... J'aurais cru que le stop aurait été implicite puisque que le processus fils a été arreté.... enfin... dans le cas ou executer un script genere bien un processus fils.... (non?)
qu en penses tu ?
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 15 ans 8 mois #7300
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Fichier de trace d execution de script
gloo écrit:
Reste à le demander sur MSConnect.
gloo écrit:
Exemple :
[code:1][Threading.Thread]::CurrentThread.ManagedThreadId|%{\"ID : $_\"}[/code:1]
gloo écrit:
Par contre tu peux déterminer si une transaction existe et dans ce cas la clore, consulte ce post .
Il n'en existe pas, le mode ajout, dans un fichier, est aussi un manque sur de nombreux cmdlets.Par contre je ne trouve pas l'option en mode ajout pour qu il ne tronque pas systematiquement le fichier.
Reste à le demander sur MSConnect.
gloo écrit:
Non, il n'y a pas de création de process fils, mais d'un thread dédié à l'exécution du pipeline, voir ce tutoriel .dans le cas ou executer un script genere bien un processus fils.... (non?)
Exemple :
[code:1][Threading.Thread]::CurrentThread.ManagedThreadId|%{\"ID : $_\"}[/code:1]
gloo écrit:
je ne connais pas de solution native à ce pb.sauf que si je fais Control-C, le script n'a pas atteint le Stop-Transcript
Par contre tu peux déterminer si une transaction existe et dans ce cas la clore, consulte ce post .
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 15 ans 8 mois #7301
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Fichier de trace d execution de script
Laurent Dardenne écrit:
Pour PS V2, c'est possible à l'aide d'un événement statique sur la classe console :
[code:1]
#Event static
$ConsoleCtrlC= [System.Console]
$timeChanged = Register-ObjectEvent -InputObject $ConsoleCtrlC `
–EventName 'CancelKeyPress' `
-Action { Write-Host \"Event : Stop transcript.\" }
1..10|% {Sleep -m 200;Write-host $_}[/code:1]
Reste la combinaison Control-Pause, mais là c'est l'application PowerShell.exe qui se termine...
j'ajoute Pour PS v1.je ne connais pas de solution native à ce pb.
Pour PS V2, c'est possible à l'aide d'un événement statique sur la classe console :
[code:1]
#Event static
$ConsoleCtrlC= [System.Console]
$timeChanged = Register-ObjectEvent -InputObject $ConsoleCtrlC `
–EventName 'CancelKeyPress' `
-Action { Write-Host \"Event : Stop transcript.\" }
1..10|% {Sleep -m 200;Write-host $_}[/code:1]
Reste la combinaison Control-Pause, mais là c'est l'application PowerShell.exe qui se termine...
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.045 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Fichier de trace d execution de script