Comment puis-je supprimer la sortie d'erreur standard dans PowerShell?
Dans un script PowerShell automatisation de certaines SVN tâches que j'ai la fonction suivante:
function SvnUrlExists($url)
{
svn info $url | out-null 2>&1
return $?
}
Depuis cette explicitement teste si certains référentiel SVN URL existe, je ne suis pas intéressé dans la sortie d'erreur. Toutefois, en dépit de tout ce que j'ai trouvé à propos de la redirection stderr
dans PowerShell suggérant 2>&1
de le rediriger vers stdout
, ce encore renvoie un message d'erreur:
svn: avertissement: W170000: URL " blahblah inexistante dans la révision 26762 svn: E200009: impossible d'afficher les informations de toutes les cibles parce que certains objectifs n'existent pas
Malheureusement, cette situation a gravement bousille la sortie de mon script.
Ce que je fais mal, et comment dois-je supprimer cette erreur de sortie?
OriginalL'auteur sbi | 2012-08-15
Vous devez vous connecter pour publier un commentaire.
Juste au cas où quelqu'un d'autre googles pour des termes similaires que j'ai fait:
Après j'ai été frapper mon front contre cela pendant des heures, bien sûr, j'ai trouvé la solution en quelques minutes après la publication de la question ici:
Cela fonctionne comme un charme.
$() | out-null
pour obtenir le même effet. Par exemple:$( svn info $url 2>&
) | null". Je le fais quand la commande est très long, ou j'ai besoin de casser plus de quelques lignes dans un script.Ah, merci. Cependant, n'aurait-il pas d'être
$( svn info $url ) 2>&1 | out-null
? (Notez l'emplacement de la2>&1
.)Oh wow, j'ai complètement mal lu ton post. Oui, il devrait être
$(svn info $url) | out-null
. Il dépend de l'endroit où vous souhaitez que le contrôle d'erreur se produire pour le2>&1
. Je ne peux pas dire sans le tester, mais je ne pense pas qu'il devrait importe si c'est à l'intérieur de la)
ou à l'extérieur. Vous pourriez être effectivement en mesure de simplement laisser les2>&1
complètement, comme je l'ai dit, sans tester, je ne peux pas en être sûr.il fonctionne, mais si vous l'utilisez dans un script, il sera la cause de l'erreur d'arrêter le script. Cela pourrait ne pas être un effet secondaire.
PS script [...] j'ai la fonction suivante".
OriginalL'auteur sbi
Si vous souhaitez supprimer seulement d'erreur standard, utilisation:
OriginalL'auteur Daniel
L'voté réponse génère une erreur pour moi. La solution a fini par être le suivant:
Bizarre, en effet; c'est un bug: github.com/PowerShell/PowerShell/issues/4002
OriginalL'auteur David Bertrand
On peut aussi le faire:
Voir Supprimer la sortie de la console en PowerShell
about_Redirection
OriginalL'auteur Steven Penny