Obrigado @PetSerAl, isso deve funcionar mesmo que não seja tão limpo quanto eu esperava: -)
&{Set-Alias Out-Default Out-Null; Get-WindowsUpdateLog ...}
Gostaria de suprimir qualquer saída e, em seguida, function_b é invocado:
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
O Windows 10 introduziu uma alteração no registro do Windows Update. Tudo agora está registrado em canais ETL em vez de "$ env: SystemDrive \ Windows \ WindowsUpdate.log". Para obter os logs em um formato legível por humanos, você precisa gerar o WindowsUpdateLog com o Comando Get-WindowsUpdateLog, que expele muitas coisas inúteis para o console que gostaria de suprimir. Como se constata, o comando faz parte de um módulo e as funções auxiliares em Get-WindowsUpdateLog usam Out-Default. Meu exemplo ilustra a maneira como o módulo é construído.
Obrigado @PetSerAl, isso deve funcionar mesmo que não seja tão limpo quanto eu esperava: -)
&{Set-Alias Out-Default Out-Null; Get-WindowsUpdateLog ...}
Eu descobri que é possível, exceto que ainda está um pouco quebrado. Exemplo:
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
O problema é que ele funciona muito bem, porque digamos que você queira salvar o objeto em uma variável de retorno.
PS> $dir = mkdir xyz2
PS> $dir
#nothing to returned!
No lado positivo, a substituição de out-default é fácil de excluir:
PS> del function:out-default
Agora, o comportamento padrão esperado é revertido:
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
Seria bom se a atribuição de uma variável fosse separada de out-default. Porque então você poderia simplesmente deixar o out-default designado como out-null para o script inteiro sem se preocupar em quebrar o script.