web-dev-qa-db-fra.com

Supprimer la sortie des commandes non PowerShell?

Je lance une commande

hg st

puis en vérifiant que c'est $LASTEXITCODE pour vérifier la disponibilité de Mercurial dans le répertoire actuel. Je me fiche de sa sortie et je ne veux pas la montrer à mes utilisateurs.

Comment supprimer TOUTES les sorties, succès ou erreurs?

Étant donné que Mercurial n'est pas un commandlet PowerShell hg st | Out-Null ne marche pas.

24
George Mauer

Out-Null fonctionne très bien avec les commandes non PowerShell. Cependant, il ne supprime pas la sortie sur STDERR, seulement sur STDOUT. Si vous souhaitez également supprimer la sortie sur STDERR, vous devez rediriger ce descripteur de fichier vers STDOUT avant de rediriger la sortie vers Out-Null:

hg st 2>&1 | Out-Null

2> redirige toutes les sorties de STDERR (descripteur de fichier # 2). &1 fusionne la sortie redirigée avec la sortie de STDOUT (descripteur de fichier # 1). La sortie combinée est ensuite imprimée dans STDOUT d'où le tuyau peut l'introduire dans STDIN de la commande suivante de la ligne de commande (dans ce cas Out-Null). Voir Get-Help about_Redirection pour plus d'informations.

55
Ansgar Wiechers

Une chose amusante que vous pouvez faire est de diriger la sortie vers Write-Verbose, puis vous pouvez toujours la voir si vous en avez besoin en exécutant votre script avec le commutateur -Verbose.

ping -n 2 $APP 2>&1 | Write-Verbose
4
Dexter Bacchus

Peut aussi faire ça

hg st *> $null

Powershell supprime la sortie de la console

3
Steven Penny