Danke @PetSerAl, das sollte den Trick tun, auch wenn es nicht so sauber ist, wie ich es mir erhofft hatte :-)
&
Ich möchte jede Ausgabe unterdrücken, wenn function_b aufgerufen wird:
Function function_a { "test" | Out-Default } function function_b { [CmdletBInding()] param() function_a } # These are the things I've tried so far to no avail: [void](function_b) $null = function_b function_b | out-null function_b *>&1 | Out-null
Windows 10 hat die Windows Update-Protokollierung geändert. Jetzt wird alles in ETL-Kanälen protokolliert, anstatt "$ env: SystemDrive \ Windows \ WindowsUpdate.log". Um die Protokolle in einem für Menschen lesbaren Format zu erhalten, müssen Sie das WindowsUpdateLog mit dem Befehl Get-WindowsUpdateLog generieren, das eine Menge nutzloses Material an die Konsole ausgibt, das ich unterdrücken möchte. Wie sich herausstellt, ist der Befehl Teil eines Moduls, und alle Hilfsfunktionen in Get-WindowsUpdateLog verwenden Out-Default. Mein Beispiel zeigt, wie das Modul aufgebaut ist.
Danke @PetSerAl, das sollte den Trick tun, auch wenn es nicht so sauber ist, wie ich es mir erhofft hatte :-)
&
Ich fand heraus, dass es möglich ist, außer dass es noch ein bisschen kaputt ist. Beispiel:
PS> function out-default {$input | out-null} #ok. Works great PS> mkdir xyz # output directory object is sent to null and not displayed to out-host
Das Problem ist, dass es zu gut funktioniert, weil wir das Objekt in einer Rückgabevariable speichern wollen.
PS> $dir = mkdir xyz2 PS> $dir #nothing to returned!
Positiv ist, dass die Außerkraftsetzung leicht überschrieben werden kann:
PS> del function:out-default
Jetzt wird das erwartete Standardverhalten zurückgesetzt:
PS> $dir = mkdir xyz3 PS> $dir Directory: C:\Users\john\sandbox\tmp2 Mode LastWriteTime Length Name --- ------------- ------ ---- --- 12/19/2017 1:26 PM xyz3 PS> mkdir xyz4 Directory: C:\Users\john\sandbox\tmp2 Mode LastWriteTime Length Name --- ------------- ------ ---- --- 12/19/2017 1:26 PM xyz4
Es wäre schön, wenn die Zuweisung einer Variablen von der Standardeinstellung getrennt wäre. Denn dann können Sie den Out-Default für das gesamte Skript einfach Out-Null zuweisen, ohne sich Gedanken darüber machen zu müssen, dass das Skript beschädigt wird.