Powershell: ErrorRecord рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрд╡рд░реВрдкрдг рдкрд░ рдлрд┐рд░ рд╕реЗ рдЬрд╛рдПрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 25 рдЕрдЧре░ 2017  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: PowerShell/PowerShell

ErrorRecord рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕реНрд╡рд░реВрдкрдг рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ рдФрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрдкреНрд░рд╛рдкреНрдп рд╣реИ
рдирд┐рдпрдорд┐рдд рдЕрдВрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдордЧреНрд░реАред рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕ рдкрд░ рдкреНрд░рд╕реНрддрд╛рд╡ рдЕрдВрдд рдореЗрдВ рдПрдХ RFC рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдо рдкрд╣рд▓реЗ рдпрд╣рд╛рдВ рдЗрд╕рдХреА рдЪрд░реНрдЪрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╢рд╛рдпрдж рдкреНрд░рд╛рд░реВрдк рдХреА рд╡рд╛рдЪрд╛рд▓рддрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рд╕реЗрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред ErrorRecord рдХреЗ рд╡рд┐рд╢реЗрд╖ рдЖрд╡рд░рдг рд╕реНрд╡рд░реВрдкрдг рдХреА рд╕рдорд╕реНрдпрд╛ рднреА рд╣реИред

рдкреНрд░рдЬрдирди рдХреЗ рдЪрд░рдг

# part 1
PS C:\Users\slee\repos\PowerShell> 1/0

# part 2
PS C:\Users\slee\repos\PowerShell> $error[0] | fl

рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░

# part 1
# not sure what a good message would be for end users, but keeping it simple
Attempted to divide by zero.
At line:1 char:1
+ 1/0

# part 2 (requires -f)
PS C:\Users\slee\repos\PowerShell> $error[0] | fl -f


Exception             : System.Management.Automation.RuntimeException: Attempted to divide by zero. --->
                        System.DivideByZeroException: Attempted to divide by zero.
                           --- End of inner exception stack trace ---
                           at System.Management.Automation.IntOps.Divide(Int32 lhs, Int32 rhs)
                           at System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet](CallSite site, T0 arg0, T1
                        arg1)
                           at System.Management.Automation.Interpreter.DynamicInstruction`3.Run(InterpretedFrame frame)
                           at
                        System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame
                        frame)
TargetObject          :
CategoryInfo          : NotSpecified: (:) [], RuntimeException
FullyQualifiedErrorId : RuntimeException
ErrorDetails          :
InvocationInfo        : System.Management.Automation.InvocationInfo
ScriptStackTrace      : at <ScriptBlock>, <No file>: line 1
PipelineIterationInfo : {}
PSMessageDetails      :

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░

# part 1
Attempted to divide by zero.
At line:1 char:1
+ 1/0
+ ~~~
    + CategoryInfo          : NotSpecified: (:) [], RuntimeException
    + FullyQualifiedErrorId : RuntimeException

# part 2
PS C:\Users\slee\repos\PowerShell> $error[0] | fl
Attempted to divide by zero.
At line:1 char:1
+ 1/0
+ ~~~
    + CategoryInfo          : NotSpecified: (:) [], RuntimeException
    + FullyQualifiedErrorId : RuntimeException

рдкрд░реНрдпрд╛рд╡рд░рдг рдбреЗрдЯрд╛

Name                           Value
----                           -----
PSVersion                      6.0.0-beta
PSEdition                      Core
GitCommitId                    v6.0.0-beta.6
OS                             Microsoft Windows 10.0.16350
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

Issue-Discussion Issue-Enhancement Resolution-Duplicate WG-Engine

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВ рддрд╣реЗ рджрд┐рд▓ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдореБрдЭреЗ рдЬреЗрдлрд░реА рдХреЗ рдкреБрд░рд╛рдиреЗ Resolve-ErrorRecord (рдЬрд┐рд╕реЗ рд╣рдо рдкреАрдПрд╕рд╕реАрдПрдХреНрд╕ рдореЗрдВ рд╢рд┐рдк рдХрд░рддреЗ рд╣реИрдВ) рдХреА рддрд░рд╣ рдХреБрдЫ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред рдпрд╣ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ (рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдЙрдкрдпреЛрдЧреА) рдЬрд╛рдирдХрд╛рд░реА рджреЗрддрд╛ рд╣реИ:

4:5ms> Resolve-ErrorRecord

PSMessageDetails      :
Exception             : System.Management.Automation.RuntimeException: Attempted to divide by zero. --->
                        System.DivideByZeroException: Attempted to divide by zero.
                           --- End of inner exception stack trace ---
                           at System.Management.Automation.IntOps.Divide(Int32 lhs, Int32 rhs)
                           at System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet](CallSite site, T0 arg0, T1
                        arg1)
                           at System.Management.Automation.Interpreter.DynamicInstruction`3.Run(InterpretedFrame frame)
                           at
                        System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame
                        frame)
TargetObject          :
CategoryInfo          : NotSpecified: (:) [], RuntimeException
FullyQualifiedErrorId : RuntimeException
ErrorDetails          :
InvocationInfo        : System.Management.Automation.InvocationInfo
ScriptStackTrace      : at <ScriptBlock>, <No file>: line 1
PipelineIterationInfo : {}

MyCommand             :
BoundParameters       : {}
UnboundArguments      : {}
ScriptLineNumber      : 1
OffsetInLine          : 1
HistoryId             : -1
ScriptName            :
Line                  : 1/$x
PositionMessage       : At line:1 char:1
                        + 1/$x
                        + ~~~~
