2016-05-05 6 views
2

Ich weiß, dass dies ein wenig dumm ist, aber ich habe ein benutzerdefiniertes Profil eingerichtet, dass ich mit einem Clear-Host Commandlet für Powershell enden und ich hasse es, dass die Ausgabe der vorherigen Commandlets auf dem Bildschirm blinkt. Ich beschloss, die Ausgabe auf null in einem Versuch zu senden, um die Ausgabe zu unterdrücken, z.B .:

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

Es scheint zu funktionieren, aber ich bin nicht ganz sicher, was der Befehl tut. Ist es in Ordnung, dies zu tun?

Antwort

4

> is a redirection operator. Dies ist in der Computerwelt üblich, in Unix (> /dev/null) und in Windows (> NUL). Oft wird es zum Schreiben in Dateien oder Geräte verwendet. In diesem Fall senden Sie es nirgendwohin.

Andere Möglichkeiten in Powershell zu tun:

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

Also here's a performance comparison between the methods.

+1

Der kleine Beispielsatz in der Antwort, die Sie verknüpft haben, verschleiert die Tatsache, dass '$ null' Zuweisung und' void' Umwandlung schneller ist als Umleitung. Versuchen Sie [diese] (https://gist.githubusercontent.com/IISResetMe/610deb873a96f331039d/raw/1175e21dcc410e4acbd41789c87ea7cf1e7ee666/Test-NullPerformance.ps1) mit 1 Million Iterationen oder mehr –

2

Das Hinzufügen von > $null zum Ende einer Pipeline (oder eines einzelnen Ausdrucks) verwirft jedes Ergebnis, das an die Standardausgabe übergeben würde.

Es ist eine (von mehreren) Möglichkeit, überschüssige Ausgabe zu entfernen (oder Daten zurückgeben, wenn in einer Funktion).

Im Fall von New-Alias würde es normalerweise ein Ergebnis zurückgeben, das den neuen Alias ​​darstellt, aber manchmal stößt diese Ausgabe in den Weg.