web-dev-qa-db-fra.com

Comment supprimer la sortie d'erreur standard dans PowerShell?

Dans un script PowerShell automatiser certaines tâches SVN, j'ai la fonction suivante:

function SvnUrlExists($url)
{
  svn info $url | out-null 2>&1
  return $?
}

Comme cela teste explicitement si une URL du référentiel SVN existe, je ne suis pas intéressé par une sortie d'erreur. Cependant, malgré tout, j'ai trouvé la redirection stderr dans PowerShell suggérant 2>&1 Pour rediriger-le à stdout, (, cela génère toujours un message d'erreur :

[.____] SVN: AVERTISSEMENT: W170000: URL 'Blahblah' inexistant dans la révision 26762 [.____] SVN: E200009: impossible d'afficher des informations pour toutes cibles, car certaines cibles n'existent pas [.____]

Malheureusement, cela gâchent gravement la sortie de mon script.

Qu'est-ce que je fais mal et comment devrais-je supprimer cette sortie d'erreur?

19
sbi

Juste au cas où quelqu'un d'autre est googles pour des termes similaires que je fais:

Après avoir frappé mon front contre cela pendant des heures, bien sûr, j'ai trouvé la solution en quelques minutes après avoir posté la question ici:

svn info $url 2>&1 | out-null

Cela fonctionne comme un charme.

18
sbi

Si vous souhaitez supprimer seulement Erreur standard, utilisez:

svn info $url 2>$null
15
Daniel

On peut aussi faire cela:

svn info $url *> $null

Voir Supprimer la sortie de la console dans PowerShell

environ_redirection

3
Steven Penny

La réponse votée génère une erreur pour moi. La solution a fini par suivre:

cmd /c "MyProgram MyArguments 2>&1" | Out-Null
3
David Bertrand