PSScriptRoot          :
PSCommandPath         :
InvocationName        :
PipelineLength        : 0
PipelinePosition      : 0
ExpectingInput        : False
CommandOrigin         : Internal
DisplayScriptPosition :

Exception at nesting level 0 ---------------------------------------------------

ErrorRecord                 : Attempted to divide by zero.
WasThrownFromThrowStatement : False
Message                     : Attempted to divide by zero.
Data                        : {System.Management.Automation.Interpreter.InterpretedFrameInfo}
InnerException              : System.DivideByZeroException: Attempted to divide by zero.
TargetSite                  : System.Object Divide(Int32, Int32)
StackTrace                  :    at System.Management.Automation.IntOps.Divide(Int32 lhs, Int32 rhs)
                                 at System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet](CallSite site, T0
                              arg0, T1 arg1)
                                 at System.Management.Automation.Interpreter.DynamicInstruction`3.Run(InterpretedFrame
                              frame)
                                 at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(Interp
                              retedFrame frame)
HelpLink                    :
Source                      : System.Management.Automation
HResult                     : -2146233087

Exception at nesting level 1 ---------------------------------------------------

Message        : Attempted to divide by zero.
Data           : {}
InnerException :
TargetSite     :
StackTrace     :
HelpLink       :
Source         :
HResult        : -2147352558

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@ рд╕реНрдЯреАрд╡рдПрд▓-рдПрдордПрд╕рдПрдлрдЯреА: рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ # 3647 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред

рдореИрдВ рд╡рд╣рд╛рдВ рдХреБрдЫ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдерд╛ред рдХреНрдпрд╛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдпрд╣реАрдВ рдмрдиреЗ рд░рд╣реЗрдВ?

рдореИрдВ рддрд╣реЗ рджрд┐рд▓ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдореБрдЭреЗ рдЬреЗрдлрд░реА рдХреЗ рдкреБрд░рд╛рдиреЗ Resolve-ErrorRecord (рдЬрд┐рд╕реЗ рд╣рдо рдкреАрдПрд╕рд╕реАрдПрдХреНрд╕ рдореЗрдВ рд╢рд┐рдк рдХрд░рддреЗ рд╣реИрдВ) рдХреА рддрд░рд╣ рдХреБрдЫ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред рдпрд╣ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ (рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдЙрдкрдпреЛрдЧреА) рдЬрд╛рдирдХрд╛рд░реА рджреЗрддрд╛ рд╣реИ:

4:5ms> Resolve-ErrorRecord

PSMessageDetails      :
Exception             : System.Management.Automation.RuntimeException: Attempted to divide by zero. --->
                        System.DivideByZeroException: Attempted to divide by zero.
                           --- End of inner exception stack trace ---
                           at System.Management.Automation.IntOps.Divide(Int32 lhs, Int32 rhs)
                           at System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet](CallSite site, T0 arg0, T1
                        arg1)
                           at System.Management.Automation.Interpreter.DynamicInstruction`3.Run(InterpretedFrame frame)
                           at
                        System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame
                        frame)
TargetObject          :
CategoryInfo          : NotSpecified: (:) [], RuntimeException
FullyQualifiedErrorId : RuntimeException
ErrorDetails          :
InvocationInfo        : System.Management.Automation.InvocationInfo
ScriptStackTrace      : at <ScriptBlock>, <No file>: line 1
PipelineIterationInfo : {}

MyCommand             :
BoundParameters       : {}
UnboundArguments      : {}
ScriptLineNumber      : 1
OffsetInLine          : 1
HistoryId             : -1
ScriptName            :
Line                  : 1/$x
PositionMessage       : At line:1 char:1
                        + 1/$x
                        + ~~~~
PSScriptRoot          :
PSCommandPath         :
InvocationName        :
PipelineLength        : 0
PipelinePosition      : 0
ExpectingInput        : False
CommandOrigin         : Internal
DisplayScriptPosition :

Exception at nesting level 0 ---------------------------------------------------

ErrorRecord                 : Attempted to divide by zero.
WasThrownFromThrowStatement : False
Message                     : Attempted to divide by zero.
Data                        : {System.Management.Automation.Interpreter.InterpretedFrameInfo}
InnerException              : System.DivideByZeroException: Attempted to divide by zero.
TargetSite                  : System.Object Divide(Int32, Int32)
StackTrace                  :    at System.Management.Automation.IntOps.Divide(Int32 lhs, Int32 rhs)
                                 at System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet](CallSite site, T0
                              arg0, T1 arg1)
                                 at System.Management.Automation.Interpreter.DynamicInstruction`3.Run(InterpretedFrame
                              frame)
                                 at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(Interp
                              retedFrame frame)
HelpLink                    :
Source                      : System.Management.Automation
HResult                     : -2146233087

Exception at nesting level 1 ---------------------------------------------------

Message        : Attempted to divide by zero.
Data           : {}
InnerException :
TargetSite     :
StackTrace     :
HelpLink       :
Source         :
HResult        : -2147352558

@mklement0 рдореИрдВ рдЗрд╕реЗ рдЖрдк рдХреА рдирдХрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рд▓ рдХрд░реВрдВрдЧрд╛ https://github.com/PowerShell/PowerShell/issues/3647

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

aragula12 picture aragula12  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rudolfvesely picture rudolfvesely  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

lzybkr picture lzybkr  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

garegin16 picture garegin16  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

abock picture abock  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