Je suis nouveau dans powershell et il semble que j'ai du mal avec son concept de "pipes". Comme je le comprends :
Write-Host
écrit sur "la console" mais ne peut pas être réutilisé/ capturé par d'autres scriptsWrite-Output
met quelque chose dans la pipe. Si le contenu de la pipe n'est pas utilisé ailleurs, il est affiché sur la console. Un script appelant peut utiliser la sortie.
Dans la plupart des langages de script que je connais, vous pouvez écrire sur la console de n'importe où de manière à ce qu'elle puisse être utilisée par d'autres scripts appelants sans affecter la valeur de retour d'une fonction.
Alors :
- Quel est l'avantage de ceci? Pour le moment, cela semble élégant par conception mais pas vraiment pratique.
- Comment puis-je écrire la sortie du script à partir d'une fonction sans affecter sa valeur de retour (non, je ne peux pas utiliser
[Write-Host][1]
) -
Comment puis-je écrire la sortie du script à partir d'un callback/événement comme dans
$ect = Register-ObjectEvent -InputObject $ps -Action { Write-Somewhere $EventArgs.Data } -EventName 'ErrorDataReceived'
Contexte : le script est appelé à partir d'un fichier wrapper, qui est lui-même appelé à partir d'un fichier wrapper appelé depuis Jenkins. Write-Output est correctement enregistré mais je ne peux pas l'utiliser partout. Je veux éviter de mettre du texte dans un fichier temporaire et le relire à la fin pour conserver le timing.