Поскольку вы все равно используете перенаправление потока - 2>&1
для объединения потока ошибок PowerShell (из stderr git
) в поток успеха (из stdout)) - самое простое решениедолжен перенаправить все потоки (*
) на $null
с *> $null
;упрощенный пример:
# Note: This command produces both stdout and stderr output.
cmd /c "echo hi & dir \nosuch" *> $null
# PowerShell Core example with Bash:
bash -c 'echo hi; ls \nosuch' *> $null
Тем не менее, в общем рассмотрим $null = ...
для отбрасывания (успешного) вывода команды , потому что оно:
Применимо к приведенным выше примерам:
$null = cmd /c "echo hi & dir \nosuch" 2>&1
$null = bash -c 'echo hi; ls \nosuch' 2>&1
[1] In PowerShell Core, Out-Null
имеет оптимизацию, если единственным предшествующим сегментом конвейера является выражение без побочных эффектов, а не вызов командлета или функции;Например, 1..1e6 | Out-Null
выполняется почти мгновенно, потому что выражение, похоже, даже не выполняется.Однако такой сценарий нетипичен, и функционально эквивалентный Write-Output (1..1e6) | Out-Null
занимает много времени, намного дольше, чем $null = Write-Output (1..1e6)
.