50 votes

Comment capturer la sortie dans une variable plutôt que dans un fichier journal ?

Cela permet d'écrire la sortie dans un fichier journal :

& $Env:WinDir\system32\inetsrv\appcmd.exe >test.log

Mais que se passe-t-il si je veux conserver la sortie dans une variable de type chaîne de caractères pour l'utiliser dans le corps de l'e-mail ?

J'ai essayé sans succès

$test = ""
& $Env:WinDir\system32\inetsrv\appcmd.exe >$test

Write-Host $test

55voto

manojlds Points 96599

Vous devez le faire :

$test = & $Env:WinDir\system32\inetsrv\appcmd.exe

Si vous voulez rediriger l'erreur aussi, ajoutez 2>&1 à la fin.

23voto

Gunasekaran Points 31

Capturer la sortie d'un exécutable est aussi simple que,

$cmdOutput = &"Application.exe" 2>&1

2>&1 - Inclut le flux d'erreur dans la sortie

Le type de retour de l'exécutable dans PowerShell est un tableau de chaînes de caractères . En cas d'enregistrement de telles sorties,

Write-Host $cmdOutput

affichera les chaînes du tableau dans le flux de sortie, séparées par des espaces.

Pour les imprimer à la manière d'une chaîne de caractères par ligne, choisissez

Write-Output $cmdOutput

ou

$cmdOutput = &"Application.exe" | Out-String
Write-Host $cmdOutput

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X