What is `$?` in Powershell?
powershell
Solution
It returns `true` if the last command was successful, else `false`.
However, there are a number of caveats and non-obvious behaviour (e.g. what exactly is meant by "success"). I strongly recommend reading this article for a fuller treatment.
For example, consider calling Get-ChildItem.
PS> Get-ChildItem
PS> $?
True
$? will return `True` as the call to Get-ChildItem succeeded.
However, if you call Get-ChildItem on a directory which does not exist it will return an error.
PS> Get-ChildItem \Some\Directory\Which\Does\Not\Exist
Get-ChildItem : Cannot find path 'C:\Some\Directory\Which\Does\Not\Exist' because it does not exist.
PS> $?
False
$? will return `False` here, as the previous command was not successful.
Problem
What is the meaning of `$?` in Powershell? Edit: TechNet answers in tautology, without explaining what 'succeed' or 'fail' mean. $? Contains the execution status of the last operation. It contains TRUE if the last command succeeded and FALSE if it failed. I presumed `$?` would simply test whether `$LastExitCode` is 0, but I found a counter example where `$?` is False but `$LastExitCode` is True.