BlackHatSamurai
BlackHatSamurai

Reputation: 23483

What does 2>&1 Mean in PowerShell

I have the following script:

if( $timeout -ne $null )
{
    & $var$timeout 2>&1 > $logDir\$logName
}
else
{
    & $var2>&1 >  $logDir\$logName
}

I'm curious about what 2>&1 is; or, what it represents. I don't know what it's called, otherwise, I'd look it up.

Upvotes: 38

Views: 40916

Answers (2)

latkin
latkin

Reputation: 16792

The docs are your friends. From PS> man about_Redirection

The Windows PowerShell redirection operators are as follows.

Operator  Description                Example
--------  ----------------------     ------------------------------
<snip>

2>&1      Sends errors (2) and       Get-Process none, Powershell 2>&1
          success output (1)
          to the success
          output stream.

<snip>

The syntax of the redirection operators is as follows:

   <input> <operator> [<path>\]<file>

If the specified file already exists, the redirection operators that do not
append data (> and n>) overwrite the current contents of the file without
warning. However, if the file is a read-only, hidden, or system file, the
redirection fails. The append redirection operators (>> and n>>) do not
write to a read-only file, but they append content to a system or hidden
file.

Upvotes: 34

Sean
Sean

Reputation: 62472

It redirects standard error (the 2) to the same place as standard output (the 1)

Upvotes: 44

Related Questions