Skip to content

Using a 2> error-stream redirection with cmdlets still records error records in $Error #4572

@mklement0

Description

@mklement0

Closely related to #4002, which discusses the problem with respect to invoking external utilities, where it has additional side effects.

Any attempt to redirect the error-output stream with 2> causes the errors unexpectedly be recorded in the $Error collection as well.

While this could be considered as designed, it may contravene user expectations, especially with 2>$null.

Steps to reproduce

$Error.Clear(); Get-Item /NoSuch 2>$null; $Error

Expected behavior

No output.

Actual behavior

Get-Item : Cannot find path '/NoSuch' because it does not exist.
...

That is, despite the explicit intent to discard error output, it was recorded in $Error behind the scenes.

Similarly, redirecting to a file exhibits the same behavior.

Environment data

PowerShell Core v6.0.0-beta.5 on macOS 10.12.6
PowerShell Core v6.0.0-beta.5 on Ubuntu 16.04.3 LTS
PowerShell Core v6.0.0-beta.5 on Microsoft Windows 10 Pro (64-bit; v10.0.15063)
Windows PowerShell v5.1.15063.483 on Microsoft Windows 10 Pro (64-bit; v10.0.15063)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions