Bonjour,
Nouveau défi pour Laurent !!
P'ti résumé :
- j'ai une plateforme de build faites avec quelques scripts PoSH. Première version sous XP Pro + PoSH v1 + PSEventing, ça marche tous les jours.
- là j'ai besoin d'évoluer, je porte tout sur W7 64 + PoSH v2 + Eventing intégré à PoSH (là où tu m'as déjà grandement aidé).
Sur cette nouvelle plateforme, j'ai un gros souci d'appels à CVS, après avoir buildé quelques projets, il m'est impossible d'appelr CVS dans la session PoSH en question. Je n'ai aucun log, aucune erreur, aucun crash, c'est juste que le process ne se lance même pas, il n'apparaît pas non plus dans le Task Manager...rien, c'est complètement muet.
Si j'ouvre une console DOS ou une 2é console PoSH, pas de souci, CVS répond à nouveau. Si je lance un autre process, genre notepad, dans ma session PoSH où j'ai le problème, pas de souci non plus, notepad se lance. Mais CVS...rien.
Voici pour info, la fonction qui me sert à lancer les process externes dans mes scripts :
Je suis comment dire....bloqué là dessus
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 function Launch-Process([System.Diagnostics.Process]$process, [string]$log, [int]$timeout = 0) { Register-ObjectEvent -InputObject $process -EventName ErrorDataReceived -SourceIdentifier Common.LaunchProcess.Error -action { if(-not [string]::IsNullOrEmpty($EventArgs.data)) { global:Log-Message $log ERROR $EventArgs.data } } Register-ObjectEvent -InputObject $process -EventName OutputDataReceived -SourceIdentifier Common.LaunchProcess.Output -action { if(-not [string]::IsNullOrEmpty($EventArgs.data)) { global:Log-Message $log Info $EventArgs.data } } $process.Start() $process.BeginErrorReadLine() $process.BeginOutputReadLine() $ret = $null if($timeout -eq 0) { $process.WaitForExit() $ret = $true } else { if(-not($process.WaitForExit($timeout))) { global:Log-Message $log WARNING "The process is not completed, after the specified timeout: $($timeout)" $ret = $false } else { $ret = $true } } # Cancel the event registrations Unregister-Event -SourceIdentifier Common.LaunchProcess.Error Unregister-Event -SourceIdentifier Common.LaunchProcess.Output $process.Close() $ret }![]()
Partager