Question
Rediriger la sortie d'un processus
- Hardware
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 4
- Remerciements reçus 0
j'essaye depuis quelques jours de rediriger la sortie d'un processus dans une RichTextBox avec Powershell mais sans succès...
Voici le code :
[code:1]
$process = New-Object System.Diagnostics.Process
$process.StartInfo.Filename = \"scanstate.exe\"
$process.StartInfo.Arguments = \" $storePath /i:$MIGUSERPATH /v:$VERBOSITY /ue:*\* /ui:NTKD0\$username /encrypt:$ENCRYPTION /keyfile:$KEYPATH$username.key /c\"
$process.StartInfo.CreateNoWindow = $true
$process.StartInfo.UseShellExecute = $false
$process.StartInfo.RedirectStandardError = $true
$process.StartInfo.RedirectStandardOutput = $true
Register-ObjectEvent -InputObject $process -EventName OutputDataReceived -action {
if (-not [string]::IsNullOrEmpty($EventArgs.data))
{
$LogBox.AppendText([Environment]::NewLine + $EventArgs.data)
}
} | Out-Null
Register-ObjectEvent -InputObject $process -EventName ErrorDataReceived -action {
if (-not [string]::IsNullOrEmpty($EventArgs.data))
{
$LogBox.AppendText([Environment]::NewLine + $EventArgs.data)
}
} | Out-Null
$process.start()
$process.BeginOutputReadLine()
$process.BeginErrorReadLine()
while ( ! $process.HasExited)
{
[System.Windows.Forms.Application]::«»DoEvents()
}[/code:1]
Le processus tourne correctement, pas de soucis à ce niveau là mais par contre la sortie du process n'apparait pas dans la RichTextBox. J'ai essayé DataReceivedEventHandler avec une fonction déléguée mais je n'arrive pas à implémenter correctement ce système avec powershell.
stackoverflow.com/questions/6521475/how-...nsole-to-richtextbox
Avez-vous une idée, une piste pour m'aider ?
Merci d'avance
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
une réponse rapido, ton code de redirections fonctionne-t-il hors d'un GUI ?
Essaie en modifiant la portée du composant en Global.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Hardware
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 4
- Remerciements reçus 0
[code:1]echo $oStdOut.ToString().Trim();[/code:1]
Mais en fait mon code ne peut absolument pas fonctionner en l'état parce que l'interface ne s'exécute pas dans le même thread que le processus.
La solution donnée sur stackoverflow fonctionne en C#
stackoverflow.com/questions/6521475/how-...nsole-to-richtextbox
Mais j'arrive pas à implémenter la solution en powershell au niveau du BeginInvoke et de l'utilisation la méthode DataReceivedEventHandler.
Message édité par: Hardware, à: 13/11/14 10:53<br><br>Message édité par: Hardware, à: 13/11/14 10:55
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Il faut sortir la caisse à outils pour ça.Mais j'arrive pas à implémenter la solution en powershell au niveau du BeginInvoke et de l'utilisation la méthode DataReceivedEventHandler.
Une exemple Winform et un autre WPF .
Hardware écrit:
Oui, on aimerait bien que cela soit aussi simple en PSLa solution donnée sur stackoverflow fonctionne en C#
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Hardware
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 4
- Remerciements reçus 0
Par contre tu aurais pas un ptit exemple un peu plus simple à appréhender, j'ai pas encore beaucoup d'expérience en Powershell. Je me demande même si je peux intégrer facilement les exemples avec HashTable à partir Powershell Studio 2014, c'est l'éditeur que j'utilise.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Vaut mieuxJe vais prendre le temps de bien lire tout ça.
Hardware écrit:
A mon avis c'est un domaine où il n'y a pas de 'petit' exemple, c'est comme la parachute quand faut sauter, faut sauter.Par contre tu aurais pas un ptit exemple un peu plus simple à appréhender
Si c'est plus 'simple', pas besoin de Runspace.
C'est le principe qu'il faut comprendre et sa mise en œuvre.
Un tutoriel sur le sujet, mais si tu débutes avec PS, je doute que tu en retires qq chose.
A toi de voir.
Hardware écrit:
Tu ne commences pas par le plus simple, même si le ton besoin l'est.j'ai pas encore beaucoup d'expérience en Powershell.
Hardware écrit:
Je pense que tu n'auras pas de soucis de côté là et au pire tu exécutes ton script dans une console.Je me demande même si je peux intégrer facilement les exemples avec HashTable à partir Powershell Studio 2014
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Rediriger la sortie d'un processus