123 votes

Redirection de la sortie vers $null dans PowerShell, mais en s'assurant que la variable reste définie

J'ai un peu de code :

$foo = someFunction

Cela produit un message d'avertissement que je veux rediriger vers $null :

$foo = someFunction > $null

Le problème est que lorsque je fais cela, tout en supprimant avec succès le message d'avertissement, cela a aussi l'effet secondaire négatif de NE PAS remplir $foo avec le résultat de la fonction.

Comment rediriger l'avertissement vers $null, tout en gardant $foo renseigné ?

Par ailleurs, comment rediriger la sortie standard et l'erreur standard vers null (sous Linux, c'est 2>&1 .)

0voto

mjolinor Points 23012

En supposant que le message d'erreur soit renvoyé en premier :

 $foo = someFunction
 $foo = $foo[1]

Si la valeur de la variable est renvoyée en premier :

 $foo = someFunction
 $foo = $foo[0]

0voto

Inoperable Points 466

Récemment, j'ai dû fermer powershell sur un hôte Linux, ce qui n'était pas évident à comprendre. Après des allers-retours, j'ai découvert que le fait d'envelopper une commande dans $( ) et l'ajout d'une redirection explicite après le wrapper fonctionne.

Tout ce que j'ai essayé d'autre n'a pas fonctionné - je ne sais toujours pas pourquoi puisque les documents PowerShell sont d'une qualité souhaitable (et pleins d'incohérences...).

Pour importer tous les modules au démarrage, j'ai ajouté ce qui suit. Cela a produit une sortie stderr par powershell qui n'a pas pu être arrêtée par ErrorAction ou la redirection sans utiliser le wrapping...

Si quelqu'un pouvait expliquer pourquoi, ce serait très apprécié.

 # import installed modules on launch 
 $PsMods = $(Get-InstalledModule); 
 $($PsMods.forEach({ Import-Module -Name $_.Name -ErrorAction Ignore })) *> /dev/null

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