#3240 рд╕реЗ рдЕрдиреБрд╡рд░реНрддреАред
рд╢реВрдиреНрдп-рд╕рд╢рд░реНрдд рд╕рджрд╕реНрдп рдкрд╣реБрдВрдЪ ( ?.
) рд▓рд╛рдЧреВ рдХреА рдЧрдИ рдереА рдФрд░ 7.0 рдореЗрдВ рдПрдХ _рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ_ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧреА
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд╣рд┐рдд рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЪрд░ рдирд╛рдо {...}
рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реЛ , рдХреНрдпреЛрдВрдХрд┐ ?
рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдПрдХ рдЪрд░ рдирд╛рдо рдореЗрдВ рдПрдХ рдХрд╛рдиреВрдиреА рдЪрд░рд┐рддреНрд░ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ _doesn't_ {...}
рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
рдпрд╣реА рд╣реИ, рдпрджрд┐ рдЖрдк $obj.Method()
рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрджрд┐ $obj
$null
(рдпрд╛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд) рд╣реИ, рддреЛ рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░реЗрдВрдЧреЗ, рд╕реА # рдХреЗ рд╕рдорд╛рди:
# Does NOT work as intended.
# 'obj?' as a whole is interpreted as the variable name.
$obj?.Method()
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
# !! Must enclose 'obj' in {...} to signal that '?' is a syntactic element as part of '?.'
${obj}?.Method()
_рдЕрдкрдбреЗрдЯ_: рдирд▓-рдХреЛрд▓реЗрд╕рд┐рдВрдЧ - $var??='default
рдФрд░ $a??$b
- рдФрд░ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ - $var?1:0
- рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ ?
рд╕реЗ рдкрд╣рд▓реЗ рд╡реНрд╣рд╛рдЗрдЯрд╕реНрдкреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИ)ред
рдпрд╣ рдЖрд╡рд╢реНрдпрдХрддрд╛ (рдП) рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдФрд░ (рдмреА) рдмреЛрдЭрд┐рд▓ рд╣реИ:
рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ {...}
рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдЬрд╛рди рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдкрд░ _it_ рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рд╕рдВрднрд╡рддрдГ _undetected_, рдЬрдм рддрдХ рдХрд┐ Set-StrictMode -Version 2
рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдкреНрд░рднрд╛рд╡ рдореЗрдВ рди рд╣реЛ): $o = [pscustomobject] @{ one = 1 }; $o?.one
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдмрд╛рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ _do_ рдХреЛ {...}
рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдЪрд▓ рдЬрд╛рддрд╛ рд╣реИ:
{...}
рдЯрд╛рдЗрдк рдХрд░рдирд╛ рдХрдард┐рди рд╣реИред{...}
рдЙрдкрдпреЛрдЧ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдпрд╣ _рдмреНрд░реЗрдХрд┐рдВрдЧ_ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рдпрдХреАрдирди рдмрдХреЗрдЯ 3 рдореЗрдВ рдЖрддрд╛ рд╣реИ рдЧреНрд░реЗ рдПрд░рд┐рдпрд╛ ред
рдиреЛрдЯ: @rjmholt рдЪрд░реНрдЪрд╛ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдкрд╛рд╡рд░рд╢реЗрд▓ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдмрджрд▓рдирд╛ рдЕрддреНрдпрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд _in рд╕рд╛рдорд╛рдиреНрдп_ рдХреНрдпреЛрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдиреАрдЪреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдпрд╣рд╛рдВ рдЕрдкрд╡рд╛рдж рдмрдирд╛рдиреЗ рд▓рд╛рдпрдХ рд╣реИред
?.
рдПрдХ _new_ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ; рдкрд░рд┐рднрд╛рд╖рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЬреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ _cannot_ (рд╕рд╛рд░реНрдердХ рд░реВрдк рд╕реЗ) рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ - рдЬрдм рддрдХ рдХрд┐ рдЖрдк рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рд╢рд░реНрдд рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рд╡рд┐рд░рд╛рд╕рдд-рд╕рдВрд╕реНрдХрд░рдг-рд╕рдВрдЧрдд рдХреЛрдб рдкрде рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╢рд╛рдпрдж рд╣реА рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд▓рдЧрддрд╛ рд╣реИ - рддрдм рдЖрдк рдХреЗрд╡рд▓ рд╡рд┐рд░рд╛рд╕рдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд░рд╣реЗрдВрдЧреЗред
рд╣рд╛рдВ, рдкреБрд░рд╛рдиреА рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ $var?.foo
рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЬреЛ рдПрдХ рдЪрд░ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ $var?
рдХрд░рддреА рд╣реИ, рдЯреВрдЯ рдЬрд╛рдПрдЧреА, рд▓реЗрдХрд┐рди:
?
рдХреЛ рдХрднреА рднреА рдХрд┐рд╕реА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП _рдЗрд╕реЗ {...}
_ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд┐рдП рдмрд┐рдирд╛ред
рдЪреВрдВрдХрд┐ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╣реИ рдФрд░ рд╢рд╛рдпрдж _рдЕрдЬреНрдЮрд╛рдд_ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдРрд╕реЗ рдЪрд░ рдирд╛рдо рдЬрдВрдЧрд▓реА рдореЗрдВ рдмрд╣реБрдд рджреБрд░реНрд▓рдн рд╣реИрдВ, рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрднрд╡ рд╕реЗ рдмреЛрд▓рддреЗ рд╣реБрдП, рд▓реЗрдХрд┐рди @mburszley рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЕрдзрд┐рдХ рдареЛрд╕ рд╕рдмреВрдд рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ ред
?
(рдФрд░ !
) рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рд╡рд╣рд╛рдВ рдХреЗрд╡рд▓ _method_ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИрдВ, рдФрд░ рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд░реВрдмреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ _not_ рдорд╛рди рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЕрдиреНрдп рднрд╛рд╖рд╛рдПрдВ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИрдВ рдПрдХ рд╣реА рдмрд╛рддредрддреЛ, рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдмреЛрд▓рдирд╛:
рдореМрдЬреВрджрд╛ рдХреЛрдб рдХрд╛ рд╡рд┐рд╢рд╛рд▓ рдмрд╣реБрдордд рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ - $var?.foo
рдЬреИрд╕реЗ рдЯреЛрдХрди рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдпрджрд┐ рдЖрдк рдирдП рд╢рдмреНрджрд╛рд░реНрде рдХреЗ рд╕рд╛рде $var?.foo
рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рд╛рдБ, рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдПрдХ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХреЗ рд╕реЗ рддреЛрдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп), рдЬреЛ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рдЦреНрдд рдореЛрдб рдХреНрдпрд╛ рдкреНрд░рднрд╛рд╡ рдореЗрдВ рд╣реИ - рд▓реЗрдХрд┐рди _рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдЪрд╛рд╣рд┐рдП рд╡реИрд╕реЗ рднреА рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдиреНрдпреВрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ_ ( #requires -Version
, рдореЙрдбреНрдпреВрд▓-рдореИрдирд┐рдлреЗрд╕реНрдЯ рдХреБрдВрдЬрд┐рдпрд╛рдБ)ред
рд╕рдм рдХреБрдЫ, рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдмрд╛рд▓реНрдЯреА 3 рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдорд╛рдорд▓рд╛ рд╣реИ: рдПрдХ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд╛рдн рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╕рдордп рдмрд╣реБрдд рдХрдо рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ (рдпрд╛, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдХрд╛рд░рдг рдмрд╛рд░рд╣рдорд╛рд╕реА рд╕рд┐рд░рджрд░реНрдж рд╕реЗ рдмрдЪрдирд╛)ред
рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореАрд▓ рдХрд╛ рдкрддреНрдерд░ рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЯреАрдо рдХреЛ рдлреАрдбрдмреИрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ рд╣рдо рдпрд╣ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реИрдВред
@mklement0
? рдХрд┐рд╕реА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реЗ {...} рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд┐рдП рдмрд┐рдирд╛ рдХрднреА рднреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП рдереАред
рдЙрдореНрдореНрдо - рдкрд╛рд╡рд░рд╢реЗрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЖрдзрд╛рд░ рднрд╛рд╖рд╛ рдкреЙрдЬрд╝рд┐рдХреНрд╕ рд╢реИрд▓ рдереА рдЬреЛ $ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ? рдирд┐рдХрд╛рд╕ рдХреЛрдб qed '?' рдХреЗ рд▓рд┐рдП рдЧреИрд░-рдЙрджреНрдзреГрдд рдЪрд░ рдирд╛рдореЛрдВ рдореЗрдВ рдЕрдиреБрдордд рд╣реИред
рдпрд╣ (рд╕рд╛рд░реНрдердХ рд░реВрдк рд╕реЗ) рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдирд╣реАрдВ рдЪрд▓ рд╕рдХрддрд╛
рдЬрд╝рд░реВрд░ рдпрд╣ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
PS> $abc?=@{a=1; b=2; c=3}
PS> $abc?.b 1
PS> 2
рдЬрд╝рд░реВрд░ рдпрд╣ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
рдпрд╣ рдЕрд░реНрдердкреВрд░реНрдг рдврдВрдЧ рд╕реЗ рдирд╣реАрдВ рдЪрд▓ рд╕рдХрддрд╛ _рд╕рд╛рде рдореЗрдВ рдирдП рд╢рдмреНрджрд╛рд░реНрде_ (рдЕрд╢рдХреНрдд-рд╕рд╢рд░реНрдд рдкрд╣реБрдВрдЪ) - рдмрд╕ рдЗрддрдирд╛ рд╣реА рдореИрдВ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рд╣рд╛рдВ, рдЖрдкрдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди _рд╡рд┐рднрд┐рдиреНрди рд╢рдмреНрджрд╛рд░реНрдереЛрдВ рдХреЗ рд╕рд╛рде_ ( abc?
_ рдЬрд┐рд╕рдореЗрдВ ?
_ рдХреЛ рдЪрд░ рдирд╛рдо рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ) - рд▓реЗрдХрд┐рди рдмрддрд╛рдП рдЧрдП рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХреЛрдиреЗ рдХрд╛ рдорд╛рдорд▓рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝рдиреЗ рд▓рд╛рдпрдХ рд╣реИ ?.
рдЙрдореНрдореАрдж рдХреЗ
рдкреЙрд╡рд░рд╢реЗрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЖрдзрд╛рд░ рднрд╛рд╖рд╛ рдкреЙрдЬрд╝рд┐рдХреНрд╕ рд╢реЗрд▓ рдереА рдЬреЛ рдирд┐рдХрд╛рд╕ рдХреЛрдб рдХреЗ рд▓рд┐рдП
$?
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ
$?
POSIX рдЬреИрд╕реЗ рдЧреЛрд▓реЗ рдореЗрдВ рдПрдХ _exception_ рд╣реИ; рдЖрдк рдирд┐рдореНрди рдХрд╛рд░реНрдп _not_ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
# bash, ksh, zsh, dash (all common /bin/sh implementations)
foo?='bar' # BOOM! E.g. "bash: foo?=bar: command not found"
(рдФрд░, рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдХреЛрдИ рднреА рдпрд╣ рдирд╣реАрдВ рдкреВрдЫ рд░рд╣рд╛ рд╣реИ рдХрд┐ PowerShell рдореЗрдВ $?
рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПред)
рдФрд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХрд┐ _all other_ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЪрд░ $?
(рдпрд╛рдиреА, $^
рдФрд░ $$
) рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд┐рд╢реЗрд╖ рд╣реИрдВ- рдЯреЛрдХрдирдирд╛рдЗрдЬрд╝рд░ рдореЗрдВ рдХреЗрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдФрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдРрд╕рд╛ рд╣реА рд╣реИ $?
, рднрд▓реЗ рд╣реА рдпрд╣ (рд╡рд░реНрддрдорд╛рди рдореЗрдВ) рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдореБрдЭреЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЙрд╕ рд╕рдордп рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛ рдХрд┐ рдХреЛрдб рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ ?
рдПрдХ рд╡реИрдз рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЪрд░рд┐рддреНрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдиреЗ рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЪрд░ рдирд╛рдореЛрдВ рдХреЗ рдЕрдВрдд рдореЗрдВ ?
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рд╡рд╣ рд╣реИ @StartAutomatingред рдЪреВрдВрдХрд┐ рдЙрд╕рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕ рд╡рд╛рдХреНрдп-рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЙрд╕рдХрд╛ рдзреНрдпрд╛рди рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреА рдУрд░ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╕рдордЭрд╛ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ @ vexx32 , $?
рд╡рд┐рд╢реЗрд╖ рдЖрд╡рд░рдг рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд░ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ ?
рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП $??? = 'foo'
рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд╛рдо рдЕрд▓реНрдлрд╝рд╛рдиреНрдпреВрдореЗрд░рд┐рдХ рд╡рд░реНрдгреЛрдВ рдпрд╛ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕рдореЗрдВ рдЕрд▓реНрдлрд╝рд╛рдиреНрдпреВрдореЗрд░рд┐рдХ рд╡рд░реНрдг, рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдпрд╛ рдкреНрд░рд╢реНрдирд╡рд╛рдЪрдХ рдЪрд┐рд╣реНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ ?.
рдХреЛ рд╢реВрдиреНрдп-рд╕рд╢рд░реНрдд рд╕рджрд╕реНрдп рдПрдХреНрд╕реЗрд╕ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдореИрдВ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдЯреЛрдХрдирдирд╛рдЗрдЬрд╝рд░ рдореЗрдВ ?
рд╡рд┐рд╢реЗрд╖-рдЖрд╡рд░рдг рдХреНрдпреЛрдВ рд╣реИред
рдЗрд╕ рдЪреИрдЯ рдкрд░ рдореЗрд░рд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдХреНрдпрд╛ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ:
рддреЛ, рдЧрдгрд┐рдд рдЪрд▓рд╛рдирд╛, рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _not_ рдХреЗ рдХрдИ рдареЛрд╕ рдХрд╛рд░рдг рд╣реИрдВ, рдФрд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдЕрд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдг рд╣реИ (рдпрд╣ _might_ рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред рдХреЗ рдХрдо рдкреНрд░рд╕рд╛рд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП? рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдирд╛рдореЛрдВ рдореЗрдВ, рдЖрдк рдиреБрдХрд╕рд╛рди рд╕реЗ рдЕрдзрд┐рдХ рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдпрд╣ рдПрдХ рд╕рд┐рдХреНрдХрд╛-рдЯреЙрд╕ рд╣реИред
рд▓рд╛рдн рдХреА рдЗрд╕ рддрд░рд╣ рдХреА рд╕рд┐рдХреНрдХрд╛-рдЯреЙрд╕ рдХреНрд╖рдорддрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рд░реЙрдмрд░реНрдЯ рдореИрдХрдирд╛рдорд╛рд░рд╛ рдХреЛ рд╕рдордЭрд╛рдКрдВрдЧрд╛ "рдЕрдЧрд░ рд╣рдо рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдЧрд░ рд╣рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЕрдЧрд░ рд╣рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдореИрдВ рд░рдлрд╝реВ рд╣реЛ рдЬрд╛рдКрдВрдЧрд╛"ред
рдореИрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ $obj?.Method()
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ $<var i="6">obj</var>
?.
<var i="9">Method</var>()
рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░реЗ, рдФрд░ рдХреЗрд╡рд▓ $<var i="11">obj?</var>
.
<var i="14">Method</var>()
рдЬрдм $obj
рджрд╛рдпрд░реЗ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди $obj?
рдХрд░рддрд╛ рд╣реИ рдФрд░ #requires┬атАСVersion
v7+ рдирд╣реАрдВ рд╣реИред
@ рдПрдХреНрд╕рдИ-рдмреЙрд╕, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдирд┐рдпрдо рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдкрд╡рд╛рдж рд╣реИрдВред
рдореИрдВ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдирд┐рдпрдо рдХреЗ рдореВрд▓реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреЗ рдкреНрд░рд╢реНрди рдХреЛ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдВред
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ "рд╡реЗрд░рд┐рдПрдмрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рдФрд░ рдХреНрдпрд╛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдо рддреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ?"
рдпрджрд┐ рд╕рд░реНрд╡рд╕рдореНрдорддрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП ${...}
рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рддреЛ рдпрд╣рд╛рдВ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рдорд░реНрдерди рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рдПрдЧреА, рддрд╛рдХрд┐ рдореЗрд░реЗ рдЬреИрд╕реЗ рд▓реЛрдЧ рдЬреЛ рдЗрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ (рдореИрдВ рдЗрд╕реЗ _a рд▓реЙрдЯ_ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛) рд╢реЛрд░ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рд╕рдХрддреЗ рд╣реИрдВ .
рдЪреВрдВрдХрд┐ рд╣рдо рдпрд╣рд╛рдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:
"рддрд░реНрдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрддреЛрдВ рдХреА рдЬрд╝рд░реВрд░рддреЗрдВ рдХреБрдЫ рдХреА рдЬрд╝рд░реВрд░рддреЛрдВ рдкрд░ рднрд╛рд░реА рдкрдбрд╝рддреА рд╣реИрдВред" - рд╕реНрдкреЙрдХ
рддреЛ, рдЧрдгрд┐рдд рдЪрд▓рд╛рдирд╛, рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _not_ рдХреЗ рдХрдИ рдареЛрд╕ рдХрд╛рд░рдг рд╣реИрдВ, рдФрд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдЕрд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдг рд╣реИ (рдпрд╣ _might_ рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред
@StartAutomating : рдХрдИ рдХрд╛рд░рдг рд╣реИрдВ, рдФрд░ рд╡реЗ рдареЛрд╕ рд╣реИрдВ, рдЕрд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИрдВред рд╕рд╛рде рд╣реА, рдЗрд╕рдХрд╛ рдПрдХ рд▓рдХреНрд╖реНрдп рдХреЛрдб рд╕рд░рд▓рддрд╛ рд╣реИред рдЪрд░ рдирд╛рдореЛрдВ рдХреЛ {}
рд╕рд╛рде рд▓рдкреЗрдЯрдирд╛ рд╕реАрдзреЗ рдЙрд╕ рд▓рдХреНрд╖реНрдп рдХреЗ рд╡рд┐рд░реБрджреНрдз рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рдЗрд╕ рдкрд░ @mklement0 рдФрд░ @KirkMunro рдХреЗ рд╕рд╛рде рд╣реВрдВред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ ${...}?
рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЕрдкреНрд░рд╛рдХреГрддрд┐рдХ рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЬрдЯрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рд╣реИрдВ рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рдмрджрд▓реЗ рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЫреЛрдЯреА рдХреАрдордд рд╣реИред
@StartAutomating
- рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдЪрд░ рдирд╛рдореЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд▓реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ ${} рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реАрдЦрддреЗ рд╣реИрдВ ( рдЖрдк рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХреЗ рд╕рд╛рде рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╣рд┐рдЯ рдХрд░реЗрдВрдЧреЗ )ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ "рдЬреЛ рд▓реЛрдЧ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ" рдХреЗ рд╡реЗрди рдЖрд░реЗрдЦ рдУрд╡рд░рд▓реИрдк "рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА ${} рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЬрд╛рдирддреЗ рд╣реИрдВ" 100% рдХреЗ рдХрд░реАрдм рд╣реЛрдВрдЧреЗ
рдпрд╣ рдЯрд┐рдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдЪрд░ рдирд╛рдореЛрдВ рдореЗрдВ рдорд╛рдиреНрдп рд╡рд░реНрдг рд╣реИрдВред
@vexx32
рдореБрдЭреЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЙрд╕ рд╕рдордп рдХреЛрдб рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреА рдЧрдИ рдереА
рдирд╣реАрдВред
рдЪрд╛рд░реЛрдВ рдУрд░ рд╡рд░реНрдг рд╕реНрд╡реИрдк рдХрд░реЗрдВ? $foo.?Property
рдЧреИрд░-рд╕рдВрдШрд░реНрд╖ рджрд┐рдЦрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рд╢реНрди рдЪрд┐рд╣реНрдиреЛрдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдореЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрджреНрдзреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
PS C:\> $foo = [pscustomobject]@{'?'=1; '?name'=2}
PS C:\> $foo.?name
At line:1 char:6
+ $foo.?name
+ ~
Missing property name after reference operator.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MissingPropertyName
PS C:\> $foo.'?name'
2
@HumanEquivalentUnit , рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд ?.
рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде C# рдФрд░ рдХрдИ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рд╕рд╛рде рдЪрд┐рд░рд╕реНрдерд╛рдпреА рднреНрд░рдо рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░реЗрдЧрд╛ (рд╕рд╛рде рд╣реА, рдЖрдкрдХреЛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА ( ${arr}?[0]
) рднреА, рдФрд░ $arr[0]?
рдЬреИрд╕рд╛ рдХреБрдЫ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рднреНрд░рдо рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░реЗрдЧрд╛)
рдХреЛрдИ рд╕рд╛рдл рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред
(dir *.ps2)?.count
рдФрд░ (dir *.ps1)?.count
рдпрд╣ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдСрдкрд░реЗрдВрдб рдХреЛ рдПрдХ рдЪрд░ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред($Host)?.toString()
/ ($null)?.toString()
рдирд╛рдо рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЕрднреА рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдзрд┐рдХ рддрд╛рд░реНрдХрд┐рдХ рдФрд░ рдХрдо рдмрджрд╕реВрд░рдд рд╣реИред
- #requires рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдмрджрд▓рдирд╛ рдХрд┐рд╕реА рд╕рд╣реЗрдЬреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЬреИрд╕реЗ рд╣реА рдХреЛрдИ рдЯреИрдЧ рд╕реЗрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕реА рд▓рдВрдмреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдХреБрдЫ рдХреЛрдб рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдпрд╣ _any_ рдХреЛрдб рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЙрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВред
рдпрджрд┐ рдпрд╣ рдкреНрд░рдореБрдЦ рдЪрд┐рдВрддрд╛ рдереА, рддреЛ рдХреЛрдИ рднреА рдирдИ рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ рдпрд╛ рдирдпрд╛ cmdlet/cmdlet рдкреИрд░рд╛рдореАрдЯрд░ рдХрднреА рднреА рдкреЗрд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
(рдЙрдореНрдореАрдж рд╣реИ, рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдореЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдо рд╕реЗ рдХрдо Set-StrictMode -Version 1
рдкреНрд░рднрд╛рд╡ рдореЗрдВ рд╣реИ, рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ $var?.foo
рдЬреЛрд░ рд╕реЗ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ var?
рдирд╛рдо рдХрд╛ рдХреЛрдИ рд╡реИрд░рд┐рдПрдмрд▓ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ)ред
- рдирд╛рдо рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред
(...)
рдХреЛ {...}
рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдХреЗрд╡рд▓ рдПрдХ рдорд╛рдореВрд▓реА рд╕реБрдзрд╛рд░ рд╣реИред
рдЬреЛ рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рд╕рдорд╕реНрдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд▓рд┐рдП _need_ рд╣реИ - рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЬреЛ рдХреЗрд╡рд▓ _as-is_ рдХрд╛рдо рдХрд░реЗ - рди рдХреЗрд╡рд▓ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдмрд▓реНрдХрд┐ _sensible рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреАред
- #requires рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдмрджрд▓рдирд╛ рдХрд┐рд╕реА рд╕рд╣реЗрдЬреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЬреИрд╕реЗ рд╣реА рдХреЛрдИ рдЯреИрдЧ рд╕реЗрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕реА рд▓рдВрдмреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдХреБрдЫ рдХреЛрдб рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдпрд╣ _any_ рдХреЛрдб рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЙрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВред
рдпрджрд┐ рдпрд╣ рдкреНрд░рдореБрдЦ рдЪрд┐рдВрддрд╛ рдереА, рддреЛ рдХреЛрдИ рднреА рдирдИ рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ рдпрд╛ рдирдпрд╛ cmdlet/cmdlet рдкреИрд░рд╛рдореАрдЯрд░ рдХрднреА рднреА рдкреЗрд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдореЗрд░рд╛ рдорддрд▓рдм рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╕реБрдЭрд╛рд╡ рдерд╛ рдХрд┐ рдпрджрд┐ #requires рдирд┐рд░реНрджрд┐рд╖реНрдЯ pwsh 7 рд╣реИ рддреЛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдирдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рддрднреА рдкреНрд░рдХрд╛рд╢рдорд╛рди рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк #рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ
(рдЙрдореНрдореАрдж рд╣реИ, рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдореЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдо рд╕реЗ рдХрдо
Set-StrictMode -Version 1
рдкреНрд░рднрд╛рд╡ рдореЗрдВ рд╣реИ, рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ$var?.foo
рдЬреЛрд░ рд╕реЗ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐var?
рдирд╛рдо рдХрд╛ рдХреЛрдИ рд╡реИрд░рд┐рдПрдмрд▓ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ)редрдореЗрд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ рд╕реЗрдЯ-рд╕реНрдЯреНрд░рд┐рдХреНрдЯрдореЛрдб рдХрд╛ рдЬреНрдпрд╛рджрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ (рдП) рдПрдХ рдзрд╛рд░рдгрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ "рд╕рд╣реА" рд╣реИ рдФрд░ (рдмреА) рдЙрди рдЪреАрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡реГрддреНрддрд┐ рдЬреЛ рдЗрд╕рдХреЗ рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВ, рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИред рдпрд╣ рдЗрди рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдо рдЙрдкрдпреЛрдЧ рд╣реИред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдкреБрд░рд╛рдирд╛ рдХреЛрдб рд╣реИ рдЬрд╣рд╛рдВ $var? рдореМрдЬреВрдж рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ foo рд╕рдВрдкрддреНрддрд┐ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рдХреЛрдб $var рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИ ... рд╕рдВрднрд╡рдд: рдирдИ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреА рд╣реИ рдпрджрд┐ рд╕рдЦреНрдд рдореЛрдб рд╕реЗрдЯ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ $var рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ ....
- рдирд╛рдо рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред
(...)
рдХреЛ{...}
рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдХреЗрд╡рд▓ рдПрдХ рдорд╛рдореВрд▓реА рд╕реБрдзрд╛рд░ рд╣реИредрд╣рд╛рдВред ($x) ${x} рд╕реЗ рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рд╣реИ рд▓реЗрдХрд┐рди рдереЛрдбрд╝рд╛ рд╣реАред (
Get-user "Bob")?.disable()
рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ
$u = get-user "bob"
($u)?.disable
рдЬреЛ рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рд╕рдорд╕реНрдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд▓рд┐рдП _need_ рд╣реИ - рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЬреЛ рдХреЗрд╡рд▓ _as-is_ рдХрд╛рдо рдХрд░реЗ - рди рдХреЗрд╡рд▓ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдмрд▓реНрдХрд┐ _sensible рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреАред
рд╣рд╛рдВред
$var. foo
рд╡реНрд╣рд╛рдЗрдЯ-рд╕реНрдкреЗрд╕ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рдеред ${foo} ?.bar()
рдирд╣реАрдВ? рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рдЙрдкрдирд╛рдо рдирд╛рдо рдореЗрдВ рдЕрдиреБрдорддрд┐ рд╣реИ (?. рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдиреВрдиреА рд╣реИ)ред рдЪреАрдЬреЛрдВ рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдореМрдЬреВрджрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд┐рдпрдореЛрдВ рдореЗрдВ рд╕реА # рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд▓реИрд╢рд┐рдВрдЧ рдмрд┐рдЯреНрд╕ рд╣рдореЗрд╢рд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдХрднреА-рдХрднреА, "рдпрд╣ рд╕реА # рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ ..." рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рд╣рд╛рдВред рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕реА # рдХрд╣рд╛рдВ рд╣реИ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ"ред
:-)
SemVer рд╕рдВрдЧрддрддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдПрдХ рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬрд╝ (рдЕрдзрд┐рдорд╛рдирддрдГ 7.0.0 ) рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдКрдкрд░ рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рднреА рджреЗрдЦреЗрдВ ( https://github.com/PowerShell/PowerShell/issues/11379#issuecomment-566756120 )ред
@ рдПрдХреНрд╕рдИ-рдмреЙрд╕ рд╣рд╛рдВ, рдпрд╣ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рдереА рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣рд╛ рдерд╛ рдЬрдм рдореИрдВрдиреЗ рдХрд╣рд╛ рдерд╛ рдХрд┐ #requires рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдФрд░ рд╣рд╛рдБ, рдпрджрд┐ рдХрд┐рд╕реА рдХреЛ рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рддреЛрдбрд╝рдирд╛ рд╣реИ рддреЛ рд╡рд╣ рд╕рдордп рд╣реИ рдЬрдм рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдмрджрд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╛ V8 рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ
рдпреЗ рдЕрднреА рднреА рдПрдХ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдФрд░ RC-1 рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмрдВрдж рд╣реИрдВ, рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╢рд┐рдкрд┐рдВрдЧ рдЙрддреНрдкрд╛рдж рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд░рд╣рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рдпрд╣ рднреА рдмреНрд▓реЙрдХ / рдЪреЗрддрд╛рд╡рдиреА рджреА рд╣реИ рдЬрдм рдПрдХ рдЪрд░ рдХреБрдЫ рд╡рд░реНрдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЛ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП - рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдмрджрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ (рдпрд╛ рдпрд╣рд╛рдВ рддрдХ рдХрд┐ рджреВрд╕рд░рд╛ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╕реБрд╡рд┐рдзрд╛ рд╣реЛ) рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рдЧрд▓рдд рдЪрд░ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдореБрдЭ рдкрд░ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдбрд╛рд▓рддрд╛ рд╣реИ - рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЬрд┐рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдореИрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВ рд╡реЗ рдмрд╕ "рдЯреВрдЯреА рд╣реБрдИ" рджрд┐рдЦрддреА рд╣реИрдВ рдЬреЛ "рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ" рдмреИрдирд░ рдХреЗ рддрд╣рдд рдЕрдзрд┐рдХ рд╕рд╣рдиреАрдп рд╣реИред
рдореИрдВ рдПрдХ рдЧрдВрднреАрд░ рдкрд╛рд╡рд░рд╢реЗрд▓ рдбреЗрд╡рд▓рдкрд░ рдирд╣реАрдВ рд╣реВрдВ; рдореИрдВ рдпрд╣рд╛рдВ рдПрдХ рдмрдЧ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдЖрдпрд╛ рдерд╛ рдФрд░ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдареЛрдХрд░ рдЦрд╛рдИред рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЬреНрдпрд╛рджрд╛рддрд░ рдмреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВ рд╢рд╛рдпрдж рдЬрдирд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдореЗрдВ рд╣реВрдВ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдкрд╛рд╡рд░рд╢реЗрд▓ рдХреЛрд░ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ: рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдбреЗрд╡рд▓рдкрд░ рдХреЛ рддреНрд╡рд░рд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдмреИрд╢ рд╕реЗ рдХрдо рджрд░реНрдж рд╣реЛред
рдореИрдВрдиреЗ рдЕрдХреНрд╕рд░ рдкрд╛рд╡рд░рд╢реЗрд▓ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрдИ рдирд┐рд░реНрдгрдп рдРрд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдкрд╛рдП рд╣реИрдВ рдЬреЛ рдкреНрд░рд╛рдердорд┐рдХ рд░реВрдк рд╕реЗ рдкрд╛рд╡рд░рд╢реЗрд▓ рдбреЗрд╡рд▓рдкрд░ рдирд╣реАрдВ рд╣реИрдВред рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рдХреБрдЫ рдЧрдВрднреАрд░ рдХреЗ рд▓рд┐рдП рдкрд╛рд╡рд░рд╢реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛, рддреЛ рдореИрдВ рдПрдХ рдирд▓ рдХреЛрд▓реЗрд╕рд┐рдВрдЧ рдСрдкрд░реЗрдЯрд░ рдХреА рдХрдореА, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдПрдХ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХреА рдХрдореА рд╕реЗ рдЪрд┐рдВрддрд┐рдд рдерд╛, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдореИрдВ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлрд╝реНрд▓реЛ рдкрд░ рдЗрд╕ рд▓реЛрдХрдкреНрд░рд┐рдп рдкрд╛рд╡рд░рд╢реЗрд▓ рдЙрддреНрддрд░ рдХреЛ рдкреЛрд╕реНрдЯ рдХрд░ рд░рд╣рд╛
@StartAutomating рдиреЗ рдХрд╣рд╛:
рдЧрд╣рд░рд╛рдИ рд╕реЗ geeky рд▓реЛрдЧреЛрдВ рдХреЛ рдПрдХ рддрд░рдл, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ ${obj}?.Method() рдпрд╛ $obj?.Method() рдереЛрдбрд╝рд╛ рдКрдкрд░ рдЙрдареЗрдЧрд╛ред рд╡реЗрдм рдкрд░ рдПрдХ рджрд╢рдХ рдХрд╛ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдирд▓ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЕрдЧрд░ ($obj) {$obj.Method() } рд╕реЗ рд╕рд┐рд░реНрдл v7 рдмреИрдВрдбрд╡рд╛рдЧрди рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд░ рд░рд╣реЗ рд╣реИрдВ
рдореИрдВ рд╕рд┐рд░реНрдл n = 1 рд╣реВрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдЧреИрд░-рдкреЙрд╡рд░рд╢реЗрд▓ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдЕрд╕рд╣рдордд рд╣реВрдВред рдирдИ ? рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдмрд╣реБрдд рдЬрд▓реНрджреА рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдХреЛрдИ рд╣реИ рдЬреЛ рд╢рд╛рдпрдж рд╣рд░ рдХреБрдЫ рдорд╣реАрдиреЛрдВ рдореЗрдВ рдПрдХ рдмрд╛рд░ рдкрд╛рд╡рд░рд╢реЗрд▓ рдХреЛ рдЫреВрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдкрд╛рд╡рд░рд╢реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╛рдзрд╛рдУрдВ рдХреЛ рдмрдврд╝рд╛рдПрдЧрд╛ред рдЕрдЧрд░ рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдкреАрдЫреЗ рдХреА рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкрд╛рдЧрд▓ {} рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддреЛ рдореИрдВ рдЕрдкрдиреА рдЖрдВрдЦреЛрдВ рдХреЛ рд░реЛрд▓ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЬреЛ рдХреБрдЫ рднреА рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ рдЙрд╕ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред
рдореИрдВ рдпрд╣рд╛рдБ рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдкрд░ рдЬреЛрд░ рдирд╣реАрдВ рд╕рдордЭрддрд╛ред рдкрд╛рд╡рд░рд╢реЗрд▓ рдХреЛрд░ рдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореЗрд░реА рдЕрдзрд┐рдХрд╛рдВрд╢ рдореМрдЬреВрджрд╛ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рддреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ .NET рдХреЗ рдЙрди рд╣рд┐рд╕реНрд╕реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ .NET рдХреЛрд░ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВред (рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ---рдиреЗрдЯ рдХреЛрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдХреЛ рддреЛрдбрд╝рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЕрдм рдЖрдкрдХрд╛ рдореМрдХрд╛ рд╣реИред)
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдореЗрд░реА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдиреЗ рдЧрд▓рддрдлрд╣рдореА рдХрд╛ рдПрдХ рднреНрд░рдо рдкреИрджрд╛ рдХрд░ рджрд┐рдпрд╛ рд╣реИред
рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рдерд╛ рдХрд┐ ${} рдкрд╛рд╡рд░рд╢реЗрд▓ рдбреЗрд╡рд▓рдкрд░реНрд╕_ рдХреЗ рд▓рд┐рдП рдЕрдЬреАрдм рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдлреЙрд░реНрдо рдХреЛ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрднреА рдПрдХ рдЪрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд░ рдПрдореНрдмреЗрдб рдХрд┐рдпрд╛ рдерд╛? рдпрд╛ рдФрд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ред
рдХрдИ рдЕрдиреБрд╕реНрдорд╛рд░рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдХрд┐ рдпрд╣ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЧреИрд░-рдкреЙрд╡рд░рд╢реЗрд▓ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЕрдЬреАрдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдореЗрд░реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рджреВрд╕рд░рд╛ рднрд╛рдЧ рдорд┐рд╢реНрд░рдг рдореЗрдВ рдЦреЛ рдЧрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: рдХреНрдпреЛрдВрдХрд┐ рдирд▓-рдХреЛрд▓реЗрд╕рд┐рдВрдЧ рдХреЗ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдкрд╛рд╡рд░рд╢реЗрд▓ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рдореМрдЬреВрдж рд╣реИрдВ рдФрд░ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореМрдЬреВрджрд╛ рдкрд╛рд╡рд░рд╢реЗрд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдореЗрдВ рдХрд┐рддрдиреА рд╡реГрджреНрдзрд┐ рд╣реЛрдЧреАред рдЖрдк рдЕрдВрджрд░ рдЖрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдХрд╣рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ "рдпрд╣ рдПрдХ рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕реЗ рдореБрдЭреЗ рдкрд╛рд╡рд░рд╢реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ", рдФрд░ рдореИрдВ рдЖрдкрдХреА рд░рд╛рдп рдХреЗ рд╕рд╛рде рдмрд╣рд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рднрд╛рд╖рд╛ рдХреЗ рдкреЗрдбрд╝ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╢рд╛рдВрдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЬрдВрдЧрд▓ рдЦреЛ рд░рд╣реЗ рд╣реИрдВ рдкрд░рд┐рдЪрд┐рдд)ред
рдореЗрд░реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рддреАрд╕рд░рд╛ рдмрд┐рдЯ рдЕрдиреБрдкрд╛рдд рд╕реЗ рдмрд╛рд╣рд░ рдЙрдбрд╝рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд▓рдЧрддрд╛ рд╣реИред рдЙрди рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдмреЛрд▓рддреЗ рд╣реБрдП, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдХрднреА-рдХрднреА $IsThisRight рдирд╛рдо рдХреЗ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ? = рдЯреЗрд╕реНрдЯ-рд╕рдордерд┐рдВрдЧ, рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдЪрд╛рд░ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдкрд╣рд▓реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдереА "рдУрд╣ рдареАрдХ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХреБрдЫ рдЪрд░ рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рд╡реИрд╕реЗ рднреА рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрддрдирд╛ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рдерд╛ред"
рддреЛ, рдереНрд░реЗрдб рдХреЛ рдкреБрди: рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
рдпрд╛, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП:
рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдпрд╣ рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВред рдЗрд╕ рджреМрдбрд╝ рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдЫреЛрдЯрд╛ рдШреЛрдбрд╝рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░реЗрдВ рддрд╛рдХрд┐ рдХреЛрдИ рдЕрдиреНрдп рд╡реНрдпрдХреНрддрд┐ рдЬрд┐рд╕рдиреЗ рдЪрд░реЛрдВ рдХрд╛ рдирд╛рдо ? рдЕрдиреБрд╕рд╛рд░ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореЗрд░реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рджреВрд╕рд░рд╛ рднрд╛рдЧ рдорд┐рд╢реНрд░рдг рдореЗрдВ рдЦреЛ рдЧрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: рдХреНрдпреЛрдВрдХрд┐ рдирд▓-рдХреЛрд▓реЗрд╕рд┐рдВрдЧ рдХреЗ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдкрд╛рд╡рд░рд╢реЗрд▓ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рдореМрдЬреВрдж рд╣реИрдВ рдФрд░ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореМрдЬреВрджрд╛ рдкрд╛рд╡рд░рд╢реЗрд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдХрд┐рддрдиреА рдмрдврд╝ рдЬрд╛рдПрдЧреАред
рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, рдФрд░ рдореИрдВ рдЖрдкрдХреА рд░рд╛рдп рдХреЛ рдЦрд╛рд░рд┐рдЬ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рдХрдард┐рди рд╣реЛрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╡рд┐рдХрд▓реНрдк рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣рдЬ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рднрд╛рд╖рд╛ рдХреЗ рднрд╛рд░реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВред
рдЖрдк рдЕрдВрджрд░ рдЖрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдХрд╣рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ "рдпрд╣ рдПрдХ рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕реЗ рдореБрдЭреЗ рдкрд╛рд╡рд░рд╢реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ", рдФрд░ рдореИрдВ рдЖрдкрдХреА рд░рд╛рдп рдХреЗ рд╕рд╛рде рдмрд╣рд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рднрд╛рд╖рд╛ рдХреЗ рдкреЗрдбрд╝ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╢рд╛рдВрдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЬрдВрдЧрд▓ рдЦреЛ рд░рд╣реЗ рд╣реИрдВ рдкрд░рд┐рдЪрд┐рдд)ред
рдЦреИрд░, рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЧреИрд░-рдкреЙрд╡рд░рд╢реЗрд▓ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрди рд╡рд╛рд░реНрддрд╛рд▓рд╛рдкреЛрдВ рдореЗрдВ рднрд╛рдЧ рдирд╣реАрдВ рд▓реЗ рд░рд╣реЗ рд╣реИрдВ--рдпрд╣ рд╢реБрджреНрдз рд╕рдВрдпреЛрдЧ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рдкрд░ рдареЛрдХрд░ рдЦрд╛ рдЧрдпрд╛ред рдкреЙрд╡рд░рд╢реЗрд▓ рдХрд╛ рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрднрд╡рддрдГ рдЙрди рд▓реЛрдЧреЛрдВ рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реЛрдЧрд╛ рдЬреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдФрд░ рдУрдкрди рд╕реЛрд░реНрд╕ рдЯреВрд▓ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдореИрдВ рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рджреВрдВрдЧрд╛ рдЬреЛ рдкрд╛рд╡рд░рд╢реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдлреИрдВрд╕реА рдврд╛рдВрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдЕрдЬреАрдм рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХред рдпрд╣ рдХрд┐рд╕реА рдЕрдиреНрдп рд░рд╛рдп рдХреЛ рдЦрд╛рд░рд┐рдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ - рдпрд╣ рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╕рд┐рд░реНрдл рдПрдХ рдФрд░ рд░рд╛рдп рд╣реИ рдЬреЛ рд╢рд╛рдпрдж рдпрд╣рд╛рдВ рдЕрдХреНрд╕рд░ рдирд╣реАрдВ рджреЗрдЦреА рдЬрд╛рддреА рд╣реИред
рдмреЗрд╣рддрд░ рдирд▓ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдПрдХ рдЪреАрдЬ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдореБрдЭреЗ рдкрд╛рд╡рд░рд╢реЗрд▓ рдХрд╛ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдпрд╣ рджреВрд╕рд░реА рдмрд╛рдд рд╣реИред рдкрд╣рд▓рд╛ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕рдорд░реНрдерди рдерд╛, рдФрд░ рдореИрдВ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реВрдБ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рдЖрдЧреЗ рдЖ рдЧрдпрд╛ рд╣реИред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдЪреАрдиреА рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝реА рдмрд╛рдд рд╣реИ рдЬрдм рдореИрдВ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдХрд╛рд░реНрдп рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рднрд╛рд╖рд╛ рдЪреБрди рд░рд╣рд╛ рд╣реВрдБ: рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ рдХрд┐ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рд╡рд╣ рдХрд░реЗ рдЬреЛ рдореИрдВ рдЖрд╕рд╛рди рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдЕрдЧрд░ рдореИрдВ рдХреБрдЫ рдРрд╕рд╛ рд▓рд┐рдЦ тАЛтАЛрд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдореИрдВ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╡рд░реНрдмреЛрдЬрд╝ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ; рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рдпрд╛ рджреЗрд╡реЛрдкреНрд╕ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд╡рд░рд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рд╕рд┐рд░реНрдл рд╢реВрдиреНрдп рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд╡рд░рд┐рдд рддрд░реАрдХрд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдореЗрд░реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рддреАрд╕рд░рд╛ рдмрд┐рдЯ рдЕрдиреБрдкрд╛рдд рд╕реЗ рдмрд╛рд╣рд░ рдЙрдбрд╝рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд▓рдЧрддрд╛ рд╣реИред рдЙрди рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдмреЛрд▓рддреЗ рд╣реБрдП, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдХрднреА-рдХрднреА $IsThisRight рдирд╛рдо рдХреЗ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ? = рдЯреЗрд╕реНрдЯ-рд╕рдордерд┐рдВрдЧ, рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдЪрд╛рд░ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдкрд╣рд▓реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдереА "рдУрд╣ рдареАрдХ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХреБрдЫ рдЪрд░ рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рд╡реИрд╕реЗ рднреА рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрддрдирд╛ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рдерд╛ред"
рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдХрд╛ рдкрдХреНрд╖ рд▓реЗрдирд╛ рд╣рдореЗрд╢рд╛ рдПрдХ рдЙрдЪрд┐рдд рддрд░реНрдХ рд╣реЛрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрд░ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХреЗ рдХрд╛рд░рдг рдмрд╣реБрдд рд╕реА рдкрд╛рд╡рд░рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреВрдЯрдиреЗ рдХреЗ рдХрдЧрд╛рд░ рдкрд░ рд╣реИрдВред рдЬрдм рдмреИрдХрд╡рд░реНрдб рд╕рдВрдЧрддрддрд╛ рдирд┐рдпрдорд┐рдд рдЖрдзрд╛рд░ рдкрд░ рдЯреВрдЯрддреА рд╣реИ, рддреЛ рдпрд╣ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рд╢рд╛рдпрдж рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдордп рд╣реИред
рдРрд╕реЗ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдП рдЬрдирд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп-рдЕрд░реНрдерд╛рдд рдЧреИрд░-рд╡рд┐рдВрдбреЛрдЬ-рдХреЗрдВрджреНрд░рд┐рдд рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ-- рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ, рдЙрд╕рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░реЗрдВ рддрд╛рдХрд┐ рдХреЛрдИ рдЕрдиреНрдп рд╡реНрдпрдХреНрддрд┐ рдЬрд┐рд╕рдиреЗ рдЪрд░реЛрдВ рдХрд╛ рдирд╛рдо ? рдЕрдиреБрд╕рд╛рд░ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд╕реБрд╡рд┐рдзрд╛ рдореЗрдВ рдСрдкреНрдЯ-рдЗрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реИ - рдЬреЛ рдореБрдЭреЗ рдкрд╛рд╡рд░рд╢реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХреЗрдЧрд╛ред рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреА рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ set
рдХрдорд╛рдВрдб рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдЖрджреА рд╣реВрдВред рдореИрдВ рдЗрд╕реЗ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рдорд╛рдиреВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдЬрдм рддрдХ рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ, рддрдм рддрдХ рдкреЙрд╡рд░рд╢реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдореЗрд░реЗ рдирд┐рд░реНрдгрдп рдкрд░ рдЗрд╕рдХрд╛ рдмрд╣реБрдд рдХрдо рдкреНрд░рднрд╛рд╡ рдкрдбрд╝реЗрдЧрд╛ред
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдЪреАрдиреА рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝реА рдмрд╛рдд рд╣реИ рдЬрдм рдореИрдВ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдХрд╛рд░реНрдп рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рднрд╛рд╖рд╛ рдЪреБрди рд░рд╣рд╛ рд╣реВрдБ
рддреЛ рдЖрдк рд╕рд╣реА рднрд╛рд╖рд╛ рдореЗрдВ рдЖрдП рд╣реИрдВ! рдкрд╛рд╡рд░рд╢реЗрд▓ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рдЪреАрдиреА рдХреЗ рд╕рд╛рде рд╕рдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкрд╡рд┐рддреНрд░ рд╣реИред
рдЬреЛ рд▓реЛрдЧ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдЙрдиреНрд╣реЗрдВ рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк PowerShell рдореЗрдВ рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ "рдирд▓ рдХреЛрд▓реЗрд╕" рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
~$ListWhereNotNull = $null, 1, 2, $null, 3 -ne $null # рдпрд╣ рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реИ, рдФрд░ 1,2,3 рдХреА рд╕реВрдЪреА рд▓реМрдЯрд╛рдПрдВ$FirstNonNull = @($null, 1, $null,2 -ne $null)[0] # рдпрд╣ рдкрд╣рд▓рд╛ рдиреЙрди-рдирд▓ рд▓реМрдЯрд╛рдПрдЧрд╛$lastNonNull = @($null, 1, 2, $null -ne $null)[-1] # рдпрд╣ рдЛрдгрд╛рддреНрдордХ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдВрддрд┐рдо рдЧреИрд░-рд╢реВрдиреНрдп рд▓реМрдЯрд╛рдПрдЧрд╛$TheObjectPipelineWay = $null, 1, $null, 2 | рдЪрдпрди-рд╡рд╕реНрддреБ -рдкреНрд░рдердо 1$TheAssigningForeachWay = foreach ($null рдореЗрдВ $рдЖрдЗрдЯрдо, 1, 2, $null, 3, 4) {рдЕрдЧрд░ ($рдЖрдЗрдЯрдо-рдиреЗ $null) {$рдЖрдЗрдЯрдо;
рдЕрднреА рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рд╣реА рдХрд╛рдлреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рднрд╛рд╖рд╛ рдХреЗ рд╡рд╛рдХреНрдп-рд╡рд┐рдиреНрдпрд╛рд╕ рдкрд░ рдмрд╛рдд рд╕рд╛рдмрд┐рдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ рдмрд╣реБрдд рд▓рдЪреАрд▓рд╛рдкрди рд╣реИред рд╡реЗ рд╕рднреА рдбреЗрдореЛ рдкреЙрд╡рд░рд╢реЗрд▓ 1.0 рдкрд░ рд╡рд╛рдкрд╕ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрд░ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХреЗ рдХрд╛рд░рдг рдмрд╣реБрдд рд╕реА рдкрд╛рд╡рд░рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреВрдЯрдиреЗ рдХреЗ рдХрдЧрд╛рд░ рдкрд░ рд╣реИрдВред
рдЗрд╕рдореЗрдВ рдЖрдк рдЧрд▓рдд рд╣реИрдВред рдХреЛрд░ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╕рд┐рдВрдЯреИрдХреНрд╕ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рдореЙрдбреНрдпреВрд▓ рдХреЛрд░ рдкрд░ рдареАрдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ (+ - рд▓рд┐рдирдХреНрд╕ рдмрдирд╛рдо рд╡рд┐рдВрдбреЛрдЬ рдкрд╛рдерд┐рдВрдЧ/рдиреНрдпреВрд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ)ред рдЕрдзрд┐рдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЖрдкрдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдХреЛрд░ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рд╣реИ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд┐рдВрдбреЛрдЬ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдкреАрдЖрдИ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореИрдВ рдЕрдкрдиреЗ рдбрдмреНрд▓реНрдпреВрдкреАрдПрдл рд░реИрдкрд░ рдХреЛ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕рд╛рдВрд╕ рдирд╣реАрдВ рд░реЛрдХреВрдВрдЧрд╛)ред
рдореИрдВ рдЕрднреА рднреА рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдареАрдХ рд╣реВрдВ: рдореИрдВрдиреЗ рдЕрднреА рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдирд╡реАрдирддрдо рдЙрддреНрддрд░ рдореЗрдВ рджреЛ рджрд╛рд╡реЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдмрд╛рд╣рд░ рдмреБрд▓рд╛рдП рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдкреБрди: рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдЪреАрдиреА, рдореЗрд░рд╛ рд╡реНрдпрдВрдЧреНрдпрд╛рддреНрдордХ рджрд┐рдорд╛рдЧ рдлрд┐рд▓реНрдо "рд╕реНрдиреИрдЪ" рдХреЛ рдЙрджреНрдзреГрдд рдХрд░рддрд╛ рд╣реИ: "рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдлреА рдореАрдард╛ рд╣реВрдВ"
рдкреБрди: рдХреЛрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреНрд╖рдорддрд╛ рдХреЛ рддреЛрдбрд╝рдирд╛: рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рдХреБрдЫ рд╣реИ, рдФрд░ рдЬрд┐рддрдирд╛ рд╣рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЗрд╕реЗ рд╡реИрд╕реЗ рд╣реА рд░рдЦреЗрдВред
@StartAutomating : рдХреНрдпрд╛ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рд╢реВрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛? рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХ рдЪреАрдиреА рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рдЬрдЧрд╣ рд╣реИ
рдЬреЛ рд▓реЛрдЧ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдЙрдиреНрд╣реЗрдВ рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк PowerShell рдореЗрдВ рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ "рдирд▓ рдХреЛрд▓реЗрд╕" рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рдордЭ рд▓рд┐рдпрд╛ (рдпрд╣ рдореЗрд░рд╛ рдЕрдкрдирд╛ рдЬрд╡рд╛рдм рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ рдерд╛), рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдХреАрдЪрдбрд╝ рдХреА рддрд░рд╣ рд▓рдЧрд╛ред рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░реА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлрд╝реНрд▓реЛ рдЙрддреНрддрд░ рдкрд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреАрдХрд╛рд░ рдиреЗ рдмрддрд╛рдпрд╛, рдореВрд▓реНрдпрд╛рдВрдХрди рд╢реЙрд░реНрдЯ-рд╕рд░реНрдХрд┐рдЯ рдирд╣реАрдВ рд╣реИред ?.
рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреЙрд▓/рдкреНрд░реЙрдкрд░реНрдЯреА рдХрд╛ рдкреАрдЫрд╛ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред 2013 рдореЗрдВ рд╡рд╛рдкрд╕, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдерд╛ - рдФрд░, рдлрд┐рд░ рднреА, рдЗрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЖрдк рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╣ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреИрд╕реЗ рд▓рдЧрд╛ред рдореБрдЭреЗ рдпрд╣ рддреЛрдбрд╝рдирд╛ рдкрдбрд╝рд╛ рдХрд┐ рдпреЗ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рддреАрдХ-рджрд░-рдкреНрд░рддреАрдХ рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕рдореЗрдВ рдЖрдк рдЧрд▓рдд рд╣реИрдВред рдХреЛрд░ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╕рд┐рдВрдЯреИрдХреНрд╕ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рдореЙрдбреНрдпреВрд▓ рдХреЛрд░ рдкрд░ рдареАрдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ (+ - рд▓рд┐рдирдХреНрд╕ рдмрдирд╛рдо рд╡рд┐рдВрдбреЛрдЬ рдкрд╛рдерд┐рдВрдЧ/рдиреНрдпреВрд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ)ред рдЕрдзрд┐рдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЖрдкрдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдХреЛрд░ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рд╣реИ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд┐рдВрдбреЛрдЬ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдкреАрдЖрдИ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореИрдВ рдЕрдкрдиреЗ рдбрдмреНрд▓реНрдпреВрдкреАрдПрдл рд░реИрдкрд░ рдХреЛ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕рд╛рдВрд╕ рдирд╣реАрдВ рд░реЛрдХреВрдВрдЧрд╛)ред
рдореИрдВ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдХреЗрд╡рд▓ рдЕрдиреБрднрд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмреЛрд▓ рд░рд╣рд╛ рд╣реВрдВ, рдмрдЬрд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдЪрд┐рдд рдЖрдВрдХрдбрд╝реЗ рджреЗрдЦреЗрдВ рдФрд░ рдПрдХрддреНрд░ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░реА-рдХреЛрд░, рдореИрдВ [System.Web.Security.Membership]::GeneratePassword(32, 6)
рд╕рд╛рде рдкрд╛рд╕рд╡рд░реНрдб рдЬреЗрдирд░реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХреЛрд░ рдореЗрдВ System.Web
рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред (рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╢рд╛рдпрдж рдкреБрд░рд╛рдиреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдПрдХ рджреЗрд╡рдХрд┐рдЯ рдХреЗ рд▓рд┐рдП рдбреЙрдХрд░ рд░рд╣рд╕реНрдпреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдПрдХ рддреНрд╡рд░рд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рд╛рди рдЬрдЧрд╣ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдмреИрд╢ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд╛рд╡рд░рд╢реЗрд▓ рдХреЛрд░ рдореЗрдВ рдЕрдзрд┐рдХ рдХреНрд░рд┐рдпрд╛ рд╣реИред рдмреЗрд╢рдХ, рдмреИрд╢ рдХреЗ рд╕рдорд╛рдзрд╛рди рдЕрдХреНрд╕рд░ рдмрд╣реБрдд рдмрджрд╕реВрд░рдд рд▓рдЧрддреЗ рд╣реИрдВред
рдкреБрди: рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдЪреАрдиреА, рдореЗрд░рд╛ рд╡реНрдпрдВрдЧреНрдпрд╛рддреНрдордХ рджрд┐рдорд╛рдЧ рдлрд┐рд▓реНрдо "рд╕реНрдиреИрдЪ" рдХреЛ рдЙрджреНрдзреГрдд рдХрд░рддрд╛ рд╣реИ: "рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдлреА рдореАрдард╛ рд╣реВрдВ"
рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдХрднреА-рдХрднреА рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рд╡рд░рд╢реЗрд▓ рдЕрд╕рд╛рдзрд╛рд░рдг рд░реВрдк рд╕реЗ рд╕реБрдЦрдж рд╣реИред рдирд▓ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдЙрди рдкреНрд░рдореБрдЦ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд╣рд╛рдВ рдореБрдЭреЗ рдЖрдорддреМрд░ рдкрд░ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ - рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рд╣реА рдХрд╣реВрдВрдЧрд╛ред рдореБрдЭреЗ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдЗрдирд▓рд╛рдЗрди рдкрд╛рд╡рд░рд╢реЗрд▓ рднреА рд▓рдЧрддрд╛ рд╣реИ рдЕрдЧрд░-рдЕрдиреНрдпрдерд╛ рдПрдХ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдпрд╛ рдмреИрд╢ рдХреЗ &&
рдФрд░ ||
рдЪреЗрдирд┐рдВрдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмреЛрдЭрд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдПред рдЪреВрдВрдХрд┐ рдпрд╣ рдЙрди рдкреНрд░рдореБрдЦ рдореБрджреНрджреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдореБрдЭреЗ рд╕рд╛рд▓реЛрдВ рдкрд╣рд▓реЗ рдкреЙрд╡рд░рд╢реЗрд▓ рд╕реЗ рджреВрд░ рдЬрд╛рдирд╛ рдкрдбрд╝рд╛, рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред
рджреВрд╕рд░реА рдУрд░, рдореИрдВ рджреИрдирд┐рдХ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯрддрд╛ рд╣реВрдВ, рдФрд░ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рд▓рд┐рдЦ тАЛтАЛрд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рд╣рдореЗрд╢рд╛ рд╕реЛрдЪрддрд╛ рд╣реВрдВ, "рдпрд╣ рднрд╛рд╖рд╛ X рдореЗрдВ рдЗрддрдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛!" - рдФрд░ рдлрд┐рд░ рдЬрдм рдореИрдВ рднрд╛рд╖рд╛ рдПрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ, "рдпрд╣ рднрд╛рд╖рд╛ рд╡рд╛рдИ рдореЗрдВ рдЗрддрдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛!" рд▓реЗрдХрд┐рди рд╣реЗ, рдЕрдЧрд░ рдореБрдЭреЗ рдпрд╣ рдХрд╣рдиреЗ рдХрд╛ рдореМрдХрд╛ рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рд╢рд╛рдпрдж рднрд╛рд╖рд╛ рдХреА рджрд┐рд╢рд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕реЗ рд▓реВрдВрдЧрд╛ред
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣рд╛рдБ рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд▓реЗ рд░рд╣рд╛ рд╣реВрдБ, рдмрд╕ рдПрдХ рдФрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдБред
@StartAutomating : рдХреНрдпрд╛ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рд╢реВрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛? рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХ рдЪреАрдиреА рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рдЬрдЧрд╣ рд╣реИ
рдореИрдВ рд╣рдореЗрд╢рд╛ рдореБрдЭреЗ рдХреБрдЫ рдирдИ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдЪреАрдиреА рдкреНрдпрд╛рд░ рдХрд░рддрд╛ рд╣реВрдБ! рдореИрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реВрдВ рдЬреИрд╕реЗ рдХрд┐ рд╣реИрд▓реЛрд╡реАрди рдкрд░ рдПрдХ рдмрдЪреНрдЪрд╛ рдЪрд╛рд▓-рдпрд╛-рдЙрдкрдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред
@Zenexer : рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ Powershell рдкрд╕рдВрдж рд╣реИ, рдореИрдВ рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВ рдХрд╛рдлреА рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реВрдВ рдХрд┐ рдкреАрдПрд╕ рдХреЛ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдФрд░ рджреИрдирд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдкрд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЪреАрд▓рд╛рдкрди рдкрд╕рдВрдж рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ .NET рдХреЗ рд╕рд╛рде рд╕рд╣рдЬреАрд╡рди, рдУрд╣ рдпрд╛рд░! рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕рдХреА рджрд┐рд╢рд╛ рдХреА рдкрд░рд╡рд╛рд╣ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП ${...}?
рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореБрдЭреЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЗрддрдирд╛ рдХрдард┐рди рд╣реИред
рдЕрдЪреНрдЫреЗ рдЕрдВрдХ, рд▓реЗрдХрд┐рди рдореИрдВ рдХреБрдЫ рдмрд╛рддреЗрдВ рд╕реНрдкрд╖реНрдЯ рдХрд░ рджреВрдВред
рдмреЗрд╣рддрд░ рдпрд╛ рдмрджрддрд░ рдХреЗ рд▓рд┐рдП, рдкрд╛рд╡рд░рд╢реЗрд▓ рдиреЗ рдЖрдЬ рддрдХ рд╕рд┐рдореЗрдВрдЯрд┐рдХ рд╡рд░реНрдЬрдирд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред
рдПрдХ рдирдпрд╛ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдХреЗрд╡рд▓ _new_ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд▓реЗрдХрд░ рдЖрдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдпрд░рдирдХреНрд▓реИрдб рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдереАред
рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЬрд╛рдиреЗ рдХреЗ рдХрд╛рд░рдг рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ, рдХреЛрд░ рдореЗрдВ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд░реЗрдВрдЧрдиреЗ рд▓рдЧреЗред
рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг v7.0 рдХреЛ рдкрд╢реНрдЪрдЧрд╛рдореА-рд╕рдВрдЧрддрддрд╛ рдореЗрдВ _increase_ рд╕рдВрдХреЗрдд рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛: Windows PowerShell рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ред
рдЬрдмрдХрд┐ рдХрдИ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЛ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдХреЗрд╡рд▓ рд╡реИрдХрд▓реНрдкрд┐рдХ (рдСрдкреНрдЯ-рдЗрди) рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ,
рдмрдХреЗрдЯ 3 рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣рдореЗрд╢рд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: рдПрдХ рд╕реБрдзрд╛рд░ / рд╕реБрдзрд╛рд░ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреА _potential_ рд╣реЛ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЗрд╕рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ; рд╕рдВрддреБрд▓рди рдкрд░, рдпрд╣ рднрд╛рд╖рд╛ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдУрдкреА рдореЗрдВ рддрд░реНрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╣рд╛рде рдореЗрдВ рдорд╛рдорд▓рд╛ рдореБрдЭреЗ рдПрдХ рдмрд╛рд▓реНрдЯреА 3 рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ; рдЬрдмрдХрд┐ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ _some_ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреВрдЯ рдЬрд╛рдПрдЧреА ( @StartAutomating рдХреЛ рдкрддрд╛
рдпрд╣ рджреБрд░реНрд▓рдн рдХреНрдпреЛрдВ рд╣реИ?
рдХреНрдпреЛрдВрдХрд┐ рдЪрд░ рдирд╛рдореЛрдВ рдореЗрдВ ?
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ _рдмрд┐рдирд╛ {...}
_ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП: рдпрджрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рд╕реЗ рд╕рднреА рдХреЗрд╡рд▓ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ {...}
, рдХреНрдпреЛрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реЛрддреА рд╣реИ ?
: . , ;
( :
, рд╕рдм рдкрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рд╣реИ рдПрдХ рдбреНрд░рд╛рдЗрд╡ рд╡рд┐рднрд╛рдЬрдХ)
$var?
рдпрд╛ $va?r
рдЬреИрд╕реЗ рдирд╛рдореЛрдВ рдХреЛ рдмрд┐рдирд╛ {...}
рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдПрдХ рдЕрдиреБрдорддрд┐ рдереА рдЬрд┐рд╕рдиреЗ рдкрд░реЗрд╢рд╛рдиреА рдХреЗ рд▓рд┐рдП рдХрд╣рд╛, рдФрд░ рдореБрд╕реАрдмрдд рдЖ рдЧрдИ рд╣реИ: рдпрд╣ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдЖрддрд╛ рд╣реИ рднрд╛рд╖рд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реИред
рд╕реА # рд╕реЗ рдкреНрд░реЗрд░рд┐рдд 3 рдирдИ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ (рдХрдо рд╕реЗ рдХрдо рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд):
(Get-Date).Second % 2 ? 'odd' : 'even'
$var ?? 'default'
рдФрд░ $var ??= 'default'
$possiblyNull?.ToString()
рдЙрдирдореЗрдВ рд╕реЗ рд╕рднреА рдХреЗ рдкрд╛рд╕ рдЙрдирдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ ?
, рдФрд░ рд╡реЗ рд╕рднреА рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рдмреЛрдЭ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реИрдВ $var?
рдкрд╛рд░реНрд╕рд┐рдВрдЧ, рд╣рд╛рд▓рд╛рдВрдХрд┐ ?.
рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рд╣реИ:
рдЬрдмрдХрд┐ рдЖрдк рддрд░реНрдХ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ $var?1:0
рдЬреИрд╕реЗ рдХреБрдЫ рдЧреЛрд▓реНрдлрд░реЛрдВ рдХреЛ рдХреЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдпрджрд┐ ?
рдореЗрдВ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рддреНрдордХ рдХрд╛рд░реНрдп рдерд╛ - рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЖрдкрдХреЛ ?
рд╕реЗ рдкрд╣рд▓реЗ _space_ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рдореБрдЭреЗ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП $var??='bar'
(рд╢рд╛рдпрдж рдЗрд╕рд╕реЗ рдХрдо $baz = $foo??$bar
) рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рд╕реНрдерд╛рди рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рд╣рдо $var?
рдХреА рд╡рд░реНрддрдорд╛рди рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЪрд┐рдкрдХреЗ рд░рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо _three_ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рднрд╛рд░рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдпрджреНрдпрдкрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбрд┐рдЧреНрд░реА рдХреЗ рд▓рд┐рдП), рдЬрд┐рдирдореЗрдВ рд╕реЗ 2 рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдо рддреМрд░ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ (рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдирд╣реАрдВ)ред
{...}
рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛ _not_ рд╣реИ, рдХреЗрд╡рд▓ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреА рдЕрд╕реБрд╡рд┐рдзрд╛ рд╣реИ: рдпрд╣ рдЙрддрдирд╛ рд╣реА рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ _рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░рдирд╛_ рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВ, рдФрд░ рдмрд╛рдж рдореЗрдВ _рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рднреВрд▓ рдЬрд╛рдирд╛_ (рд╕рдВрднрд╛рд╡рд┐рдд рд╕реВрдХреНрд╖реНрдо рдЦрд░рд╛рдмреА рдХреЗ рд╕рд╛рде) - рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрддрдирд╛ рдкреНрд░рддрд┐-рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрддред
@ рдПрдХреНрд╕рдИ-рдмреЙрд╕, рдореИрдВ @joneill рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг-рд╕рд╢рд░реНрдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкрд┐рдЫрдбрд╝реЗ-рд╕рдВрдЧрддрддрд╛ рд╡рд┐рд╢реЗрд╖-рдЖрд╡рд░рдг рд╡рд╛рд▓реЗ рдЗрдВрдЬрди рдХреЛ рднрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
@ mklement0: рдпрд╣ рдЕрдкреНрд░рд╛рдХреГрддрд┐рдХ / рдЬрд╡рд╛рдмреА рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд / рдЖрдк-рдирд╛рдо-рдпрд╣ рд╣реИред рдмреНрд░реИрдХреЗрдЯ рдХрдард┐рди рд╣реИрдВ, рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реИрдХреЗрдЯ рдФрд░ рднреА рдХрдард┐рди рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдирдХреА рдХреЛрдИ рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред
@ mklement0 рдЪреВрдВрдХрд┐ рд╕рдордЭреМрддрд╛ рдЯреВрдЯ рд░рд╣рд╛ рд╣реИ ... рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рд╛рд░рд╛рдВрд╢ рд╣реИред
рдкрд╛рд╡рд░рд╢реЗрд▓ рдореЗрдВ рд╕реА # рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдореБрдЭреЗ рдЕрднреА рддрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬреАрддрдирд╛ рдмрд╛рдХреА рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рдЬрдЧрд╣реЛрдВ рдкрд░ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдХрд┐ рдХреАрдмреЛрд░реНрдб рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд рдкреНрд░рддреАрдХ рдирд╣реАрдВ рд╣реИрдВред рдХреНрдпрд╛ ">" "рдЗрд╕рд╕реЗ рдмрдбрд╝рд╛" рдпрд╛ "рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ" рд╣реИ? рд╣реИ "=" рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдпрд╛ рдЯреЗрд╕реНрдЯ-рд╕рдорд╛рдирддрд╛ (рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ: = рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛ == рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП)ред рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдмреАрдЪ рдХреВрджрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧ -eq
рдпрд╛ -gt
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреВрд▓ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рдлрдВрд╕ рдЧрдП рд╣реИрдВ... + рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдЬреЛрдбрд╝, рдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ/рд╕рд░рдгреА рд╕рдВрдпреЛрдЬрди рд╣реИред * рдЧреБрдгрд╛ рдФрд░ рд╡рд╛рдЗрд▓реНрдб рдХрд╛рд░реНрдб рджреЛрдиреЛрдВ рд╣реИред % рдореЛрдбреБрд▓реЛ рд╣реИ рдФрд░ forEach-object.
рд▓рд┐рдП рдПрдХ рдЙрдкрдирд╛рдо рд╣реИ
рдЧрд░реАрдм ? Where-Object.
рд▓рд┐рдП рдЙрдкрдирд╛рдо рд╣реИ рдФрд░ рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЪрд░ рдХрд╛ рдирд╛рдо рд╣реИред рд▓реЗрдХрд┐рди Get-Alias ?
рдпрд╛ Get-Variable ?
... рдФрд░ рдлрд┐рд░ рдпрд╣ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдХрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
Get-PSdrive
рдФрд░ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ "рд╡реЗрд░рд┐рдПрдмрд▓" рдЖрджрд┐ рдореЗрдВ рдирд╛рдо рдХреЗ рдЕрдВрдд рдореЗрдВ ":" рдирд╣реАрдВ рд╣реИ, рдПрдХ рдирд╛рдо рдЬреЛрдбрд╝рдиреЗ рдкрд░ рдЗрд╕реЗ рдПрдХ рдбреНрд░рд╛рдЗрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рддрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдиреЗ "$drive="C"
рд▓рд┐рдЦрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ "$drive:temp"
рд╕рд╛рде рдкрд╛рд▓рди рдХрд░реЗрдВ, рдкрд╛рд╡рд░рд╢реЗрд▓ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рдирдпрд╛ (рдФрд░ рдХреБрдЫ рдкреБрд░рд╛рдиреЗ рд╣рд╛рде, рдЬрдм рд╡реЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ) рдпрд╣ рдЬрд╛рдирдХрд░ рдЪрдХрд┐рдд рд╣реЛрдВрдЧреЗ рдХрд┐ рд╡реЗ ' ve рдиреЗ рдЕрднреА рдПрдХ рдирд╛рдорд┐рдд рд╕реНрдХреЛрдк "рдбреНрд░рд╛рдЗрд╡" рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рд╣реИред
рддреЛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд ... рдХреЛрдИ рдХрд╣ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ '":" рдФрд░ "?" рдХреЗ рд▓рд┐рдП рдФрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдмрдирд╛рдПрдВред рдХреНрдпрд╛ рддреБрдо рдкрд╛рдЧрд▓ рд╣реЛ?'
IIRC, рдЯреНрд╡рд┐рдЯрд░ рдкрд░ @BrucePay рдиреЗ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХреЛ "рдиреЙрдЯ
рдЕрдзрд┐рдХрддрд░ рд▓реЛрдЧ $PSEdition.length -gt 2
рд▓рд┐рдЦреЗрдВрдЧреЗ
рд▓реЗрдХрд┐рди $PSEdition. length-gt2
рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдЖрдк рджреЛ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рднреА рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред) "ред" "рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛", "рдЗрд╕ рджрд╛рдпрд░реЗ рдореЗрдВ рдЪрд▓рд╛рдПрдВ" рдФрд░ "рд╕рджрд╕реНрдп" рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЕрддрд┐рднрд╛рд░рд┐рдд рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреАрдПрд╕ рд╡реА 1-рд╡реА 5 рдореЗрдВ рдореИрдВ рдХрд┐рд╕реА рднреА рдСрдкрд░реЗрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рдгреА рд╕реНрдерд╛рди рдХреА
$host.debuggerEnabled?0:1
рдареАрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ "?" рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд▓рд┐рдП _not_ рдЧреНрд░рд╣рдг рдХрд┐рдпрд╛ рдЧрдпрд╛
$IsCoreCLR?0:1
рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ "?" рдЪрд░ рдирд╛рдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рдирд▓ рдХреЛрд▓реЗрд╕рд┐рдВрдЧ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА рд╕рдЪ рд╣реИ
$null?? "default"
рдХреЛ рдЬрдЧрд╣ рдЪрд╛рд╣рд┐рдП $true.length?? "default"
рдирд╣реАрдВред
рдореВрд▓ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдореБрджреНрджреЗ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдкрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░рдл рд░рдЦ рджреЗрдВред рдЙрдкрд░реЛрдХреНрдд рдорд╛рдорд▓реЗ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХреБрдЫ рдареАрдХ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд╛рдо "?" "ред" рд╡рд╛рд▓реЗ рдирд╛рдореЛрдВ рдХреА рддрд░рд╣ рд▓рдЯрдХреЗ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╛ "+" рдпрд╛ ":" , рдФрд░ @StartAutomating рдЬреЛ "?" рдХрд╛ рдореБрдЦреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИ рдирд╛рдореЛрдВ рдореЗрдВ рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ _рдмреНрд░реЗрдХ рд╣реИ рдЬрд┐рд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ_ред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рд╢реВрдиреНрдп-рд╕рджрд╕реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪреЗрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 'рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЦреЛрдЬреЗрдВ'
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╕реБрд╡рд┐рдзрд╛ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдо рд╕рдордп рдХреА рдЦрд┐рдбрд╝рдХреА рд╣реИ рдЬрд┐рд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдирд╛рдореЛрдВ рдореЗрдВ рдмрд╛рдВрдзреЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдпрджрд┐ рд╡рд╣ рд╕реБрд╡рд┐рдзрд╛ рдЪрд╛рд▓реВ рд╣реИ - рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП - рд╕рднреА рдирдИ? рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рддрджрдиреБрд╕рд╛рд░ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЗрд╡рд▓ рдЕрдЧрд░ рд╡рд╣ рд╕реБрд╡рд┐рдзрд╛ рдмрдВрдж рд╣реИ рддреЛ рдкрд╛рд░реНрд╕рд░ рдХреЛ рдЗрди рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд╕рд╛рде рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдпрд╛ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА .. рдпрд╣ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ, рдЬрдм рддрдХ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд╛рдо рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рд╕реЗ $IsIt рдХреЛ рд░реЛрдХрдирд╛ рдЪрд╛рд╣рд┐рдП) рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдПрдХ рдЫреЛрдЯреА рдирд┐рд░реНрд╡рд┐рд╡рд╛рдж рд╕рдВрдЦреНрдпрд╛) рдХреЛ рддреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ ?.tostring() рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкрд╣рд▓реА рддреНрд░реБрдЯрд┐ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рдлрд▓ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЦрддрд░рдирд╛рдХ рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВ рдЪрд▓рдиреА рдЪрд╛рд╣рд┐рдП)ред рдФрд░ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдпрд╣ рдПрдХ рдмрд┐рдВрджреБ рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЖрдк рдкрд╛рд╡рд░рд╢реЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╣реА рд╣реИрдВ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реЗрдореА-рд╡реЗрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рд╣реИ)
рдЖрд╡рд╢реНрдпрдХрддрд╛ {...} рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЗрд╡рд▓ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреА рдЕрд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВ рд╣реИ: рдпрд╣ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рди рдХрд░рдиреЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рднреВрд▓ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ (рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд╕реВрдХреНрд╖реНрдо рдЦрд░рд╛рдмреА рдХреЗ рд╕рд╛рде) - рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрддрдирд╛ рдкреНрд░рддрд┐-рд╕рд╣рдЬред
рдпрд╣ рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИ рдФрд░ рдпрд╣ рдХрд╛рдлреА рд╣рдж рддрдХ рдореБрдЭреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ ${...?}
рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рди рдХрд░реЗрдЧрд╛ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдЧрд░ рдореИрдВ {}
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рдирддрд╛ рд╣реВрдВ, рддреЛ рдПрдХ рдордЬрдмреВрдд рдореМрдХрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдВрддрддрдГ рднреВрд▓ рдЬрд╛рдКрдВрдЧрд╛, рдФрд░ рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕реВрдХреНрд╖реНрдо рдмрдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╢рд╛рдпрдж рдЕрднреА рднреА рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдорд╛рдиреНрдп рд╣реЛрдЧрд╛ред $var??='bar'
рдЗрд╕рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рд░рд┐рдХреНрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рди рд╣реВрдВред
рдзрдиреНрдпрд╡рд╛рдж, @joneill , рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдХрд┐рддрдиреЗ рдкреНрд░рддреАрдХ
рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП, рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рд╕рднреА рдЙрдкрдпреЛрдЧреЛрдВ рд╕реЗ рдЕрд╡рдЧрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░рдгреЛрдВ рд╕реЗ:
*
рдПрдХ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдо *
рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдЪрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВред)?
рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рд╕рдорд╛рди рд╣реИ, рдЕрдореВрд░реНрддрддрд╛ рдХреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрддрд░ рдкрд░: рдЖрдк ?
рдореЗрдВ Get-ChildItem | ? Target
, $var?.Target
, $?
рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред $var ?? 'none'
рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ _question_ рд╢рд╛рдорд┐рд▓ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП _test_ рдпрд╛ _рд╕рд╢рд░реНрдд рд╡реНрдпрд╡рд╣рд╛рд░_ред+
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдХрд╛ рдкреНрд░рджрд░реНрд╢рди)редрдПрдХ рд╕рдорд╕реНрдпрд╛рддреНрдордХ рдЙрджрд╛рд╣рд░рдг &
(рдХреЙрд▓ рдСрдкрд░реЗрдЯрд░ рдмрдирд╛рдо рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдСрдкрд░реЗрдЯрд░) рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╣реА рд╕рдВрджрд░реНрдн рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╢рдмреНрджрд╛рд░реНрдереЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ _position_ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд╛рдо "?" "ред" рд╡рд╛рд▓реЗ рдирд╛рдореЛрдВ рдХреА рддрд░рд╣ рд▓рдЯрдХреЗ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╛ "+" рдпрд╛ ":"
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдФрд░ рдпрд╣ рджреЛрд╣рд░рд╛рдирд╛ рд╣реЛрдЧрд╛: рдЪрд░ рдирд╛рдореЛрдВ рдореЗрдВ ?
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рджреВрд░ рдирд╣реАрдВ рдЬрд╛рдПрдЧреА - рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЖрдЧреЗ рдЬрд╛рдХрд░ ${var?} = @{ foo=1 }; ${var?}?.foo
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдХрд┐рд╕реА рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╕рдордЭрджрд╛рд░реА рд╕реЗ _not_ ?
рд╡реИрдз рдЪрд╛рд░ рд╣реЛрдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред .
рдбреЙрдЯ-рд╕реЛрд░реНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рдЕрдкрд╡рд╛рдж рд╣реИ; ?
Where-Object
рдЙрдкрдирд╛рдо рдХреЗ рдмрд╛рдж рдПрдХ рд╕реНрдерд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реЛ рд╕рдХрддреА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, gci|?target
рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдХрдорд╛рдВрдб рдирд╛рдо _do_ рдХреЛ рд╡реНрд╣рд╛рдЗрдЯрд╕реНрдкреЗрд╕ рдХреЗ рд╕рд╛рде рдЙрдирдХреЗ рддрд░реНрдХреЛрдВ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред
.
рдФрд░ рдПрдХ рд╕рджрд╕реНрдп рдХреЗ рдирд╛рдо ( $obj. foo
) рдХреЗ рдмреАрдЪ рд╡реНрд╣реЙрдЯреНрд╕рдПрдк рд░рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдмрд╣реБ-рдкрдВрдХреНрддрд┐ рдХрдердиреЛрдВ рдореЗрдВ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрдХреАрдирди рдЕрдзрд┐рдХ рдкрдардиреАрдп рд░реВрдк - рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд - (рднреА) рд╣реИ рд╡реНрд╣рд╛рдЗрдЯрд╕реНрдкреЗрд╕ рдХреЛ _before_ .
рдЕрдиреБрдорддрд┐ рджреЗрдВ:
# This does NOT work - the . must be *immediately after* the expression / member
(Get-Date)
.ToUniversalTime()
.TimeOfDay
рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рд╕реЗ |
рдХреЛ _next_ рд▓рд╛рдЗрди рдкрд░ рд░рдЦрдиреЗ рдХреА рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЬреЛрдбрд╝реА рдЧрдИ рдХреНрд╖рдорддрд╛ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
# Already works in PS Core
Get-Date
| % ToUniversalTime
| % TimeOfDay
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ .
рд╕рд╛рде рдбреЙрдЯ-рд╕реЛрд░реНрд╕рд┐рдВрдЧ рдСрдкрд░реЗрдЯрд░ рдФрд░ .
рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХрдорд╛рдВрдб рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдЕрдирд╕реБрд▓рдЭреЗ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛рдУрдВ рдХреЛ рдкреЗрд╢ рдХрд░реЗрдЧрд╛ - рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, . foo
рдПрдХ рдирдИ рд▓рд╛рдЗрди рдкрд░ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╛ рдПрдХ рдХрдорд╛рдВрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ foo
рдирд╛рдордХ рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдбреЙрдЯ-рд╕реЛрд░реНрд╕ рдХрд░рддрд╛ рд╣реИ (рдЬреЛ $env:PATH
) ; .foo
рдПрдХ _command_ рдХрд╛ рдирд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред
@KirkMunro рдХреА рдорд▓реНрдЯреА рд▓рд╛рдЗрди рдирд┐рд░рдВрддрд░рддрд╛ RFC, рдЬрдмрдХрд┐ _commands_ рдХреЛ рдХрдИ рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдЕрдЧрд▓рд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рджреЗрдЧрд╛ - рджреЗрдЦреЗрдВ https://github.com/PowerShell/PowerShell-RFC/pull/179#issuecomment -498734875ред
рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╕реБрд╡рд┐рдзрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЪрд╛рд▓реВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗ рд░реВрдк рдореЗрдВ: - рд▓реЗрдХрд┐рди рдирд╣реАрдВ рдЬрд╛рд░реА рдЙрдореНрдореАрджрд╡рд╛рд░реЛрдВ - рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, _preview_ рд░рд┐рд▓реАрдЬ рдЕрдм рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЪрд╛рд▓реВ _all_ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмрд╛рд░реА; рд╣рд╛рд▓рд╛рдВрдХрд┐, рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдкрдиреЗ рдХрднреА рднреА Enable-ExperimentalFeature
рдпрд╛ рддреЛ _рдмрд┐рдирд╛ _ -Scope
рдпрд╛ -Scope CurrentUser
рд╕рд╛рде рдЬреЛ рднреА рд╕реБрд╡рд┐рдзрд╛рдПрдВ рд╕рдХреНрд╖рдо рдХреА рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рд▓рдЧрд╛рддрд╛рд░ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
@ mklement0 рдЬрдмрдХрд┐ рдореИрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдЙрд╕ рд╕рдм рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдЪрд░реНрдЪрд╛ рдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдмрд┐рдЯреНрд╕ рдФрд░ рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде рдкрдЯрд░реА рд╕реЗ рдЙрддрд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЗрддреГрддреНрд╡ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рдпрджрд┐ рдЖрдк рдбреЙрдЯ-рдкреНрд░реЙрдкрд░реНрдЯреА рдСрдкрд░реЗрдЯрд░ рдХреЗ рдЖрд╕-рдкрд╛рд╕ рд▓рд╛рдЗрди-рдирд┐рд░рдВрддрд░рддрд╛ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ рдпрджрд┐ рдкрд╣рд▓реЗ рд╕реЗ рдХреЛрдИ рдирд╣реАрдВ рд╣реИред рдореИрдВ
рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ ?
рдХреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЪрд░ рдирд╛рдо рдЪрд░рд┐рддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЪрд░рд┐рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдЪрд╛рдирдХ рдЪреАрдЬреЛрдВ рдХреЛ рд╕рдлреЗрдж рд╕реНрдерд╛рди рдХреЛ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ рдХрдо рд╕реЗ рдХрдо, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЪрд░ рдирд╛рдореЛрдВ рдореЗрдВ _ever_ рд╣реИ рдЕрддреАрдд рдореЗрдВ рд╡реНрд╣рд╛рдЗрдЯрд╕реНрдкреЗрд╕-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд░рд╣рд╛ рд╣реИред
рдЙрд╕ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрдирд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдФрд░ рдПрдХ рдЪрд░ рдирд╛рдо рдореЗрдВ рдЙрдкрдпреЛрдЧ рд╕реЗ ?
рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдмреНрд░реЗрдХрд┐рдВрдЧ рдЪреЗрдВрдЬ рдХреЗ рд╕рд╛рде, рд╣рдо рд▓реЗрдЦрдХреЛрдВ рдХреЛ рд╕рдЪреЗрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ PSSA рдирд┐рдпрдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рдЕрдм рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд░рд┐рд╡рд░реНрд╕ рдЗрддрдиреА рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдЪ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдмреНрд░реЗрдХрд┐рдВрдЧ рдЪреЗрдВрдЬ рдХреЗ рд╡рд┐рдкрд░реАрдд рдпрд╣ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдЧрд▓рддреА рд╕реЗ рдирд┐рдХрд▓ рдЬрд╛рдП; рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЧрд▓рддреА рд╕реЗ рдЧрд▓рдд рдЪрд░ рдХреЛ рдЪреБрдкрдЪрд╛рдк рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдмрд┐рдирд╛ рдпрд╣ рдЬрд╛рдиреЗ рдХрд┐ рд╡реЗ рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
@ рдкрд╛рд╡рд░рд╢реЗрд▓/рдкреЙрд╡рд░рд╢реЗрд▓-рд╕рдорд┐рддрд┐ рдиреЗ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА, рд╣рдордиреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдкрд╛рд╡рд░рд╢реЗрд▓ рдХреЙрд░реНрдкрд╕ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдкреНрд░рд╢реНрди рдЪрд┐рд╣реНрди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рдирд╛рдореЛрдВ рдХрд╛ рдХрд╛рдлреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬреИрд╕реЗ, рд╣рдо рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рддреЛрдбрд╝ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рд╡рд░рд╢реЗрд▓ рдЪрд░ рдирд╛рдореЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдПрдХ рдореМрдЬреВрджрд╛ рднрд╛рд╖рд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдЬреЛ рдЪрд░ рдирд╛рдо рдХреЛ рдЕрдиреНрдп рд╡рд░реНрдгреЛрдВ (рдЬреИрд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рднреАрддрд░) рд╕реЗ рдЕрд▓рдЧ рдХрд░рддреА рд╣реИред
рд╣рдордиреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдкрд╛рд╡рд░рд╢реЗрд▓ рдХреЙрд░реНрдкрд╕ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдкреНрд░рд╢реНрди рдЪрд┐рд╣реНрди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рдирд╛рдореЛрдВ рдХрд╛ рдХрд╛рдлреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛
рдзрдиреНрдпрд╡рд╛рдж, @ рд╕реНрдЯреАрд╡рдПрд▓-рдПрдордПрд╕рдПрдлрдЯреА - рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЗрд╕ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рд╣рд╛рдБ, рдореИрдВ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реВрдБ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рд╕рдореБрджрд╛рдп рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдиреЗ рдЕрдкрдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рдЙрд╕ рддрд░рд╣ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдХрд░реАрдм рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ред
рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкрд░рд┐рдгрд╛рдо рдФрд░ рд╡рд┐рдзрд┐ рдХреЛ рднреА рджреЗрдЦрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдореИрдВрдиреЗ рдХрд▓ рд░рд╛рдд рдПрдПрд╕рдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдкрд╛рд╡рд░рд╢реЗрд▓ рдХреЙрд░реНрдкрд╕ рдХрд╛ рдЕрдкрдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛, рдЬрд┐рд╕реЗ рдореЗрд░реА рдорд╢реАрди рдкрд░ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрднрдЧ 6 рдШрдВрдЯреЗ рд▓рдЧреЗред рд╡рд┐рдВрдбреЛрдЬ рдбрд┐рдлреЗрдВрдбрд░ рджреНрд╡рд╛рд░рд╛ рдлрд╛рдЗрд▓ рдХреЛ рдХреНрд╡рд╛рд░рдВрдЯрд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рдмрд╣реБрдд рдХрдо рдлрд╛рдЗрд▓реЗрдВ рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХреАрдВред
рдореБрдЭреЗ рдПрдХ рдкреНрд░рд╢реНрдирд╡рд╛рдЪрдХ рдЪрд┐рд╣реНрди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА 8 рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ 11 рдЕрджреНрд╡рд┐рддреАрдп рдЪрд░ рдирд╛рдо рдорд┐рд▓реЗ ($? рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЬреЛ 8846 рдмрд╛рд░ рджрд┐рдЦрд╛)ред 408,423 рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХреБрд▓ 1,895,983, рдЕрджреНрд╡рд┐рддреАрдп рдЪрд░ рдереЗред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреЙрд░реНрдкрд╕ рдореЗрдВ рд╕рднреА рдЕрджреНрд╡рд┐рддреАрдп рдкрд╛рд╡рд░рд╢реЗрд▓ рдЪрд░ рдХреЗ 0.0006% рдореЗрдВ рдПрдХ рдкреНрд░рд╢реНрди рдЪрд┐рд╣реНрди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдЪрд░ рдирд╛рдо рд╣реИред
рдпрд╣рд╛рдБ 8 рдлрд╝рд╛рдЗрд▓реЗрдВ рдФрд░ 11 рдЕрджреНрд╡рд┐рддреАрдп рдЪрд░ рд╣реИрдВ:
File : C:\Temp\PowerShellCorpus\Github\alanrenouf_PowerActions\Kill-VM.ps1
QuestionMarkVars : vParam?
QuestionMarkVarCount : 1
File : C:\Temp\PowerShellCorpus\Github\anthonywlee_PowerShell\Send_Notification.ps1
QuestionMarkVars : To?
QuestionMarkVarCount : 1
File : C:\Temp\PowerShellCorpus\Github\aspear_My-PowerCLI-scripts\my-labotomize-vms.ps1
QuestionMarkVars : vParam?
QuestionMarkVarCount : 1
File : C:\Temp\PowerShellCorpus\Github\jlundstrom_Scripts\Powershell\7Zip SFX Creator\Build.ps1
QuestionMarkVars : Title?
QuestionMarkVarCount : 1
File : C:\Temp\PowerShellCorpus\Github\pslaughter_Working\Setup-Host.ps1
QuestionMarkVars : HostIp?
QuestionMarkVarCount : 1
File : C:\Temp\PowerShellCorpus\Github\stevenayers_PowerShell-Scripts\Random Functions\Add-OutlookConferenceRegionNumber.ps1
QuestionMarkVars : {key1?, key2?, key3?, key4?}
QuestionMarkVarCount : 4
File : C:\Temp\PowerShellCorpus\Github\unixboy_powershell-stufff\stopvm.ps1
QuestionMarkVars : vParam?
QuestionMarkVarCount : 1
File : C:\Temp\PowerShellCorpus\PowerShellGallery\PsHg\0.6.2\PsHg.psm1
QuestionMarkVars : PsHg?
QuestionMarkVarCount : 1
рдпрд╣ рд░рд┐рдкреЛрд░реНрдЯ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ:
Get-ChildItem -Path C:\Temp\PowerShellCorpus -Include *.ps1, *.psm1 -File -Recurse | ForEach-Object -Parallel {
try {
$content = $PSItem | Get-Content
$ast = [System.Management.Automation.Language.Parser]::ParseInput($content, [ref]$null, [ref]$null)
$variables = $ast.FindAll({$args[0] -is [System.Management.Automation.Language.VariableExpressionAst ]}, $true)
# First query because I forgot to exclude $? variables
# $nonQuestionMark = $variables | Where-Object VariablePath -notmatch '\?$' | Select-Object -Unique
# $QuestionMark = $variables | Where-Object VariablePath -match '\?$' | Select-Object -Unique
$nonQuestionMark = $variables |
Where-Object VariablePath -notmatch '\?$' |
ForEach-Object { $_.VariablePath.UserPath.ToString() } |
Select-Object -Unique
$QuestionMark = $variables |
Where-Object { $_.VariablePath -match '\?$' -and $_.VariablePath.UserPath -ne '?' } |
ForEach-Object { $_.VariablePath.UserPath.ToString() } |
Select-Object -Unique
$output = [pscustomobject]@{
File = $PSItem
QuestionMarkVars = $QuestionMark
QuestionMarkVarCount = $QuestionMark.Count
NonQuestionMarkVars = $nonQuestionMark
NonQuestionMarkVarCount = $nonQuestionMark.Count
}
$output
}
catch {
throw
}
}
рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдСрдбрд┐рдЯ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
$abc = 'test'
$isAwesome? = $true
$?
$test = {
$?
$isabc? = { $adce? = 'test' }
${def?} = 123
${is a bad var name?} = $isabc?
}
рдХрд╛ рдкрд░рд┐рдгрд╛рдо:
File : C:\temp\variable.ps1
QuestionMarkVars : {isAwesome?, isabc?, adce?, def?, is a bad var name?}
QuestionMarkVarCount : 5
NonQuestionMarkVars : {abc, true, test}
NonQuestionMarkVarCount : 3
рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдЧрдгрд┐рдд рдХреА рдХрдХреНрд╖рд╛ рдореЗрдВ рдХрд╣рддреЗ рд╣реИрдВ, "рдХреГрдкрдпрд╛ рдЕрдкрдирд╛ рдХрд╛рдо рджрд┐рдЦрд╛рдПрдБ"
рдЙрддреНрдХреГрд╖реНрдЯ рдЦреЛрдЬреА рдХреБрддреНрддрд╛ ,
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдФрд░ рднреА рдЕрдзрд┐рдХ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдлреЙрд░реНрдо ${...}
рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреЗрд╡рд▓ $isAwesome?
рд╣рдореЗрдВ ${isAwesome?}
рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
рдЖрдкрдХреА рдЙрджрд╛рд╣рд░рдг рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде:
$variables.Extent.Text.Where({ $_ -match '(?<!\$)\?$' }) | Select-Object -Unique
рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдорд┐рд▓рддрд╛ рд╣реИ:
$isAwesome?
$isabc?
$adce?
рдЕрд░реНрдерд╛рддреН, ${def?}
рдФрд░ ${is a bad var name?}
рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдкреБрдирд╢реНрдЪ: рдкреВрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП $PSItem | Get-Content -Raw
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢рд╛рдпрдж рдмреЗрд╣рддрд░ рд╣реИред
@ mklement0 рдпрд╣ рд╕рд╣реА рд╣реИ, рдореИрдВрдиреЗ рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЛ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ рдЬреЛрдбрд╝рд╛ рддрд╛рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХреЗ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рд╕рд╛рде рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕ рдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдЪрд░ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдирд╣реАрдВ рдереАред
рдЖрдкрдХреА рдЕрдиреБрд╢рдВрд╕рд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдирд┐рдореНрди рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИ рдЬреИрд╕реЗ рд╣рдо рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВред
File : C:\temp\variable.ps1
QuestionMarkVars : {isAwesome?, isabc?, adce?}
QuestionMarkVarCount : 3
NonQuestionMarkVars : {abc, true, test}
NonQuestionMarkVarCount : 3
рдореИрдВрдиреЗ рдЙрди 8 рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рдЕрджреНрдпрддрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдИ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕ рдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рдЕрднреА рднреА 11 рдЕрджреНрд╡рд┐рддреАрдп рдЪрд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрдВрдЧреЗред
рдЕрджреНрдпрддрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
Get-ChildItem -Path C:\Temp\PowerShellCorpus -Include *.ps1, *.psm1 -File -Recurse | ForEach-Object -Parallel {
try {
$content = $PSItem | Get-Content -Raw
$ast = [System.Management.Automation.Language.Parser]::ParseInput($content, [ref]$null, [ref]$null)
$variables = $ast.FindAll({$args[0] -is [System.Management.Automation.Language.VariableExpressionAst ]}, $true)
$nonQuestionMark = $variables |
Where-Object VariablePath -notmatch '\?$' |
ForEach-Object { $_.VariablePath.UserPath.ToString() } |
Select-Object -Unique
$QuestionMark = $variables |
Where-Object { $_.VariablePath -match '\?$' -and $_.VariablePath.UserPath -ne '?' -and $_.Extent.Text -match '(?<!\$)\?$' } |
ForEach-Object { $_.VariablePath.UserPath.ToString() } |
Select-Object -Unique
$output = [pscustomobject]@{
File = $PSItem
QuestionMarkVars = $QuestionMark
QuestionMarkVarCount = $QuestionMark.Count
NonQuestionMarkVars = $nonQuestionMark
NonQuestionMarkVarCount = $nonQuestionMark.Count
}
$output
}
catch {
throw
}
}
рдзрдиреНрдпрд╡рд╛рдж, @ThomasNieto - рдореИрдВ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рд╣рдо рдкреНрд░рддрд┐рд╢рдд рдХреЛ 0.0005% рддрдХ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ... (рд╕рд┐рд░реНрдл рдордЬрд╛рдХ рдХрд░ рд░рд╣реЗ рд╣реИрдВ)ред
рддреЛ рд╕рдорд┐рддрд┐ рдиреЗ рдПрдХ рдЕрд▓рдЧ - рдирд┐рдЬреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛? - рдХреЙрд░реНрдкрд╕ред
рддреЛ, рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд╛рде рдореЗрдВ рд▓реЗрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ: рдХреНрдпрд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдХреЛрд╖ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдХреНрдпрд╛ рдЗрд╕реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдмрдирд╛рдП рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ (рд╡рд░реНрддрдорд╛рди рдореЗрдВ рджрд┐рдирд╛рдВрдХ 26 рдЬреБрд▓рд╛рдИ 2017)?
@ рд╕реНрдЯреАрд╡рдПрд▓-рдПрдордПрд╕рдПрдлрдЯреА, рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
@ mklement0 рдореИрдВ рдЧреЛрд▓ рд╣реБрдЖ рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 0.00058% рд╣реИ
https://github.com/PowerShell/PowerShell-RFC/pull/223#discussion_r318340339 рдореЗрдВ @adityapatwardhan рдиреЗ рдЙрд╕реА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреЛрд╖ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ 62% рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рд╢реНрди рдЪрд┐рд╣реНрди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рдХреЗ рд╕рд╛рде рдЖрдпрд╛ред рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рджреЗрдЦреА рдХрд┐ рд╡рд╣ рдЙрд╕ рдкреНрд░рддрд┐рд╢рдд рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдЖрдпрд╛ред рдХреНрдпрд╛ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрдПрд╕ рд╕рдорд┐рддрд┐ рдиреЗ рдЙрд╕ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛?
рд▓рд┐рдВрдХ рдХреА рдЧрдИ рдЯрд┐рдкреНрдкрдгреА рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @adityapatwardhan рдХреНрдпрд╛ рдХрд╣ рд░рд╣рд╛ рд╣реИ рдХрд┐ _рдЙрди рд╕рднреА рдЪрд░реЛрдВ рдореЗрдВ рдЬрд┐рдирдХреЗ рдирд╛рдо рдореЗрдВ ?
рд╣реИ_ 62% рдХреЗ рдирд╛рдо рдХреЗ _last_ рд╡рд░реНрдг рдХреЗ рд░реВрдк рдореЗрдВ ?
ред
рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, (рдШреБрдВрдШрд░рд╛рд▓реЗ-рдмреНрд░реЗрд╕-рд▓реЗрд╕) рдПрдВрдб-рдЗрди- ?
рдЪрд░ (рд╕рдордЧреНрд░ рд░реВрдк рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдкреНрд░рддрд┐рд╢рдд рдХреЗ рд░реВрдк рдореЗрдВ) рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рд╕рд╛рд░ рдХрд╛ рдЖрдкрдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЕрдзрд┐рдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд▓рдЧрддрд╛ рд╣реИред
рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд┐рддрд┐ рдХреЗрд╡рд▓ "рд╣рдо рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ" рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рднреА рдХреНрдпреЛрдВ рд╣реИ рдпрджрд┐ рдпрд╣ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рднрджреНрджрд╛ рдФрд░ рдЕрдиреБрдкрдпреЛрдЧреА рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ?
@ThomasNieto рдЗрд╕реА рддрд░рд╣ рдореИрдВрдиреЗ рдЗрди рдореБрджреНрджреЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╣реАрдВ рдПрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рдЖрдкрдХреЗ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд┐рдПред
@mburszley рдЕрдкрдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ рдЖрдкрдХреЛ рдорд┐рд▓реЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдПрдХ рдФрд░ рд╡рд┐рдзрд┐ (рдПрдПрд╕рдЯреА рдмрдирд╛рдо рд░реЗрдЧреЗрдХреНрд╕) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
рдореИрдВ рдЖрдкрдХреЛ рд╕реБрдирддрд╛ рд╣реВрдВ, @mburszley , рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реЗ:
рд╕рдорд┐рддрд┐ рд╕рд┐рд░реНрдл рдХрд╣ рд░рд╣реА рд╣реИ "рд╣рдо рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ"
рдпрджрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ _fiat_ рдирд┐рд░реНрдгрдп рдерд╛ - рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реИ - рдпрд╣ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╕рдореБрджрд╛рдп рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЗрдВ _рдХрдерд┐рдд_ рдХрд╛рд░рдг рдПрдХ рдЖрдзрд╛рд░ рдерд╛ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдореЗрдВ рд╕рдорд┐рддрд┐ рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХрд╛ рдореМрдХрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП - рдпрд╛ рдпрд╣ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрдо рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдирд┐рд░реНрдгрдп рдкрд░ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
https://github.com/PowerShell/PowerShell/issues/11379#issuecomment-566756120 рдореЗрдВ рдореЗрд░реЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рдореИрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рддрд╛рдХрд┐
$obj?.Method()
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ$<var i="9">obj</var>
?.
<var i="12">Method</var>()
рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░реЗ, рдФрд░ рдХреЗрд╡рд▓$<var i="14">obj?</var>
.
<var i="17">Method</var>()
рдЬрдм$<var i="19">obj</var>
рджрд╛рдпрд░реЗ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди$<var i="21">obj?</var>
рдХрд░рддрд╛ рд╣реИ рдФрд░#requires┬атАСVersion
v7+ рдирд╣реАрдВ рд╣реИред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░реЗрдЧрд╛ред
@ThomasNieto
@ mklement0 рд╕рд╣реА рд╣реИ, рдореЗрд░рд╛ рдорддрд▓рдм рдпрд╣ рдерд╛ рдХрд┐ ?
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рдХреЗ рдмреАрдЪ , 62% рдЕрдВрдд рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣рд╛рдВ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдЪрд░ рдЬреЛ ?
рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЕрдВрдд рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдПрдХ рдЧреИрд░-рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ред
рдпрджрд┐ {..}
рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрднреА рднреА рдкрд╛рд░реНрд╕ рд╣реЛрдЧреА рд▓реЗрдХрд┐рди рд╢рдмреНрджрд╛рд░реНрде рдЕрд▓рдЧ рд╣реЛрдЧрд╛, рдЬреЛ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдмрд╣реБрдд рдЦрддрд░рдирд╛рдХ рд╣реИред
рдЬрд╝рд░реВрд░... рд▓реЗрдХрд┐рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд▓рдЧрднрдЧ рдХреЛрдИ рднреА рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рдорд╛рди, рдЗрд╕реЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рд╕рдордп рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рдФрд░ рд╕реНрдерд┐рд░ рдореЗрдВ рд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдореБрдЭреЗ рдПрдХ рдЧреВрдврд╝ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ рдЬрдм рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЪрд░рд┐рддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ ?
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреВрд░ рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
рдпрджрд┐ {..} рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣рдЯрд╛ рджреА рдЬрд╛рддреА рд╣реИ рддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрднреА рднреА рдкрд╛рд░реНрд╕ рд╣реЛрдЧреА рд▓реЗрдХрд┐рди рд╢рдмреНрджрд╛рд░реНрде рдЕрд▓рдЧ рд╣реЛрдЧрд╛, рдЬреЛ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдмрд╣реБрдд рдЦрддрд░рдирд╛рдХ рд╣реИред
рдХреНрдпрд╛ рдЖрдк рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдЪрд┐рдВрддрд┐рдд рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ ?.
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╡реЗ C/C++/C# рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдВрдХреЗрдд рдХреЗ рдЧрд▓рдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдХреБрдЫ рднреА рдЧрд▓рдд рдХрд┐рдпрд╛ рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
PS> $res = "My length is 15"
PS> $res?.Length
0
рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╕рдЦреНрдд-рдореЛрдб рдЗрд╕реЗ рдвреВрдВрдв рд▓реЗрдЧрд╛ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рд╕рдЦреНрдд рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдмрд╣реБрдд рдХрдо рдкреНрд░рддрд┐рд╢рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЯреВрдЯрдиреЗ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо ?.
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рд╡реНрдпрд╛рдкрд╛рд░-рдмрдВрдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╛рдЧрд▓ рдирд╣реАрдВ рд╣реВрдБред рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рддреЛрдбрд╝рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ, рднрд▓реЗ рд╣реА рдпрд╣ рдмрд╣реБрдд рдХрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╣реЛред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рд╡рд░рд╢реЗрд▓ рдХреЛ Enable-ExperimentalFeature
рдмрд░рд╛рдмрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ, рдЗрд╕реЗ Enable-PSFeature
Enable-ExperimentalFeature
рдХрд╣реЗрдВ, рдЙрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрдм рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ рд▓реЗрдХрд┐рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЪрд╛рд▓реВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП $?.GetType()
рдЖрдк рдЪреЗрддрд╛рд╡рдиреА рджреЗрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдпрд╣ рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп ${?}.GetType()
рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ #requires -version 7.1 -feature PSNullConditionalOperators
рд╕рд╛рде рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреА рд╣реИрдВред рддрдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рднреА PS 8 рд╣рд┐рдЯ рд╣реЛ, рддреЛ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
@rkeithhill рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╕реАрдзреЗ рдореБрджреНрджреЗ рдкрд░ рдЬрд╛рддрд╛ рд╣реИред
рдПрдХ рдкрд▓ рдХреЗ рд▓рд┐рдП рднреВрд▓ рдЬрд╛рдЗрдП рдХрд┐ рдЖрдк рдЖрдЬ рдкрд╛рд╡рд░рд╢реЗрд▓ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдЬрд╛рдирддреЗ рд╣реИрдВред рдЬрдм рдЖрдк рджреЗрдЦрддреЗ рд╣реИ
PS> $res?.Length
рдпрд╣ _name, operator, name_ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ - рдмреЗрд╢рдХ рдпрд╣ рдХреМрди рд╕рд╛ рд╣реИред
рдЬреЛ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ: _"?" рдСрдкрд░реЗрдЯрд░_ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдпрд╛ _"?" рдкреНрд░рдердо рдирд╛рдо-рддрддреНрд╡_ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ?
рдпрджрд┐ рдЗрди рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ "рдкрд╛рд╡рд░рд╢реЗрд▓реА рдирд╣реАрдВ рд╣реИрдВ") рддреЛ рдпрд╣ рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬрд╝ рдХреЗ рдмреАрдЪ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдереЛрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЯреВрдЯ-рдлреВрдЯ рд╣реЛрдЧреАред
рдореИрдВ psScriptAnalyzer _now_ рдореЗрдВ рдирд┐рдпрдо рдбрд╛рд▓рдирд╛ рд╢реБрд░реВ рдХрд░реВрдВрдЧрд╛, рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЪрд░ рдирд╛рдореЛрдВ рдореЗрдВ рдХреБрдЫ [рдХрд╛рдиреВрдиреА] рд╡рд░реНрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЦрд░рд╛рдм рд╢реИрд▓реА рд╣реИред
рдореБрдЭреЗ Enable-feature
рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИред рдХреЛрдИ рдЗрд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдбрд╛рд▓рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╡реЗ рдХрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдирдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд╛рдж рдЪрд▓рдиреЗ рдкрд░ рдкреБрд░рд╛рдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреВрдЯ рдЬрд╛рддреА рд╣реИ, (рд▓реЗрдХрд┐рди рдмрд╛рдХреА рд╕рдордп рдХрд╛рдо рдХрд░рддреА рд╣реИ)ред рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ _рдерд░реНрдб рдкрд╛рд░реНрдЯреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ X рд╕реНрдХреНрд░рд┐рдкреНрдЯ Y_ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ Y рд╕рдЦреНрдд рдореЛрдб рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реИ рдФрд░ X рдЗрд╕рдХреЗ рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ; рджреЛрдиреЛрдВ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рд▓реЗрдЦрдХ рдореЗрд░реА рдмреБрд░реА рдХрд┐рддрд╛рдмреЛрдВ рдореЗрдВ рд╣реИрдВред
рдореИрдВ рдЕрдм psScriptAnalyzer рдореЗрдВ рдирд┐рдпрдо рдбрд╛рд▓рдирд╛ рд╢реБрд░реВ рдХрд░реВрдВрдЧрд╛, рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЪрд░ рдирд╛рдореЛрдВ рдореЗрдВ рдХреБрдЫ [рдХрд╛рдиреВрдиреА] рд╡рд░реНрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЦрд░рд╛рдм рд╢реИрд▓реА рд╣реИред
рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рд╣реИ: рдпрджрд┐ рдЖрдк рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдкреЙрд╡рд░рд╢реЗрд▓ рдЯреЛрдХрди рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ PSScriptAnalyzer рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рднреА рджреЗрдЦреЗрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ $res?
рдЬреИрд╕рд╛ рдЪрд░ рд╣реИ, рддреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ:
{
$res?.Length
}.Ast.EndBlock.Statements[0].PipelineElements[0].Expression.Expression.VariablePath.UserPath
рдЖрдк рдХреЛ рджреЗрдВрдЧреЗ
res?
рд▓реЗрдХрд┐рди, рдЕрдЧрд░ рдЖрдк рдкрд╛рд╡рд░рд╢реЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдХрд╣реЗрдВ, 7.2, рддреЛ рдЖрдкрдХреЛ рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛
рдЕрдм PSScriptAnalyzer ?
рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдм рд╡реЗрд░рд┐рдПрдмрд▓ рдирд╛рдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ (рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╣ рдмрджрд▓рд╛рд╡ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ)ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ PSScriptAnalyzer рдПрдХ PowerShell рдореЙрдбреНрдпреВрд▓ рд╣реИ рдФрд░ рдЙрд╕реА рдкрд╛рд░реНрд╕рд░ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ PowerShell рдореЗрдВ рд╢рд┐рдк рдХрд░рддрд╛ рд╣реИред (рдФрд░ рдЕрдЧрд░ рдпрд╣ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдкреНрд░рд╛рдкреНрдп рдФрд░ рдЖрдкрджрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдиреБрд╕реНрдЦрд╛ рд╣реЛрдЧрд╛)ред
рдЗрд╕рдХреЗ рдЖрд╕-рдкрд╛рд╕ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд╕рдорд╛рди рдирд┐рджрд╛рди рдХреА рдЖрдкреВрд░реНрддрд┐ рдХреЗ рд▓рд┐рдП рдирдП 7.2 рддрд░реНрдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ PSScriptAnalyzer (рдФрд░ рдПрдХ рдкреВрд░реА рдирдИ рдЕрд╕реЗрдВрдмрд▓реА рд╢рд┐рдкрд┐рдВрдЧ) рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ред рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЖрдкрдиреЗ рдХреБрдЫ рд╣рдж рддрдХ рдХреЙрд╕реНрдореЗрдЯрд┐рдХ рдкрд░рд┐рджреГрд╢реНрдп рдХреА рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рд╣рд░ рдЬрдЧрд╣ рдЬрдЯрд┐рд▓рддрд╛ рдмрдврд╝рд╛ рджреА рд╣реИ (рдпрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдЕрдкрдиреА рдкрд░реАрдХреНрд╖рдг рд╕рддрд╣ рдХреЛ рдХрдо рдХрд░ рджрд┐рдпрд╛ рд╣реИ)ред
рдЗрд╕рд╕реЗ рднреА рдмрджрддрд░, рдЕрдиреНрдп рд╕рднреА рдЙрдкрдХрд░рдг рдЬреЛ рдПрдПрд╕рдЯреА рдкрд░ рднреА рдирд┐рд░реНрднрд░ рд╣реИрдВ, рдЗрд╕ рддрд░рд╣ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА PSScriptAnalyzer рдХрд░рддрд╛ рд╣реЛред рдПрдПрд╕рдЯреА-рд▓рдХреНрд╖рд┐рдд рдЙрдкрдХрд░рдг рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ рдкреВрд░реНрдг рд╢реБрджреНрдзрддрд╛ рдХреЗ рд▓рд┐рдП рдкрд╛рд╡рд░рд╢реЗрд▓ рдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдорд╛рдореВрд▓реА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рд╡реЗ рд╢рд╛рдпрдж рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реЛрдВрдЧреЗ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдпрд╣ рдХрд┐рд╕реА рднреА рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ; рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рддреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдХрдкрдЯреА рд░реВрдк рд╣реИ, рдЬрд╣рд╛рдВ рдПрдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдЪреБрдкрдЪрд╛рдк рджреВрд╕рд░рд╛ рдмрди рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдкрд╛рд░реНрд╕рд░/рдЯреЛрдХрдирд╛рдЗрдЬрд╝рд░-рд╕реНрддрд░ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХ рдФрд░ рдЦрддрд░рдирд╛рдХ рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ PSScriptAnalyzer рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реЗрд╡рд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрдЫреЗ рдХреА рдУрд░ рдЭреБрдХрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдРрд╕реЗ рднрд╛рд░реА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рддреМрд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
@rjmholt , рдЬрдмрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рдЗрд╕ рдмрд╛рдд рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдмрджрд▓рд╛рд╡ рдХрд┐рддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ _in рд╕рд┐рджреНрдзрд╛рдВрдд_, рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ _in рдЕрднреНрдпрд╛рд╕_, рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдкреАрдПрд╕рдПрд╕рдП рдирд┐рдпрдо рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
@ThomasNieto рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ - рдЕрдЧрд░ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреЙрд░реНрдкрд╕ рд╕рднреА рдкрд╛рд╡рд░рд╢реЗрд▓ рдХреЛрдб рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реИ - рддреЛ _рд╡рд╕реНрддреБрддрдГ рдХреЛрдИ рднреА рдЙрди рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ ?
_ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред
рдЕрдЧрд░ рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдКрдВ, рддреЛ рдЬреНрдпрд╛рджрд╛рддрд░ рд▓реЛрдЧ рдРрд╕реЗ рдЪрд░ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _рдерд┐рдВрдХ_ рднреА рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЙрдирд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ (рдореБрдЭреЗ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛), рдФрд░ рд╢рд╛рдпрдж рдЗрд╕ рдЕрдкрд╡рд╛рдж рдкрд░ рднреА рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдХрд┐ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд $?
рдЪрд░ рдХрд╛ рдЧрдарди рд╣реЛрддрд╛ рд╣реИ (рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рд╕рдорд╛рди рд░реВрдк рд╕реЗ POSIX- рд╕рдВрдЧрдд рд╢реЗрд▓ рдореЗрдВ рдЕрдкрд╡рд╛рдж рд╣реИ рдЬреИрд╕реЗ bash
)ред
8
рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реЗ:5
рдореЗрдВ рдХреЗрд╡рд▓ _false рд╕рдХрд╛рд░рд╛рддреНрдордХ_ рд╣реЛрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН рдЪрд░ _strings_ рдХреЗ рдЕрдВрджрд░ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ "Are you sure you want to kill $vParam?"
- рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпреЗ рдЙрдкрдпреЛрдЧ _broken_ рд╣реИрдВ, рдФрд░ рдпрд╣ рдкреНрд░рдХрдЯ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЗрдЦрдХреЛрдВ рдиреЗ _not_ ?
рд╣реЛрдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреА рдереА рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд╛рдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ред2
рдЕрдм рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВред?
-рдЕрдВрдд рд╡рд╛рд▓реЗ рдЪрд░ рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рд╣реИ - _Boolean_ рдЪрд░ (рдЬреИрд╕реЗ, $key1?
) рдХреЗ рд░реВрдк рдореЗрдВ, рдЬреЛ рдПрдХ рддрд░рдл, рдЗрд╕рд▓рд┐рдП _not_ рд╕рджрд╕реНрдп-рдкрд╣реБрдВрдЪ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдпреБрдХреНрдд рд╣реИрдВ , .
/cc @stevenayers.рдЙрдкрд░реЛрдХреНрдд рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдпрд╣ рдореБрдЭреЗ рдПрдХ рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХ рдмрдХреЗрдЯ 3 рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЧреНрд░реЗ рдХреНрд╖реЗрддреНрд░ рдкрд░рд┐рд╡рд░реНрддрди, рдЬреЛ рдЗрд╕рд▓рд┐рдП _рд╕реНрд╡реАрдХрд╛рд░реНрдп_ рд╣реИ - рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ _рд▓рд╛рдн_ рдХрд╛ рддрд░реНрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
_Documenting_ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди (рддрд░реНрдХ рдХреЗ рд╕рд╛рде) рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдмреЗрд╢рдХ:
рдпрд╣ (рдП) рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕рд╣реА рд╣реЛрдиреЗ рдФрд░ (рдмреА) рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдХреЙрд░реНрдкрд╕ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реЛрдиреЗ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
рдпрд╣ рд╕рдорд┐рддрд┐ рдХреЗ рдЗрд╕ рджрд╛рд╡реЗ рдХреЗ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд┐рдкрд░реАрдд рд╣реИ рдХрд┐ "рдкреНрд░рд╢реНрди рдЪрд┐рд╣реНрди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рдирд╛рдореЛрдВ рдХрд╛ рдХрд╛рдлреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛" (рдЬреЛ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХреЗрд╡рд▓ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреА рдпрджрд┐ рдРрд╕реЗ рдЪрд░ рдирд╛рдо {...}
рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдирд╣реАрдВ рд╣реИрдВ
рдЗрд╕ рдзрд╛рд░рдгрд╛ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реБрдП рдХрд┐ 1. рд╕рддреНрдп рд╣реИ (рд╣рдордиреЗ 2 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИ), рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
рдмреИрдВрдб-рд╕рд╣рд╛рдпрддрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рдирд╛рдореЛрдВ рдореЗрдВ ?
рдХреЛ рдХреЗрд╡рд▓ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ, рдЬрдм рддрдХ рдХрд┐ {...}
рдореЗрдВ рд╕рдВрд▓рдЧреНрди рди рд╣реЛ ( $?
рдХреЗ рд╕реНрдкрд╖реНрдЯ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде) - рдпрд╣ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЫреЛрдЯреЗ рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛ рдЙрди рд▓рд┐рдкрд┐рдпреЛрдВ рдХрд╛ рдЕрдиреБрдкрд╛рдд рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВред
$key1?
рдЬреИрд╕рд╛ рдХреБрдЫ рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рди рддреЛ .
рдФрд░ рди рд╣реА рдХреЛрдИ рдЕрдиреНрдп ?
( $key1??'else'
) рдФрд░ рди рд╣реА рдПрдХ рдЯрд░реНрдирд░реА рдПрдХреНрд╕рдкреНрд░реЗрд╢рди ( $key1?1:0
) рдПрдХ _parser рддреНрд░реБрдЯрд┐_ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛ред$key1 ?1:0
/ $key1 ??'else'
- рдпрд╛ {...}
- ${key1}?1:0
/ ${key1}??'else'
?
рдХреЛ рдЕрдм рдПрдХ (рдЧреИрд░- {...}
-рд╕рдВрд▓рдЧреНрди) рдЪрд░ рдирд╛рдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ _fix_ рдореМрдЬреВрджрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рд╣реЛрдВрдЧреЗ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЧрд▓рддреА рд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ "Are you sure you want to kill $vParam?"
. рдореИрдВрдпрджрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдореМрдЬреВрджрд╛ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рд▓реБрдкреНрдд рд╣реЛ рд░рд╣реЗ рдЫреЛрдЯреЗ рдЕрдиреБрдкрд╛рдд рдХреЛ рддреЛрдбрд╝рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо @ExE-Boss рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рддрд░реНрдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рдЗрд╕ рд╡реИрдЪрд╛рд░рд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдкреЗрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдЕрдХреЗрд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬрдЯрд┐рд▓рддрд╛ (рдЬреЛ рдХрд┐ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛)ред
@ рд╕реНрдЯреАрд╡рдПрд▓-рдПрдордПрд╕рдПрдлрдЯреА
рд╕рд┐рддрдВрдмрд░ рд╕рдореБрджрд╛рдп рдХреЙрд▓ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж (https://aka.ms/PSCommunityCall; рдЗрд╕ рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рд╕рд┐рддрдВрдмрд░ рдХреЙрд▓ рдХреА рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╡рд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди https://aka.ms/JoinPSCall рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЕрдЧрд▓реА рдХреЙрд▓ рддрдХ), 46:00 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, https://github.com/PowerShell/PowerShell-RFC/issues/260 рдкрд░ рдЪрд░реНрдЪрд╛ рдХреЗ рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡ рдЖрдЧреНрд░рд╣ рдореЗрдВ @ThomasNieto рдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░:
(рдореИрдВ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реАрдзрд╛ рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕реЗ YouTube рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЬрд╛рдиреЗ рдФрд░ https://aka.ms/PSCommunityCall рд╕реЗ рд▓рд┐рдВрдХ рд╣реЛрдиреЗ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред)
рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдореЗрдВ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░:
рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдкрд░ рдлрд┐рд░ рд╕реЗ рдЬрд╛рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╡реНрдпрдХреНрдд рдХреА рд╣реИ, рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВ рдФрд░ рдЗрд╕реЗ Review - Committee
рд░реВрдк рдореЗрдВ рдкреБрдирдГ рдЯреИрдЧ рдХрд░реЗрдВред
рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рдХрд╛ рд╕рдВрдмрдВрдз рд╣реИ рдХрд┐ рдЪрд░ рдирд╛рдореЛрдВ рдХреЛ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░рдирд╛ рдПрдХ рдкреВрд░реНрд╡-рдореМрдЬреВрджрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдФрд░ рд▓реЛрдЧ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ _aesthetic_ рдЖрдзрд╛рд░ рдкрд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдЖрдкрддреНрддрд┐ рдЬрддрд╛рддреЗ рд╣реИрдВ:
{...}
_can_ рдФрд░ рдХрднреА-рдХрднреА _must_ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЪрд░ рдирд╛рдореЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред{...}
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ_; рдПрдХ рдорд╛рдзреНрдпрдорд┐рдХ рдЪрд┐рдВрддрд╛ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдЕрд╕реБрд╡рд┐рдзрд╛ рд╣реИредGitHubрдЖрд░рдПрдлрд╕реА (рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз) рдбрд┐рдЬрд╛рдЗрди рдкрд░рд┐рд╡рд░реНрддрди рдФрд░ рдкрд╛рд╡рд░рд╢реЗрд▓ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдореЗрдВ рд╕реБрдзрд╛рд░ рдкрд░ рд╕рдореБрджрд╛рдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬ - рдкрд╛рд╡рд░рд╢реЗрд▓/рдкрд╛рд╡рд░рд╢реЗрд▓-рдЖрд░рдПрдлрд╕реА
рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдЯреАрдо
рдореБрдЭреЗ рдЪрд┐рдВрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ - рдЕрдм рдЕрдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд▓ рдХреЗ рд▓рд┐рдП рдмрдВрдж рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ - рджрд░рд╛рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧрд┐рд░ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд╕реНрдорд╛рд░рдХ рдХреЗ рд░реВрдк рдореЗрдВ #14025 рдЦреЛрд▓рд╛ рд╣реИ, рдФрд░ рдореИрдВ рдЙрди рд╕рднреА рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рд╡рд╣рд╛рдВ рдЕрдкрдирд╛ рд╕рдорд░реНрдерди рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдЪреНрдЫреБрдХ рд╣реИрдВред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@rjmholt , рдЬрдмрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рдЗрд╕ рдмрд╛рдд рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдмрджрд▓рд╛рд╡ рдХрд┐рддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ _in рд╕рд┐рджреНрдзрд╛рдВрдд_, рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ _in рдЕрднреНрдпрд╛рд╕_, рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдкреАрдПрд╕рдПрд╕рдП рдирд┐рдпрдо рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
@ThomasNieto рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ - рдЕрдЧрд░ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреЙрд░реНрдкрд╕ рд╕рднреА рдкрд╛рд╡рд░рд╢реЗрд▓ рдХреЛрдб рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реИ - рддреЛ _рд╡рд╕реНрддреБрддрдГ рдХреЛрдИ рднреА рдЙрди рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ
?
_ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВредрдЕрдЧрд░ рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдКрдВ, рддреЛ рдЬреНрдпрд╛рджрд╛рддрд░ рд▓реЛрдЧ рдРрд╕реЗ рдЪрд░ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _рдерд┐рдВрдХ_ рднреА рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЙрдирд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ (рдореБрдЭреЗ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛), рдФрд░ рд╢рд╛рдпрдж рдЗрд╕ рдЕрдкрд╡рд╛рдж рдкрд░ рднреА рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдХрд┐ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд
$?
рдЪрд░ рдХрд╛ рдЧрдарди рд╣реЛрддрд╛ рд╣реИ (рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рд╕рдорд╛рди рд░реВрдк рд╕реЗ POSIX- рд╕рдВрдЧрдд рд╢реЗрд▓ рдореЗрдВ рдЕрдкрд╡рд╛рдж рд╣реИ рдЬреИрд╕реЗbash
)ред8
рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реЗ:5
рдореЗрдВ рдХреЗрд╡рд▓ _false рд╕рдХрд╛рд░рд╛рддреНрдордХ_ рд╣реЛрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН рдЪрд░ _strings_ рдХреЗ рдЕрдВрджрд░ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ"Are you sure you want to kill $vParam?"
- рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпреЗ рдЙрдкрдпреЛрдЧ _broken_ рд╣реИрдВ, рдФрд░ рдпрд╣ рдкреНрд░рдХрдЯ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЗрдЦрдХреЛрдВ рдиреЗ _not_?
рд╣реЛрдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреА рдереА рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд╛рдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ред2
рдЕрдм рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВред?
-рдЕрдВрдд рд╡рд╛рд▓реЗ рдЪрд░ рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рд╣реИ - _Boolean_ рдЪрд░ (рдЬреИрд╕реЗ,$key1?
) рдХреЗ рд░реВрдк рдореЗрдВ, рдЬреЛ рдПрдХ рддрд░рдл, рдЗрд╕рд▓рд┐рдП _not_ рд╕рджрд╕реНрдп-рдкрд╣реБрдВрдЪ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдпреБрдХреНрдд рд╣реИрдВ ,.
/cc @stevenayers.рдЙрдкрд░реЛрдХреНрдд рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдпрд╣ рдореБрдЭреЗ рдПрдХ рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХ рдмрдХреЗрдЯ 3 рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЧреНрд░реЗ рдХреНрд╖реЗрддреНрд░ рдкрд░рд┐рд╡рд░реНрддрди, рдЬреЛ рдЗрд╕рд▓рд┐рдП _рд╕реНрд╡реАрдХрд╛рд░реНрдп_ рд╣реИ - рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ _рд▓рд╛рдн_ рдХрд╛ рддрд░реНрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
_Documenting_ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди (рддрд░реНрдХ рдХреЗ рд╕рд╛рде) рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдмреЗрд╢рдХ:
рдпрд╣ (рдП) рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕рд╣реА рд╣реЛрдиреЗ рдФрд░ (рдмреА) рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдХреЙрд░реНрдкрд╕ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реЛрдиреЗ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
рдпрд╣ рд╕рдорд┐рддрд┐ рдХреЗ рдЗрд╕ рджрд╛рд╡реЗ рдХреЗ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд┐рдкрд░реАрдд рд╣реИ рдХрд┐ "рдкреНрд░рд╢реНрди рдЪрд┐рд╣реНрди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рдирд╛рдореЛрдВ рдХрд╛ рдХрд╛рдлреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛" (рдЬреЛ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХреЗрд╡рд▓ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреА рдпрджрд┐ рдРрд╕реЗ рдЪрд░ рдирд╛рдо
{...}
рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдирд╣реАрдВ рд╣реИрдВрдЗрд╕ рдзрд╛рд░рдгрд╛ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реБрдП рдХрд┐ 1. рд╕рддреНрдп рд╣реИ (рд╣рдордиреЗ 2 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИ), рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
рдмреИрдВрдб-рд╕рд╣рд╛рдпрддрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рдирд╛рдореЛрдВ рдореЗрдВ
?
рдХреЛ рдХреЗрд╡рд▓ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ, рдЬрдм рддрдХ рдХрд┐{...}
рдореЗрдВ рд╕рдВрд▓рдЧреНрди рди рд╣реЛ ($?
рдХреЗ рд╕реНрдкрд╖реНрдЯ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде) - рдпрд╣ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЫреЛрдЯреЗ рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛ рдЙрди рд▓рд┐рдкрд┐рдпреЛрдВ рдХрд╛ рдЕрдиреБрдкрд╛рдд рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВред$key1?
рдЬреИрд╕рд╛ рдХреБрдЫ рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рди рддреЛ.
рдФрд░ рди рд╣реА рдХреЛрдИ рдЕрдиреНрдп?
($key1??'else'
) рдФрд░ рди рд╣реА рдПрдХ рдЯрд░реНрдирд░реА рдПрдХреНрд╕рдкреНрд░реЗрд╢рди ($key1?1:0
) рдПрдХ _parser рддреНрд░реБрдЯрд┐_ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛ред$key1 ?1:0
/$key1 ??'else'
- рдпрд╛{...}
-${key1}?1:0
/${key1}??'else'
?
рдХреЛ рдЕрдм рдПрдХ (рдЧреИрд░-{...}
-рд╕рдВрд▓рдЧреНрди) рдЪрд░ рдирд╛рдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ _fix_ рдореМрдЬреВрджрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рд╣реЛрдВрдЧреЗ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЧрд▓рддреА рд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐"Are you sure you want to kill $vParam?"
. рдореИрдВрдпрджрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдореМрдЬреВрджрд╛ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рд▓реБрдкреНрдд рд╣реЛ рд░рд╣реЗ рдЫреЛрдЯреЗ рдЕрдиреБрдкрд╛рдд рдХреЛ рддреЛрдбрд╝рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо @ExE-Boss рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рддрд░реНрдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рдЗрд╕ рд╡реИрдЪрд╛рд░рд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдкреЗрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдЕрдХреЗрд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬрдЯрд┐рд▓рддрд╛ (рдЬреЛ рдХрд┐ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛)ред