2016-05-05 1 views
2

Je sais que c'est un peu bête, mais j'ai configuré un profil personnalisé que je termine avec un Clear-Host commandlet pour Powershell et je déteste que la sortie des commandlets précédentes clignote sur l'écran. J'ai décidé d'envoyer la sortie à zéro dans une tentative de supprimer la sortie, .: par exemple

New-Alias -Name note -Value notpad.exe > $null 

Il semble fonctionner, mais je ne suis pas tout à fait certain de ce que la commande est en train de faire. Est-ce que ça va?

Répondre

4

> is a redirection operator. Ceci est courant dans le monde informatique, dans unix (> /dev/null) et dans Windows (> NUL). Souvent, il est utilisé pour écrire sur des fichiers ou des périphériques. Dans ce cas, vous ne l'envoyez nulle part.

D'autres façons de le faire dans PowerShell:

Get-Something | Out-Null 
[void](Get-Something) 
$null = Get-Something 

Also here's a performance comparison between the methods.

+1

Le petit jeu d'échantillons utilisé dans la réponse que vous avez liée masque le fait que l'affectation '$ null' et la conversion' void' sont plus rapides que la redirection. Essayez [celui-ci] (https://gist.githubusercontent.com/IISResetMe/610deb873a96f331039d/raw/1175e21dcc410e4acbd41789c87ea7cf1e7ee666/Test-NullPerformance.ps1) avec 1 million d'itérations ou plus –

2

L'ajout de > $null à la fin d'un pipeline (ou d'une seule expression) élimine tout résultat qui irait à la sortie par défaut.

Il s'agit d'une façon (parmi plusieurs) d'éliminer les sorties en excès (ou de renvoyer des données si elles sont dans une fonction).

Dans le cas de New-Alias, il retournerait normalement un résultat représentant le nouvel alias, mais parfois cette sortie devient gênante.