рдЕрд╢рдХреНрдд- coalescing рдФрд░ null-conditonal рдкрд╣реБрдВрдЪ (null-soaking) рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рд┐рд╡рд░реНрдзрди рд╣реЛрдЧрд╛ред
_Update_: @BrucePay рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рд╢реВрдиреНрдп-рд╕рд╢рд░реНрдд _assignment_ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ, ?=
- рдиреАрдЪреЗ рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВ ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп:
if ($null -ne $varThatMayBeNull) { $varThatMayBeNull } else { $fallbackValue }
#
if ($null -ne $varThatMayBeNull) { $varThatMayBeNull.Name } else { $null }
рдПрдХ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
$varThatMayBeNull ?? $fallbackValue # null-coalescing
#
$varThatMayBeNull?.Name # null-conditional access, for Set-StrictMode -Version 2+
$varThatMayBeNull?[42] # ditto, with indexing
рдкреБрди: рд╢реВрдиреНрдп-рд╕рд╢рд░реНрдд рдкрд╣реБрдВрдЪ: Set-StrictMode
рдмрдВрдж (рдбрд┐рдлрд╝реЙрд▓реНрдЯ) рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде, рдЖрдк рдмрд╕ $varThatMayBeNull.Name
рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ; рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ Set-StrictMode -Version 2
рдпрд╛ рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡ рдореЗрдВ рд╣реИ, рддреЛ $varThatMayBeNull.Name
_break_ рдФрд░ рдпрд╣реА рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдЕрд╢рдХреНрдд-рд╕рдВрдЪрд╛рд▓рдХ ( ?.
) рдорджрджрдЧрд╛рд░ рд╣реИ, рдЬреЛ рд╕реНрдкрд╖реНрдЯ рдЗрд░рд╛рджреЗ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░рдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИред $null
рд╕рдВрдХреНрд╖рд┐рдкреНрдд рддрд░реАрдХреЗ рд╕реЗред
рдЦреБрд▓рд╛ рдкреНрд░рд╢реНрди :
$varThatMayBeNull?[42]
рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЪрд░ $null
, рд▓реЗрдХрд┐рди рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЗрдВрдбреЗрдХреНрд╕ _must рдЕрд╕реНрддрд┐рддреНрд╡_ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рддрддреНрд╡ рд╣реИред
рдЗрд╕рд▓рд┐рдП рдпрд╣ _indexing_ null-рд╕рд╢рд░реНрдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ - рдРрд╕рд╛ рдХреБрдЫ рдЬреЛ C # рдХрд░рддрд╛ рд╣реИ _not_ рд╕рдорд░реНрдерди, рд╕рдВрдпреЛрдЧ рд╕реЗ (рдЖрдкрдХреЛ .ElementAtOrDefault()
)ред
рджреЛ рдореВрд▓ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЖрдУ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдЧреИрд░-рдореМрдЬреВрдж _index_ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рдЗрд░рд╛рджреЗ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ:
?[...]
рдФрд░ [...]?
рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИрдВред[...?]
, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИредрдЧреИрд░-рдореМрдЬреВрдж рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдореМрдЬреВрджрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░реЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ Set-StrictMode
рд╕реЗрдЯрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдирд┐рд╣рд┐рдд рд╣реИ - рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ рджреЗрдЦреЗрдВ ред
рд╕рдВрдмрдВрдзрд┐рдд: рдЯрд░реНрдирд░реА рд╕рд╢рд░реНрдд рд▓рд╛рдЧреВ рдХрд░реЗрдВ
@ mklement0 рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд┐рдирд╛ ""?
рд╢рд╛рдпрдж name()
рдмрджрд▓ рдЬрд╛рдП?
@iSazonov : рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ ?
рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ Set-StrictMode -Version 2
рдпрд╛ рдЕрдзрд┐рдХ рди рд╣реЛ _not_ рдкреНрд░рднрд╛рд╡ рдореЗрдВ рд╣реИ - рдореИрдВрдиреЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреЛрд╕реНрдЯ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдЪреАрдиреА рдХреБрдЫ рдРрд╕реА рд╢рдХреНрддрд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЖрдирдВрдж рд▓реЗ рд╕рдХрддреА рд╣реИрдВред рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд░ +1ред
рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирдореВрдиреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
a="${b:-$c}"
a = b || c;
a = b or c
a := b ? c
a = b ? b : c;
рдпрд╣рд╛рдБ рддрдХ рдХреА
a = b if b else c
рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ
if (b) { a = b } else { a = c }
рдФрд░ рдЕрдХреНрд╕рд░ рдмрд╛рд░ рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
a = (рдпрджрд┐ (b -n $ null) {b} рдФрд░ {c})
рд╕рднреА рдХреЛ рдЧрдВрджрд╛ рдФрд░ рдзрдорд╛рдХреЗрджрд╛рд░ рд▓рдЧрддрд╛ рд╣реИред
рдЪрд╛рд░реЛрдВ рдУрд░ рдХрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдЬ рдЦреБрдж рдХреЛ рдРрд╕рд╛ рдХрд░рддреЗ рдкрд╛рдпрд╛ред
`` `Powershell
$ рд╢рдмреНрдж = ($ null, "рджреЛ", "рддреАрди")ред рдЬрд╣рд╛рдБ (($ _-$ $ null}, "рдкрд╣рд▓реЗ")
`` ``
рдореИрдВ рдПрдХ рд╕рдорд╛рди рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:
$word = ($null, "two", "three" -ne $null)[0]
@kfsone рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг $a=(if ($b -ne $null) { $b } else { $c })
рдореЗрдВ рдПрдХ рдЫреЛрдЯреА рд╕реА рддреНрд░реБрдЯрд┐ рд╣реИред рдпрд╣ $a=$(if ($b -ne $null) { $b } else { $c })
рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рд╣рд╛рд▓рд╛рдВрдХрд┐ PowerShell рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╣рд╛рдВ $( )
рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рд╕рдВрд╕реНрдХрд░рдг 1 рдерд╛ред v2 рдкрд░, рдЖрдк рдмрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
$a = if ($b) { $b } else { $c }
@bgshacklett рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм $word=($null,'two')[$null -ne 'three']
?
рдпрд╣ рдереЛрдбрд╝рд╛ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ рдпрд╣ 6.1 рд╕реЗ 6.2 рд╕реЗ "рднрд╡рд┐рд╖реНрдп" рддрдХ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИред
@ TheIncorrigible1 рдирд╣реАрдВ, рдпрджрд┐ рдЖрдк рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдореИрдВрдиреЗ рдКрдкрд░ рдЬреЛрдбрд╝рд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ $word
рдХрд╛ рдореВрд▓реНрдп "рджреЛ" рдкрд░ рд╕реЗрдЯ рд╣реИред рдЗрд╕ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдХреЗ рдЙрддреНрддрд░ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рд╣реИ рдЬрд╣рд╛рдВ рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдкреИрдЯрд░реНрди рджреЗрдЦрд╛ рдерд╛:
https://stackoverflow.com/a/17647824/180813
рдЬрдмрдХрд┐ рдЧрдбрд╝рдмрдбрд╝реА рд╣реИрдХ-рдЕрд░рд╛рдЙрдВрдб 20 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдореБрдЭреЗ рдЕрдкреАрд▓ рдХреА рдХрд┐ рдПрдХ рдкрдВрдЬреАрдХреГрдд рдФрд░ / рдпрд╛ рдПрдХ RIPE-DB рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╛ рд╕рдВрдЧрдарди рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкреАрд▓ рдХреА рд╣реИ, рдЬреЛ рдореИрдВ рд╢рдХреНрддрд┐рдпрд╛рдВ рд╕реЗ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдХреБрдЫ рд╣реИ рдЬреЛ рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЛ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИ рдмрд▓реНрдХрд┐ рдЙрдирдореЗрдВ рднрдп рдкреИрджрд╛ рдХрд░реЗрдВред
рдореЗрд░рд╛ рд▓рд┐рдЯрдорд╕ рдЯреЗрд╕реНрдЯ рдпрд╣ рд╣реИ: рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдЯреИрдмрд▓реЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ 3 рдмрдЬреЗ рдирдП рд╕рд╛рд▓ рдХреА рд╕реБрдмрд╣ рдкрдврд╝рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬрдмрдХрд┐ рдлреЛрди рдкрд░ ceo рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рд░реЛрддреЗ рд╣реБрдП рдмрддрд╛рдпрд╛ рдХрд┐ рд╣рдо рдХрд┐рддрдиреЗ рдорд┐рд▓рд┐рдпрди рдбреЙрд▓рд░ рдПрдХ рд╕реЗрдХрдВрдб рдореЗрдВ рдЦреЛ рд░рд╣реЗ рд╣реИрдВред
(рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛: рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрднрд╡ рдХрд╛ рдПрдХ рдвреАрд▓рд╛ рдЕрддрд┐рд╢рдпреЛрдХреНрддрд┐ рдерд╛ рдЬрдм рддрдХ рдХрд┐ рдореИрдВрдиреЗ рдлреЗрд╕рдмреБрдХ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рддреНрд╡рд░рд┐рдд рддреНрд╡рд░рд┐рдд рд░рд┐рд╕рд╛рд╡ рд╕реЗ рд╡рд╛рдкрд╕ рдЖрдпрд╛, рдпрд╣ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рдХрд┐, 2 рдорд┐рдирдЯ рдореЗрдВ рдореИрдВ рдЪрд▓рд╛ рдЧрдпрд╛ рдерд╛, рд╣реЙрд▓реИрдВрдб рдХреА рдЖрдмрд╛рджреА рд╕реЗ рдЕрдзрд┐рдХ рд▓реЛрдЧреЛрдВ рдиреЗ рдПрдХ рдЦрд╛рд▓реА рдорд┐рд▓ рдЧрдпрд╛ рдерд╛ рд╕рдорд╛рдЪрд╛рд░ рдлрд╝реАрдбред рдпрд╣ рдореЗрд░рд╛ рдХреЛрдб рдирд╣реАрдВ рдерд╛ рдФрд░ рдЧрд▓рддреА рдмрд╣реБрдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕реА ++ рдорд╛рдирдХ рдореЗрдВ рд░рд┐рдЯрд░реНрди рдПрдХреНрд╕ рдмрдирд╛рдо рд░рд┐рдЯрд░реНрди (рдПрдХреНрд╕) рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдореЗрдВ рдПрдХ рдорд┐рдирдЯ рдХрд╛ рдмрджрд▓рд╛рд╡ рдерд╛, рдФрд░ "рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ 2 рдорд┐рдирдЯ рдХреЗ рд╕рд╛рде рдкрдврд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╕рдордп рд╕реАрдорд╛, рдПрдХ рдкреВрд░реНрдг рдореВрддреНрд░рд╛рд╢рдп рдФрд░ рдЖрдкрдХреЗ рдХрдВрдзреЗ рдкрд░ рдбрдЪ рд╡реНрдпрдХреНрддрд┐ рдХреА рдмрд┐рд▓реНрд▓реА рдХреЗ рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдкрд╣рдиреЗ рд╣реБрдП рд╣рд░ рдЦрдЯрд┐рдпрд╛ рдХрд╛ рднрд╛рдЧреНрдп ??? "рд╢рд╛рдВрдд рдХреЗ рд░реВрдк рдореЗрдВ рдзреНрд╡рдирд┐ рдирд╣реАрдВ рдереА"
рд╣рд╛рдБред PS рдореЗрдВ рдХреБрдЫ рд╕рд╛рдл-рд╕реБрдерд░реА рддрд░рдХреАрдмреЗрдВ рд╕рдВрднрд╡ рд╣реИрдВ рдЬреЛ рдПрдХ рдЪреБрдЯрдХреА рдореЗрдВ рдмрдбрд╝реА рд╣реИрдВ рдпрд╛ рдЕрдЧрд░ рдЖрдкрдХреЛ рдПрдХрдореБрд╢реНрдд рд╢реЙрд░реНрдЯрд╣реИрдВрдб рдХреА рдЬрд░реВрд░рдд рд╣реИред
рдмрдирд╛рдП рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рдХреЛрдб рдХреЗ рд▓рд┐рдП, рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ C # рдЬреИрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдЕрд╢рдХреНрдд-рд╕рдВрдЪрд╛рд▓рдХ рдСрдкрд░реЗрдЯрд░ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдореЗрд░реЗ рд▓рд┐рдП рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ - рд╣рдо рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ? ?
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Where-Object
(рдЬрд┐рддрдирд╛ рдореИрдВ рдорд┐рдЯрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдпрд╣ рдмрд╣реБрдд рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╣реИ)ред рдзреНрдпрд╛рди рд░рд╣реЗ, %
рдХреЛ ForEach-Object
рдмрджрд▓реЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдорд╛рдкрд╛рдВрдХ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдмрд╛рдзрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдХрдо рд╕реЗ рдХрдо ?
рдПрдХ рд╢реВрдиреНрдп-рд╕рдВрдЪрд╛рд▓рдХ рдСрдкрд░реЗрдЯрд░ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рднреА рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рдареАрдХ; рдЗрд╕реЗ рдХреЗрд╡рд▓ рдРрд╕реЗ рднрд╛рд╡реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛рдпрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд╣рд╛рдБ Where-Object
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реИрд╕реЗ рднреА рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИред
@ vexx32 :
рдХрдо рд╕реЗ рдХрдо _syntactically_ ??
рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо _expression_ рдореЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрдмрдХрд┐ ?
, рдПрдХ рдХрдорд╛рдВрдб [рдЙрдкрдирд╛рдо] рдХреЗ рд░реВрдк рдореЗрдВ, рдХреЗрд╡рд▓ _argument_ рдореЛрдб рдореЗрдВ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реИред
рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкреНрд░рддреАрдХ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рднреНрд░рдо рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рдХреЛрдИ рдкреНрд░рддреАрдХ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рджреЛрд╣рд░рд╛ рдХрд░реНрддрд╡реНрдп рдХрд░рддрд╛ рд╣реИред
рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ, рдирд▓-рднрд┐рдЧреЛрдиреЗ рдХреЗ рд▓рд┐рдП ?.
рдФрд░ ?[]
рдХрд░рдирд╛ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ PowerShell рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдЪрд░ рдирд╛рдо рдореЗрдВ рдЧреИрд░-рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд░реНрдг рдХреЗ рд░реВрдк рдореЗрдВ ?
рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
PS> $foo? = @{ bar = 1 }; $foo?.bar # !! $foo? is a legal variable name
1
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕реЗ рдПрдХ рдмрдХреЗрдЯ 3: рдЕрдирд▓рдХреА рдЧреНрд░реЗ рдПрд░рд┐рдпрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред
рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрднреА рдХрд┐рд╕реА рдХреЛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рджреЗрдЦрд╛ рд╣реИ? рдПрдХ рдЪрд░ рдирд╛рдо рдореЗрдВ ... рди рд╣реА рдореИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЧрд▓рдд рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рд╣рд╛рдБ, рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рдпреЛрдЬреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд▓рд╛рдиреЗ рдореЗрдВ рдереЛрдбрд╝реА рджреЗрд░ рд╣реЛ рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдмреИрд╢ рдиреЗ рдЕрдкрдиреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ (рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ) рдХреЛ рд╕рдВрднрд╛рд▓рд╛ рд╣реИ: https://www.tldp.org/LDP/abs/html/parameter-substitution.htmlред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рдХрд╛рд░рдг рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рднрд╛рд▓реВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИред рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ PowerShell рдЪрд░ рдХреЗ рд╕рд╛рде рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рди рд╣реА рдЗрд╕ рд╕рдЯреАрдХ рдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рди рд╣реА рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдЕрдиреБрднрд╡ рдХреЗ рд╕рд╛рде рдлрд┐рдЯ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЙрдкрдпреЛрдЧреА рдбреЗрдЯрд╛ рдмрд┐рдВрджреБ рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред
@bgshacklett :
рд╣рд╛рдВ, рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИ, рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рди рдХреЗрд╡рд▓ _learn_ рдХреЗ рд▓рд┐рдП рдПрдХ рднрд╛рд▓реВ рд╣реИ, рдмрд▓реНрдХрд┐ _remember_ рдХреЗ рд▓рд┐рдП рднреА рд╣реИред
рддреЛ рдЬрдмрдХрд┐ рдмрд╛рд╢ рдХреЗ _features_ рдЕрдХреНрд╕рд░ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрддреЗ рд╣реИрдВ, рдЙрдирдХрд╛ _syntactic form_ рдЕрдХреНрд╕рд░ рдЖрд░реНрдХрди рд╣реЛрддрд╛ рд╣реИ, рдпрд╛рдж рд░рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ PowerShell рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реИред
_Brace expansion_ (рдЬреИрд╕реЗ, a{1,2,3}
рдореЗрдВ bash
рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ a1 a2 a3
) рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╕реБрд╡рд┐рдзрд╛ рдЬрд┐рд╕рдХрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореИрдВ PowerShell рдореЗрдВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рд▓реЗрдХрд┐рди PowerShell рдЙрдкрдпреБрдХреНрдд рд╕рд╛рде рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ - # 4286 рджреЗрдЦреЗрдВ
рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣рдорддред рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдзрд┐рдХ рд╕рд╛рдордиреЗ рд▓рд╛рдпрд╛ рдХрд┐ рдХреИрд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдПрдХ рд╕рдЯреАрдХ рд╕рдорд╛рдзрд╛рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╣реАрдВ рдФрд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕рдВрднрд╡рддрдГ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреНрдп рдСрдкрд░реЗрдЯрд░ рд╣реИ:
$x ?= 12
рдЕрдЧрд░ рдпрд╣ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ (рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ) рддреЛ $x
рд╕реЗрдЯ рд╣реЛрдЧрд╛ред рдпрд╣ "рдЗрдирд┐рд╢рд▓рд╛рдЗрдЬрд╝рд░ рдкреИрдЯрд░реНрди" рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЬреЛ рдкрд╛рд░рдВрдкрд░рд┐рдХ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЖрдо рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди (рдбрд╛рдпрдирд╛рдорд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдХреЛрдкреНрдб) рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЧреЛрд▓реЗ, рдЙрдкрдХрд░рдг рдмрдирд╛рдирд╛, рдЖрджрд┐ред рдпрд╣ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрдо рд╣реИ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рд╣реЛрддреА рд╣реИ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред ред (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рд╣реИрдВред)
рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░:
$obj.SomeProperty ?= 13
рдпрджрд┐ рдпрд╣ рдореМрдЬреВрдж рдирд╣реАрдВ рдерд╛, рддреЛ рдПрдХ рдиреЛрдЯ рд╕рдВрдкрддреНрддрд┐ SomeProperty
рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдЧрд╛ рдФрд░ рдЬреЛрдбрд╝реЗрдЧрд╛ред
рдФрд░ - рдордиреЛрд░рдВрдЬрди рдХреЗ рд▓рд┐рдП - -or
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЪрд░ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдкрд░ рдПрдХ рдФрд░ рднрд┐рдиреНрдирддрд╛:
$x -or ($x = 3.14) > $null
$x ?= 12
рдПрдХ рдорд╣рд╛рди рд╡рд┐рдЪрд╛рд░ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред
рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╣реБрдЖ рд╣реИ рдХрд┐ рд╣рдо рд╢рд╛рдпрдж рди рдХреЗрд╡рд▓ contain_ рдХреЗ рд▓рд┐рдП рдЕрдЧрд░ рдПрд▓рдПрдЪрдПрд╕ рдирд╣реАрдВ _exist_ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдЕрдЧрд░ рдпрд╣ _does рдореМрдЬреВрдж рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣реЛрддрд╛ рд╣реИ рдЗрди рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд╕рднреА рдЖрд╡реЗрджрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП $null
(рд╕рд╛рде [System.Management.Automation.Internal.AutomationNull]::Value
рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ $null
рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ
рдиреЛрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА SomeProperty рдХреЛ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЖрд░рдВрдн рдХрд░реЗрдВ
рдЙрд╕ рдирд╕ рдореЗрдВ, $obj.SomeProperty ?= 13
рдореЗрд░реЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ _only_ рдЕрдЧрд░ .SomeProperty
рдореМрдЬреВрдж рд╣реИ рдФрд░ $null
, рддреЛ рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЖрдк рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рд╕рд╛рде рднреА рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, _hasthables_ рдХреЗ рд▓рд┐рдП) рдирд┐рд╣рд┐рдд рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдирд┐рд░реНрдорд╛рдг рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ)ред
рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рд╕рднреА рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдПрд▓рдПрдЪрдПрд╕ рдХреЛ рд╕рдЦреНрдд-рдореЛрдб рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдЬрд╛рдБрдЪ рд╕реЗ рдЫреВрдЯ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдореИрдВ рдкреАрдЫреЗ рдХреНрдпреЛрдВ StrictMode рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдЬреЛ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рд╕реЗ рдЖрдк рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХреЗ рдЗрд░рд╛рджреЗ / рддрд░реНрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдБред рдХреНрдпрд╛ $x.pretnd
рдЬреИрд╕реЗ рдЯрд╛рдЗрдкреЛ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ? рдХреНрдпрд╛ assert(x != null)
рдЬреИрд╕реА рдзрд╛рд░рдгрд╛рдУрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рдЧрд▓рддреА рд╕реЗ $null
рдкреНрд░рдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ?
null-soaking (ред) рдорджрджрдЧрд╛рд░ рд╣реИ, рд╕реНрдкрд╖реНрдЯ рдЗрд░рд╛рджреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рдореЗрдВ $ null рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВред
рдХреНрдпрд╛ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ .
рд╕рд┐рдЧреНрдирд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдиреЙрдирд╕реНрдЯреНрд░рд┐рдХреНрдЯ рдореЛрдб рдореЗрдВ рд╣реИ? рдпрджрд┐ рдЖрдк рд╕рдЦреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рддреЛ рдЖрдк .Name
рдореМрдЬреВрджрд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░ рд╕рдХрддреЗ рдереЗ, рдкрд╣рд▓реЗ рдЬрд╛рдБрдЪ рдирд╣реАрдВ рдХрд░рдХреЗ, рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рдЗрд░рд╛рджреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдерд╛ рдХрд┐ рдЬрд╛рдБрдЪ рдЖрдкрдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рдереАред
рдпрджрд┐ рд╕реНрдЯреНрд░рд┐рдХреНрдЯрдореЛрдб рдХрд╛ рдПрдХ рдЙрджреНрджреЗрд╢реНрдп рд╣реИ, рдЬрд╣рд╛рдВ рдПрдХ рдЧреИрд░-рдореМрдЬреВрдж рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рдФрд░ $null
рдХрд░рдирд╛ рдордирд╛ рд╣реИ, рддреЛ рд╡рд╣реА рддрд░реНрдХ ?.
рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдФрд░ рдЙрд╕реА рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП ред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдХреНрдпреЛрдВ рдирд╣реАрдВ?
рдЕрд╢рдХреНрдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде, рдЖрдк рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
$result = Invoke-RestMethod -Uri 'https://example.org/api/test'
$test = $result?.Name
рдХреНрдпрд╛ рдпрд╣ рдЬрд▓реНрджреА рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдпрд╛ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рд╣рдореЗрд╢рд╛ рд╣рд░ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП ?.
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ " .
рдЬреИрд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рдЦреНрддреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдлреЗрдВрдХреЗрдВрдЧреЗ"?
рдХреНрдпрд╛ рдЪрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рдХрдбрд╝реЗрдкрди рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдЪреНрдЫрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдк рдЕрдкрдиреА рд▓рд┐рдкрд┐ # StrictMode SkipMemberExistenceCheck
рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХреЗрдВ, рдпрд╛ unstrict code
рдмреНрд▓реЙрдХ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд╕реНрдХреЗрдк рд╣реИрдЪ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЖрдо рддреМрд░ рдкрд░? [рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрдЪреНрдЫрд╛ рд╕реА # рд╢реИрд▓реА рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдореЗрд░рд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ]
рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, @HumanEquivalentUnit
рдХреНрдпрд╛
$x.pretnd
рдЬреИрд╕реЗ рдЯрд╛рдЗрдкреЛ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ?
рдореИрдВ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рдЗрд░рд╛рджреЗ рд╕реЗ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдпрд╣реА рдореЗрд░реЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ - Set-StrictMode -Version 1
_variables_ (рдХреЗрд╡рд▓) рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЕрдиреБрд░реВрдк рд╣реИред
рдЪрд░ рдХреЗ рд╕рд╛рде рдпрд╣ рдЙрдирдХреЗ _existence_ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рди рдХрд┐ рдпрд╣ рдХрд┐ рдХреНрдпрд╛ рдореВрд▓реНрдп $null
, рдФрд░ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдЬрд╛рдБрдЪ рдЙрд╕реА рдкреИрдЯрд░реНрди рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреА рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рдХрдЯрддрдо рдбрд╛рдпрдиреЗрдорд┐рдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓ рд╕рдХрддреА рд╣реИ рдЬреЛ рдПрдХ рд╕рдВрдХрд▓рд┐рдд рд╕рдВрдХрд▓рд┐рдд рднрд╛рд╖рд╛ _compile time_ рдкрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдЧреАред
рдХреНрдпрд╛ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЧреИрд░-рд╕рдВрдХреЗрдд рдореЛрдб рдореЗрдВ рд╕рдВрдХреЗрдд? рдпрджрд┐ рдЖрдк рд╕рдЦреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рддреЛ рдЖрдк рдЬрд╛рдБрдЪ рдХрд░ рд╕рдХрддреЗ рдереЗред рдкрд╣рд▓реЗ рдирд╛рдо рдореМрдЬреВрдж рдерд╛
рд╣рд╛рдВ, рд▓реЗрдХрд┐рди рдЧреИрд░-рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ рдЖрдк рдЙрдкрд░реНрдпреБрдХреНрдд рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдЬрд╛рдВрдЪ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ, рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╛рдлреА рдмреЛрдЭрд┐рд▓ рд╣реИ - рдФрд░ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реБрд╡рд┐рдзрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдореА рдЧрддрд┐ рд╕реЗред
рдкрд╣рд▓реЗ рдЬрд╛рдБрдЪ рди рдХрд░рдХреЗ, рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рдЗрд░рд╛рджреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗ рджрд┐рдпрд╛ рдерд╛ рдХрд┐ рдЬрд╛рдБрдЪ рдЖрдкрдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рдереАред
рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐, Set-StrictMode -Version 2
рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рдорд┐рд▓рддрд╛ рд╣реИ:
.?
рд╕рд╛рде, рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рд╕реЗ рдорд╛рдВрдЧрдЖрдк рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ
# StrictMode SkipMemberExistenceCheck
рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛unstrict code
рдПрдХ рдмреНрд▓реЙрдХ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд╕реНрдХреЗрдк рд╣реИрдЪ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ
рд╕рдВрдмрдВрдзрд┐рдд: Set-StrictMode
рдХреА рд╡рд░реНрддрдорд╛рди рдЧрддрд┐рд╢реАрд▓ рд╕реНрдХреЛрдкрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИ; рдПрдХ _lexical_ рд╕рдЦреНрдд рдореЛрдб рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреА рдЖрд░рдПрдлрд╕реА рдорд╕реМрджрд╛ @lzybkr рджреЗрдЦреЗрдВ: https://github.com/PowerShell/PowerShell-RFC/blob/master/1-Draft/RFC0003-Lexical-Strict-Mode.md
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рджрд╕реНрдп рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдЬрд╛рдБрдЪ рдХрд╛ рд▓рд╛рдн
PS рдореЗрдВ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╕рджрд╕реНрдп рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЬрдм рд╡реЗ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ $ null рд░рд┐рдЯрд░реНрди рджреЗрддреЗ рд╣реИрдВред рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рд▓рд╛рдн рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рджрд╕реНрдп рдЕрд╕реНрддрд┐рддреНрд╡ рдкрд░реАрдХреНрд╖рдг рдХреЛ $x.psobject.properties...
рд╕рд╛рде рд▓рд┐рдЦрдиреЗ рд╕реЗ рднреА рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрдк рдЪреБрдирддреЗ рд╣реИрдВред рд╕реНрдЯреНрд░рд┐рдХреНрдЯрдореЛрдб рдЙрд╕ рд▓рд╛рдн рдХреЛ рджреВрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрд╕реНрддрд┐рддреНрд╡ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдмрд╛рдзрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рддрдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рджрд╕реНрдп рдЕрд╕реНрддрд┐рддреНрд╡ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рджреЗрдиреЗ рдХреЗ рдмрдЬрд╛рдп, ?.
рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ .
рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред рдФрд░ рдЕрдЧрд░ рдпрд╣ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ рдХрд┐ рд╕рджрд╕реНрдп рдореМрдЬреВрдж рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЕрднреА рднреА рдЕрд▓рдЧ рд╕реЗ рдХреЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдкреВрдЫрддрд╛ рд╣реИ:
$x.pretend -> $null
$x.pretend() -> Exception MethodNotFound
$x?.pretend -> $null
$x?.pretend() -> ____ what goes here? $null?
set-strictmode -version 2
$x.pretend -> Exception PropertyNotFoundStrict
$x.pretend() -> Exception MethodNotFound
$x?.pretend -> $null
$x?.pretend() -> ____ ?
рдЕрд░реНрдерд╛рдд ?.
рдиреЙрди-рдХрдбрд╝рд╛рдИ рдореЗрдВ рдкреНрд░реЙрдкрд░реНрдЯреА рд▓реБрдХрдЕрдк рдХреЗ рд▓рд┐рдП .
рдХреЗ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЧреИрд░-рд╕рд╕реНрдкреЗрдВрд╕реЛрдб рдореЗрдВ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП .
рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдЕрддрд┐ рд╕реВрдХреНрд╖реНрдо рд╣реЛ рдФрд░ рди рд╣реЛ рдПрдХ рдбреНрд░реЙрдк-рдЗрди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдиред рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ ?.
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рдмрддрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рд╡рд┐рдзрд┐ рд▓рд╛рдЧреВ рдХреА рдЧрдИ рдереА, рдпрд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реБрдЖ рдерд╛? рдЧреБрдгреЛрдВ рдХреЛ рдЧреЗрдЯреНрдЯрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЧреЗрдЯрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рд░рд╛рдЬреНрдп рдХреЛ рдореНрдпреВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЙрдЯрдиреЗрдЯ рдореЗрдВ рдпрд╣ рд╕рдореНрдореЗрд▓рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЛ рдореНрдпреВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╣реИред ?.
рдЖрдкрдХреЛ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдкрдиреЗ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рд╣реЛ?
рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рд╡рд╛рдВрдЫрд┐рдд рд▓рд╛рдн рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдмреЗрд╣рддрд░, ??
рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╕рдВрднрд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PropertyNotFoundException рдФрд░ MethodNotFound рдЕрдкрд╡рд╛рдж рд╕реАрдзреЗ рдмрд╛рдИрдВ рдУрд░ рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реЗ (рд▓реЗрдХрд┐рди рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХреЗ рдЕрдВрджрд░ рдЙрдард╛рдП рдЧрдП рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ), рд╕рд╛рде рд╣реА $ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ред nulls, рдФрд░ ?.
рдмрд┐рд▓рдХреБрд▓ рдирд╣реАрдВ рд╣реИред рдЬреИрд╕реЗ
$varThatMayBeNull ?? $fallbackValue # null-coalescing
#
$varThatMayBeNull.Name ?? $fallbackvalue # catching PropertyNotFoundStrict exception
$varThatMayBeNull.Name ?? # default fallback is $null
$varThatMayBeNull.Method() ?? # catching MethodNotFound Exception
# and potentially addressing the index case too
$varThatMayBeNull.first.second[3].Method() ?? # catching MethodNotFound Exception, or index not found Exception
рдФрд░ рдлрд┐рд░, ?.
рдмрдЬрд╛рдп рдПрдХ рд╕рджрд╕реНрдп рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдпрд╛ рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдВрдЪрдирд╛, рдпрд╣ рдкреВрдЫрдиреЗ рдХрд╛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рддрд░реАрдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рд╕рджрд╕реНрдп рдореМрдЬреВрдж рд╣реИ, рдПрдХ [рдмреВрд▓] рд▓реМрдЯрд╛ рд░рд╣рд╛ рд╣реИред
??
рдФрд░ ?.
рд╕рдорд╛рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЬреЛрдбрд╝ рдХреЗ рд╕рд╛рде рдЖрдк рдХрдо рднреНрд░рдорд┐рдд рдУрд╡рд░рд▓реИрдк рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реНрдЯреНрд░рд┐рдХреНрдЯрдореЛрдб рдЙрд╕ рд▓рд╛рдн рдХреЛ рдЫреАрди рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЕрд╕реНрддрд┐рддреНрд╡ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреА рдмрд╛рдзрд╛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ
рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреА рдмрд╛рдзрд╛ рджреВрд╕рд░реЗ рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рд▓рд╛рдн рд╣реИ:
рдпрд╣ рд╕рдм рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ _by default_:
рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рдХреЛрдИ _typos_ рдирд╣реАрдВ рд╣реИрдВ - рд╣рд░ рддрд░рд╣ рд╕реЗ, _default_ рд╡реНрдпрд╡рд╣рд╛рд░ (рд╕рдЦреНрдд рдореЛрдб рдмрдВрдж) рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдПрдВ - рдФрд░ рдЖрдкрдХреЛ .?
(_property рдФрд░ рдПрдХреНрд╕реЗрд╕ рдХреЗ рд▓рд┐рдП) рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА - рджреЗрдЦреЗрдВ рдЕрдЧрд▓реА рдЯрд┐рдкреНрдкрдгреА рдлрд┐рд░ рд╕реЗ _method рдХреЙрд▓_ рдФрд░ _indexing_)ред
Set-StrictMode -Version 1
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ -Version 2
рдпрд╛ рдЕрдзрд┐рдХ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИ, рдореБрдЦреНрдпрддрдГ # 2798 (рдЬреЛ рдПрдХ рдмрдЧ рдЬреЛ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ) рдХреЗ рдХрд╛рд░рдг рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡)редрдпрджрд┐ рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдиреЗ (a) рдЖрдкрдиреЗ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рдирд╛рдо рдФрд░ / рдпрд╛ (b) рдХреЛ рдЧрд▓рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХрд╛ рдХреЛрдб рдЧрд▓рддреА рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рд╕рдВрд╕реНрдХрд░рдг 2 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдХреЗ рд▓рд┐рдП рд╕рдЦреНрдд рдореЛрдб рд╕реЗрдЯ рдХрд░реЗрдВред ред
рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рд╕рджрд╕реНрдп рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ рдЬреЛ рдкреНрд░рднрд╛рд╡ рдореЗрдВ рд╕рдЦреНрдд рдореЛрдб рдХреЗ рдмрд╛рд╡рдЬреВрдж рдПрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
_Method call_ рдХреЗ рд▓рд┐рдП, рдЬреЛ рдУрдкреА рдХрд╡рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:
_Method рдХреЙрд▓_ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, $varThatMayBeNull.Method()
) рдФрд░ _indexing_ (рдЬреИрд╕реЗ, $varThatMayBeNull[$index]
) рджреЛ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╕рдЦреНрдд рдореЛрдб рдмрдВрдж рдпрд╛ рд╕рдВрд╕реНрдХрд░рдг 1 рдкрд░ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рджреЛрдиреЛрдВ рдорд╛рдорд▓реЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ _vvariably_ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреЗ рд╣реИрдВ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рдореВрд▓реНрдп $null
ред
рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реЛрдЧрд╛ - $varThatMayBeNull?.Method()
- рдФрд░ рдЕрдиреБрдХреНрд░рдордг рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реВрдк - $varThatMayBeNull?[$index]
- рдЬреИрд╕рд╛ рдХрд┐ C # рдореЗрдВред
_Uddate_: рдпрджрд┐ рдЕрдиреБрдЧрд╛рдореА рдЕрд╢рдХреНрдд рд╣реИ, рддреЛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХрд╛ рджреВрд╕рд░рд╛ рдкрд╣рд▓реВ рд╣реИ, рд▓реЗрдХрд┐рди рджрд┐рдП рдЧрдП рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдореЗрдВ рддрддреНрд╡ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, $arr = 0,1; $arr[2]
)ред рд╕рдЦреНрдд рдореЛрдб рд╕рдВрд╕реНрдХрд░рдг 2 рдпрд╛ рдиреАрдЪреЗ рдХреЗ рд╕рд╛рде, рдпрд╣ $null
рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрд╕реНрдХрд░рдг 3 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдореЗрдВ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рддреНрд░реБрдЯрд┐ рд╕реЗ рднреА рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдПрдХ рдЪреБрдиреМрддреА рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ - рдЕрджреНрдпрддрди рдУрдкреА рджреЗрдЦреЗрдВ, рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╢рд╛рдпрдж [...?]
рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реИред
рдФрд░, рд╣рд╛рдБ, рдореИрдВ $null
рд▓рд┐рдП рднреА рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХреНрд╕реЗрд╕ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмрдирд╛рдКрдВрдЧрд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рднреА - рдлрд┐рд░, рдЖрдк _explicitly_ рд╕рд┐рдЧреНрдирд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рддреЛ рдпрд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдареАрдХ рд╣реИ $null
рдпрд╛ рдпрджрд┐ рдРрд╕рд╛ рдХреЛрдИ рдРрд░реЗ рддрддреНрд╡ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ C # рдХреЗ рджреВрд╕рд░реЗ рдЕрд░реНрде рдореЗрдВ рдХреЛрдИ рдЕрд╢рдХреНрдд-рдЕрдиреБрдХреНрд░рдордг рдирд╣реАрдВ рд╣реИред
рдпрд╣ рдЕрд╢рдХреНрдд-рд╕рд╢рд░реНрдд рдЕрдиреБрдХреНрд░рдордг рд╣реИ, рдмрд╕ рдпрд╣ рдмрд┐рд▓рдХреБрд▓ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдХреИрд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕реА # рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ, рдХрдо рд╕реЗ рдХрдо ...) array?[0]
рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ "рдЕрд╢рдХреНрдд рд╕рд░рдгреА / рд╕рдВрдЧреНрд░рд╣" рдореБрджреНрджреЗ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрд╕ рд╢реВрдиреНрдп рджреЗрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рд╣рд╛рдБ, рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдБ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдпрд╣ рд╣рдореЗрдВ рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд┐рдВрдЧ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХреЛрдб рдХреЛ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░рдЦрддрд╛ рд╣реИред
@ vexx32 , рдЬреЛ рдХрд┐ null-conditional indexing рдХрд╛ _one_ рдкрд╣рд▓реВ рд╣реИ: рдпрджрд┐ array
array?[0]
null
, рддреЛ рдЕрдиреБрдХреНрд░рдордг рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - C # рдореЗрдВ рднреА, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд░рд╛рдЬреНрдп рдХрд░рддреЗ рд╣реИрдВред
рдореИрдВ (рдЕрджреНрдпрддрди: _also_) рд╢реВрдиреНрдп-рд╕рд╢рд░реНрдд рдЕрдиреБрдХреНрд░рдордг рдХреЗ _other_ рдкрд╣рд▓реВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рдерд╛: рд╡рд╣ рдорд╛рдорд▓рд╛ рдЬрд╣рд╛рдВ array
array?[0]
_not_ null
рд▓реЗрдХрд┐рди рдпрд╣ рд╕реВрдЪрдХрд╛рдВрдХ 0
рдкрд░ рддрддреНрд╡ рд╣реИ
рдпрд╣ рдмрд╛рдж рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ C # рдХреЛ рдореЗрд░реА рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдлрд┐рд░ рднреА рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред
рдХреНрдпрд╛ рдЖрдк рдЗрди рджреЛ рдкрд╣рд▓реБрдУрдВ рдХреЛ рдЕрд▓рдЧ рдирд╛рдо рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╢рдмреНрджрд╛рд╡рд▓реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ?
рдПрдХ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╢реНрдпреВ рдХрд╛ рдХреЛрдб $_.Description[0].Text
рд╕реЗ $_?.Description[0?]?.Text
рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реИ; рдФрд░ рдореЗрд░реЗ рдЕрдиреНрдп рд╕реБрдЭрд╛рд╡ рдХрд┐ рдХреИрд╕реЗ ??
рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕реЗ $_.Description[0].Text ??
рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдХрд┐ рд╡рд┐рд╖рдп рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдФрд░ - рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ - рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдХрд┐рд╕реА рднреА рд▓реБрдХрдЕрдк рдмрд┐рдВрджреБ рдкрд░ рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рд╕рднреА рдПрдХ рдмрд╛рд░ рдореЗрдВ , рдФрд░ рдлрд┐рд░ рднреА рдЖрдкрдХреЛ рдпрд╣ рдЪреБрдирдиреЗ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ $null
рддрдХ рд╕реАрдорд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЕрд▓рдЧ рдХрдордмреИрдХ рд╣реЛрдЧрд╛ред
рдПрдХ рддрд░рдл рдХреЗ рд░реВрдк рдореЗрдВ, рдХреНрдпрд╛ рдпрд╣ ?.
рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рд╕реНрдерд┐рд░ рдЧреБрдгреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИ, рдЕрд░реНрдерд╛рдд $t = [int]; $t::MaxValu; $t::Pars("1")
, рдХреНрдпрд╛ рдпрд╣ ?:
рдпрд╛ ?::
?
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд╕рд╛рде рд╕рд░рдгреА рдЕрдиреБрдХреНрд░рдордг рдХреЗ рд▓рд┐рдП рд╡рд╛рдВрдЫрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? $array[0,4?,1,2]
рдЬрд╣рд╛рдВ рд╣рд░ рдПрдХ рдХреЛ рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдпрд╛ $array[0,4,1,2?]
рдХреЗрд╡рд▓ рдкреВрд░реЗ рдмрд╣реБрдд рд╕реЗ рд╕рдлрд▓ рдпрд╛ рдЕрд╕рдлрд▓ рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ?
рдореБрдЭреЗ рдкрд╣рд▓реЗ рдПрдХ рдХрджрдо рд╡рд╛рдкрд╕ рд▓реЗрдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЙрди рдкрд╣рд▓реБрдУрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдЬреЛ рдЕрд▓рдЧ рд╣реЛрдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИрдВ, рдХрдо рд╕реЗ рдХрдо рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ:
_Null-value_-рд╕рд╢рд░реНрдд рд╕рджрд╕реНрдп рдпрд╛ рдЗрдВрдбреЗрдХреНрд╕ рдПрдХреНрд╕реЗрд╕, рдЬреИрд╕рд╛ рдХрд┐ C #:
$null
, рдЗрд╕рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдпрд╛ рдЗрдВрдбреЗрдХреНрд╕ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ рдФрд░ $null
рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВред_Member-рдЕрд╕реНрддрд┐рддреНрд╡_ рд╕рд╢рд░реНрдд рд╕рджрд╕реНрдп рдпрд╛ PowerShell рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдЕрднрд┐рдЧрдо:
$null
_ рд╣реИ, рдЧреИрд░-рдореМрдЬреВрджрд╛ _members_ (рдЧреБрдг, рд╡рд┐рдзрд┐ рдХреЙрд▓, рдЕрдиреБрдХреНрд░рдордг) рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ рдЬреЛ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВредрдиреЛрдЯ: рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ _member_ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ, рдХреБрдЫ рд╣рдж рддрдХ рдпрд╣рд╛рдБ рднреА рд╕рдВрдЧреНрд░рд╣ рдХреА рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ _elements_ рдХреЛ рд╕рдорд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдбреЙрдЯ рдиреЛрдЯреЗрд╢рди рдХреЗ рдмрдЬрд╛рдп _indexing_ рдХреЗ рд╕рд╛рде рдПрдХреНрд╕реЗрд╕ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдк рдЖрд╢реНрд╡рд╕реНрдд рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рдХреЛрдИ рдЯрд╛рдЗрдкреЛрд╕ рдирд╣реАрдВ рд╣реИрдВ - рд╣рд░ рддрд░рд╣ рд╕реЗ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдПрдВ (рд╕рдЦреНрдд рдореЛрдб рдмрдВрдж) - рдФрд░ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА? (рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП
@ mklement0 рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк " рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдЦреНрдд рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рд╡реНрдпрдХреНрддрд┐ " рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдореИрдВ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ " рдХреЛрдИ рдФрд░ рдореЗрд░реЗ рдХреЛрдб рдХреЛ рдХрдбрд╝реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпрд╛ рдмрджрд▓рд╛рд╡ рдореЗрд░реЗ рдХреЛрдб рдХреЛ рдЙрдирдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ?" "рдФрд░ рдпрд╣ рдореБрдЭреЗ рдЕрд▓рдЧ рддрд░реНрдХ рдХреЗ рдиреАрдЪреЗ рд▓реЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд╕рд╛рде ?.
рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рддреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ .
рдФрд░ рдореЗрдХрдЕрдк рдХреЛрдб рднреА StrictMode рдХрд┐ рдореИрдВ рднреА рдЗрд╕реЗ рд╣рд░ рдЬрдЧрд╣ рдЖрджрддрди рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдореЗрдВ рдХрд╛рдо; рдореИрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЦреЛрддрд╛ рдФрд░ рд╕рдВрдЧрддрддрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рд╕рднреА PowerShell рдХреЛрдб рдЙрд╕ рддрд░рд╣ рд╕реЗ рдмрджрд╕реВрд░рдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рдорд╛рдорд▓реЛрдВ рдореЗрдВ "рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ"ред
рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдбреНрд░реЙрдк-рдЗрди рд░рд┐рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд╛рдЗрд▓реЗрдВрд╕ рдиреЙрди-рдХрдбрд╝рд╛рдИ рдореЗрдВ рд╡рд┐рдзрд┐ рдХреЙрд▓ рд▓реБрдХрдЕрдк рдХреЛ рд╡рд┐рдлрд▓ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдФрд░ рд╕рд╛рдЗрд▓реЗрдВрд╕ рдореЗрдВ рдкреНрд░реЙрдкрд░реНрдЯреА рд▓реБрдХрдЕрдк рдХреЛ рд╡рд┐рдлрд▓ рдХрд░ рджреЗрддрд╛ рд╣реИ - рдпрд╣ рд╕рджрд╕реНрдп рд▓реБрдХрдЕрдк рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╕рд╛рдзрд╛рд░рдг рдмрд╛рд░реАрдХрд┐рдпреЛрдВ, рдПрдХ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдСрдкрд░реЗрд╢рди рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпрд╣ рдХрд┐рд╕реА рдХреЛ рднреА рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрд╕ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдХрд░ рд╕рдЦреНрдд рдЬрд╛рдВрдЪ рд╕реЗ рд▓рд╛рдн рдЙрдард╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдФрд░ рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рд╕рдВрдЧрдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ "рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ" рддреЛ рдЗрд╕реЗ рдЦрд╛рдбрд╝реА рдореЗрдВ рдкрдХрдбрд╝рдирд╛ рдХрд╛рдлреА рдордЬрдмреВрдд рд╣реИред
PowerShell рдРрд╕реА рдЪреАрдЬрд╝реЛрдВ рдХреЛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ C # рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЪрд░ рд╕реЗрдЯ рдХрд░рдирд╛, рдпрд╛ рдЕрдкрд╡рд╛рдж рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд┐рд╕рд╛рд▓ рд░рдЦрдирд╛ рдФрд░ рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдЪреБрдк рд╣реЛ рдЬрд╛рдирд╛ред рдПрдХ рдмреЗрд╣рддрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рд╕рджрд╕реНрдп рд▓реБрдХрдЕрдк рдХреЛ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдЦреНрдд рд╕реБрд░рдХреНрд╖рд╛ рдЬрд╛рдВрдЪ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЬреЛ рд▓реЛрдЧ рдЪреЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрдирдХреЗ рдкрд╛рд╕ рдЖрд╕рд╛рди рдЬреАрд╡рди рд╣реЛ рдФрд░ рдЬреЛ рд▓реЛрдЧ рдЪреЗрдХ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдереЗ рдЙрдирдХреЗ рдкрд╛рд╕ рдЖрд╕рд╛рди рдЬреАрд╡рди рднреА рд╣реЛред
@HumanEquivalentUnit рдЗрди рдЪреАрдЬреЛрдВ рдХреЛ рдХреИрд╕реЗ рдЪреБрдк
$prop = $item?.Method().PropIwant ?? 'PropActionFailed'
рд╡реА
$prop = if ($null -ne $item) {
$propIwant= $item.Method().PropIwant
if ($null -eq $propIwant) {
'PropActionFailed'
}
else {
$propIwant
}
}
рдФрд░ рдпрд╣ рдорд╛рдорд▓рд╛ рдЕрд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИред рдпрд╛ рдЖрдк рд╕рд┐рд░реНрдл $ErrorActionPreference = 'Stop'
рдлреЗрдВрдХ рджреЗрдВ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ try/catch
рдореЗрдВ рдкреВрд░реА рдЪреАрдЬрд╝ рдХреЛ рд▓рдкреЗрдЯреЗрдВ рддрд╛рдХрд┐ рдирд▓ рдХреА рдЬрд╛рдБрдЪ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдП рдЬреЛ рдПрдХ рдЦрд░рд╛рдм рдкреИрдЯрд░реНрди (рдЕрдкрд╡рд╛рдж-рдЪрд╛рд▓рд┐рдд рддрд░реНрдХ) рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рднрд╛рд╖рд╛ рдХрд╛ рднрд╡рд┐рд╖реНрдп рд╣реИ, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо 5.1 рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЪреАрдЬреЛрдВ рдХреЛ рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рдЧреЛрдж рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХреЛрдб рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред
@ mklement0 рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк "рдЕрдкрдиреЗ рдХреЛрдб_ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдЦреНрдд рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡реНрдпрдХреНрддрд┐" рд╕реЗ рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдореИрдВ рдЗрд╕ рджреГрд╢реНрдп рд╕реЗ "_someone рдореЗрд░реЗ рдХреЛрдб рдХреЛ рдХрдбрд╝реЗрдкрди рдореЗрдВ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдХреНрдпрд╛ рдмрджрд▓рд╛рд╡ рдореЗрд░реЗ рдХреЛрдб рдХреЛ рдЙрдирдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ?" _ "
рдХреНрдпрд╛ рд╣рдо "рд╕реЗрдЯ-рдУрдпреВрдУ рдкрд╛рдЗрдкрдлреЗрд▓" (рдмреИрд╢ рд╕рдЦреНрдд рдореЛрдб) рд╕рдордХрдХреНрд╖ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
a- рдЪрд░ рд▓реБрдХ-рдЕрдк рдХреА рд╕реАрдорд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдЖрдкрдХреЛ рдХреНрдпреЛрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рджрд╕реНрдп рд▓реБрдХрдЕрдк рдкрд░ рдПрдХ рд╕рд░рд▓ рдЕрд╢рдХреНрддрддрд╛ рдПрдХ рдмреБрд░реА рдмрд╛рдд рд╣реЛрдЧреА, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рджрд╕реНрдп рд▓реБрдХрдЕрдк if (result is null)
рд╕реЗ рдЕрдзрд┐рдХ рдорд╣рдВрдЧрд╛ рд╣реИ)
b- рдкрд╛рд░реНрд╕рд░ рдХреЛ рдХреЛрдбрд░ / рдХреЛрдбрдмреНрд▓реЙрдХ рдкрд░ [Strict]
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд░реНрд╕рд░ рдХреЛ рдмрддрд╛рдПрдВ,
c- рд╕реНрдЯреНрд░рд┐рдХреНрдЯрдиреЗрд╕ рд╕реНрдХреЛрдк рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ: рдЬреЛ рдХреЛрдб рд╕рдЦреНрдд рдирд╣реАрдВ рд╣реИ, рд╡рд╣ рд╕рдЦреНрдд рдирд╣реАрдВ рд╣реИред
рдпрджрд┐ рдореИрдВрдиреЗ рд╕рдЦреНрдд рдХреЛрдб рд▓рд┐рдЦрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдореЗрдВ рд╕реЗ рдПрдХ рдиреЗ рдЧрд▓рддреА рдХреАред рдпрд╛ рддреЛ рдореИрдВрдиреЗ рдХреЛрдб рдореЗрдВ рдПрдХ рд▓рд╛рдкрддрд╛ рдЪрд░ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдХрднреА рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдпрд╛ рдЖрдкрдиреЗ рдореЗрд░реА рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рдПрдкреАрдЖрдИ рдХреЛ рдЧрд▓рдд рд╕рдордЭрд╛ рд╣реИ рдЬреЛ рдЙрди рдЪрд░ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдореЗрд░реЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реБрдП рд╣реИрдВ рдФрд░ рдЖрдк рдПрдХ рдЪрд░ рдХреЛ рдЖрдмрд╛рдж рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ .. ред
# Their code
Function Log($Message) { Write-Host $Massege } # not strict
# My code
[Strict]
Function DebugMsg
{
Param([String] $Message)
if ($DEBUG) { Log Host $Message }
}
# Your code
DebugMsg "Hello" # you didn't define DEBUG, and by saying strict I expressed a contract whereby the variable MUST be defined.
"рд▓реЙрдЧ" рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдЦреНрдд рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЯрд╛рдЗрдкреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
ЁЯдФ рдЕрдм рдЬрдм рдЖрдк рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ [Strict()]
рд╡рд┐рд╢реЗрд╖рддрд╛ рдПрдХ _awesome_ рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛ рдЬреЛ рд╕реНрдХреЛрдк-рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рд╕рдЦреНрдд рдореЛрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛ред рдХрд┐ рд╕рдЦреНрдд рдореЛрдб рдореБрджреНрджреЛрдВ рдкрд░ рдЙрд╕ рдЕрдиреНрдп рдореБрджреНрджреЗ рдХреЗ рдзрд╛рдЧреЗ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдореИрдВ рдЗрд╕реЗ рдЦреЛрджрддрд╛ рд╣реВрдБ рдФрд░ рдпрд╣рд╛рдБ рд╡рд╛рдкрд╕ рд▓рд┐рдВрдХ рдХрд░рддрд╛ рд╣реВрдБ ...
@ TheIncorrigible1 " рдпрд╣ рдЗрди рдЪреАрдЬреЛрдВ рдХреЛ рдЪреБрдк рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИ? " рдЧреИрд░-рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ $null.x
рдЪреБрдк рд╣реИ, $null.x()
рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реИред ?.
рдЪрд░реНрдЪрд╛ рдХреЗ рд╕рд╛рде, $null?.x
рдЪреБрдк рд╣реИ, $null?.x()
рдЪреБрдк рд╣реИред
рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ .
рдЬреЛ рдХрд┐ C # рдХреЗ ?.
рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рд╕рдЦреНрдд-рдореЛрдб рдореЗрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдлреЗрдВрдХрддрд╛ рд╣реИред рдлрд┐рд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ ?.
рдЬреЛ C # рдХреЗ ?.
рдЬреИрд╕реЗ рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬреИрд╕реЗ PowerShell рдХрд╛ .
рдЧреИрд░-рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреЛ PowerShell рдХреЗ .
рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП ?.
рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ рдФрд░ рдЙрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реИ)ред
рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдФрд░ рдЕрд╢рдХреНрдд рдЪреЗрдХ рдХрд╛ рднрд╛рд░ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛: рдЗрд╕рдХреЗ рдмрдЬрд╛рдп:
$prop = $item?.Method().PropIwant ?? 'PropActionFailed'
рдЖрдкрдХрд╛ рддрд░реАрдХрд╛ рдХреЙрд▓ рдлреЗрдВрдХ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ $ null рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ PropIWant рдЧрд╛рдпрдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдЕрднреА рднреА рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛:
$prop = try {
$item?.Method()?.PropIwant ?? 'PropActionFailed'
} catch [someMethodException] {
'PropActionFailed'
}
рдореЗрд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд ??
(рдпрджрд┐ рдпрд╣ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛) рдХреЗ рд╕рд╛рде, рдФрд░ ?.
рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд┐рдзрд┐ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рдорд▓реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИ "рд╕рдлрд▓рддрд╛ рдпрд╛ рдирд╣реАрдВ" рдФрд░ рдХреЛрдИ рд╡рд┐рд╕реНрддреГрдд рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдирд╣реАрдВ рд╣реИред
$prop = $item.Method().PropIWant ?? 'AnythingFailed'
рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рдЧреЛрдж рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХреЛрдб рдкрдврд╝рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред
PowerShell рдореЗрдВ рдЖрдк рдХрд┐рддрдиреА рдмрд╛рд░ .
рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВ? рдЖрдк рдХрд┐рддрдиреА рдмрд╛рд░ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдпрд╣ рд╕рдордЭрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ .
рдФрд░ ?.
рдмреАрдЪ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдмрддрд╛рдПрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╣рд░ рдмрд╛рд░ .
рд╣рдореЗрд╢рд╛ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдкрд░ рдЕрдВрддрд░ рд╣реЛрдЧрд╛ ?
"рдУрд╣, рдпрд╣ рдХреИрд╕реЗ рд╣реБрдЖ?" "рд╡реЗрд▓ рдЗрди C # .
рдиреЗ рд▓рд╛рдкрддрд╛ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЛрдВрдиреЗ ?.
рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛, рдЬреЛ рдХрд┐ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рдерд╛ред рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЛрдВрдиреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ PowerShell рдореЗрдВ .
рдлреЗрдВрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рддрдм рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рдЦреНрдд рдореЛрдб рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛, рдЬреЛ .
C # рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлреЗрдВрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЙрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ, рд▓реЗрдХрд┐рди рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рджрд╕реНрдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд┐рдВрддрд╛рдЬрдирдХ рдФрд░ рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдерд╛ рдФрд░ рдХреЛрдИ рднреА рдЗрд╕реЗ рдЯрд╛рдЗрдк рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛; рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рд┐рд░-рдкрд░ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдХрдбрд╝реЗрдкрди рд╕реЗ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЙрд╕ рдмрд╛рдд рдХреЛ рдЪрдХрдорд╛ рджрд┐рдпрд╛ рдФрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреВрдЫреЗ рдЧрдП рдХрдбрд╝реЗрдкрди рд╕реЗ рдбрд░рдХрд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕реА # ?.
, рдЬреЛ рдХрд┐ рд╣рд▓реНрдХреЗ рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЖрдкрдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рдмрд╛рдХреА рд╕рднреА рдХреЗ рд▓рд┐рдП рдмреЗрдХрд╛рд░ рд╣реИред рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрднреА рднреА рдХреЛрдИ рд╕рджрд╕реНрдп рдЕрд╕реНрддрд┐рддреНрд╡ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХрдбрд╝рд╛рдИ рд╕реЗ рд▓рд╛рдн рдЕрднреА рднреА рдЪрд┐рдВрддрд╛рдЬрдирдХ рдФрд░ рдкрд░реЗрд╢рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдЖрдкрдХреЛ рдпрд╣ рдирд╣реАрдВ рднреБрдЧрддрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ 'рд╕рдлрд╝рдореЛрдб' рдореЗрдВ 'рдиреЙрд░реНрдордореЛрдб' рдкрд▓рд╛рдпрди рд╣реИрдЪ рд╣реИ рдЕрднреА"ред Ickред
рдпрджрд┐ рдореИрдВрдиреЗ рд╕рдЦреНрдд рдХреЛрдб рд▓рд┐рдЦрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдореЗрдВ рд╕реЗ рдПрдХ рдиреЗ рдЧрд▓рддреА рдХреАред
рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдЖрдк рдпрд╣ рдХреНрдпреЛрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд╕рджрд╕реНрдп рд▓реБрдХрдЕрдк рдкрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЕрд╢рдХреНрддрддрд╛ рдПрдХ рдмреБрд░реА рдмрд╛рдд рд╣реЛрдЧреА, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рджрд╕реНрдп рд▓реБрдХрдЕрдк рдЕрдЧрд░ (рдкрд░рд┐рдгрд╛рдо рд╢реВрдиреНрдп рд╣реИ) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдорд╣рдВрдЧрд╛ рд╣реИ
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдмреБрд░рд╛ рд╣реЛрдЧрд╛, рдкреАрдПрд╕ рдЧреИрд░-рд╕рдЦреНрддреА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд ?.
рд▓рд┐рдП рдПрдХ рд╡рд╛рдВрдЫрдиреАрдп рд╡рд┐рдХрд▓реНрдк рд╣реЛрдЧрд╛ - рдмрд╣реБрдд рдЕрд▓рдЧ, рдЕрдзрд┐рдХ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧреАред
рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ PS рдореЗрдВ рдЖрдк рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ C # рдирд╣реАрдВ:
(1..3)[1kb..100kb]
рдФрд░ рдЧреИрд░-рдХрдбрд╝рд╛рдИ рдореЗрдВ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВред рд╕рдВрдЦреНрдпрд╛рдПрдВ рдмрджрд▓реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ; рдкреНрд░рджрд░реНрд╢рди рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдордирдорд╛рдирд╛ рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП ~ 100,000 рдЕрдкрд╡рд╛рдж рдЙрдард╛рдП рдФрд░ рдЦрд╛рдореЛрд╢ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред PS рд╣рдореЗрд╢рд╛ "рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рддреЗрдЬрд╝ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╕рдВрдж рдкрд░ рдЕрд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдзрдХреНрдХрд╛ рджреЗ", рдФрд░ рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╕рдВрдж рд╣реИред
@HumanEquivalentUnit рд╣рд░ рднрд╛рд╖рд╛ рдореЗрдВ рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рдЕрдкрдиреЗ рдХрд░рд┐рдпрд░ рдореЗрдВ рдХрднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЖрдкрдХреЛ рд╢реИрд▓реА рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдареАрдХ рд╣реИ, рдЖрдкрдХреЛ рдЙрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдЖрдк рд╕рдЦреНрдд рдореЛрдб рдХреНрдпреЛрдВ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ; рдпрд╣ рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИ рдЗрд╕рд▓рд┐рдП рдЖрдк рд╣реЛрд╢рдкреВрд░реНрд╡рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдмрдЬрд╛рдп рднрд╛рд╖рд╛ рдХреЛ рдирд┐рдЧрд▓рдиреЗ рджреЗрдВ (рдФрд░ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╣рд░ рдЬрдЧрд╣ рдЦрд╛рд▓реА рдХреИрдЪ рдмреНрд▓реЙрдХ рд╣реЛрдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ)ред рдлрд┐рд░ рд╕реЗ, рдЖрдк рдЕрднреА рднреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд╛рдЧрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЬреИрд╕реЗ рдореИрдВрдиреЗ рдХрднреА Out-Default
рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ)ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдСрдкрд░реЗрдЯрд░ ?
, ?.
; рдпрд╣ рдЗрдВрдбреЗрдХреНрд╕ рдПрдХреНрд╕реЗрд╕ рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдЖрдЧреЗ рдХреА рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдЬрдореАрдиреА рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдПрдВ рдХрд┐ рдореМрдЬреВрджрд╛ рд╕рдЦреНрдд рдореЛрдб рдЕрд╢рдХреНрдд-рдореВрд▓реНрдп-рд╕рд╢рд░реНрдд рдФрд░ рд╕рджрд╕реНрдп-рдЕрд╕реНрддрд┐рддреНрд╡-рд╕рд╢рд░реНрдд рдкрд╣реБрдВрдЪ ( рдКрдкрд░ рджреА рдЧрдИ рд╢рд░реНрддреЛрдВ) рдХреЛ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЙрд▓рдо Set-StrictMode
рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдХреЙрд▓рдо рдорд╛рди рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
рдПрдХ рддрд░рдл: рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдХреЗрд╡рд▓ _statement-_ рд╣реИрдВ, _script_-terminating рдирд╣реАрдВ, PowerShell рдХреА рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдмрдбрд╝реА рдЪрд░реНрдЪрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ - https://github.com/PowerShell/PowerShell/Docs/issues/1583 рджреЗрдЦреЗрдВред
$obj
_itself_ $null
:рдирд┐рд░реНрдорд╛рдг | -рдСрдл | -рд╡рд┐рд░реЛрдз 1 | -рд╡рд┐рд░реЛрдз 2 | -рд╡рд┐рд╕реНрддреГрдд 3+
---------- | ---- | ---------- | ---------- | ------------
$ obj | ЁЯСН | ЁЯЪл | ЁЯЪл | ЁЯЪл
$ obj.Prop | ЁЯСН | ЁЯСН | ЁЯЪл | ЁЯЪл
$ obj [42] | ЁЯЪл | ЁЯЪл | ЁЯЪл | ЁЯЪл
$ obj.Method () | ЁЯЪл | ЁЯЪл | ЁЯЪл | ЁЯЪл
рдпрд╣ рдЙрддреНрд╕реБрдХ рд╣реИ рдХрд┐ -Off
рдФрд░ -Version 1
, $obj.Prop
рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рдЬрдмрдХрд┐ $obj[42]
рдирд╣реАрдВ рд╣реИред
$obj
рдЧреИрд░- $null
, рд▓реЗрдХрд┐рди рдЬрд┐рд╕ рд╕рджрд╕реНрдп / рддрддреНрд╡ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд╡рд╣ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ:рдирд┐рд░реНрдорд╛рдг | -рдСрдл | -рд╡рд┐рд░реЛрдз 1 | -рд╡рд┐рд░реЛрдз 2 | -рд╡рд┐рд╕реНрддреГрдд 3+
---------- | ---- | ---------- | ---------- | ------------
$ obj.Prop | ЁЯСН | ЁЯСН | ЁЯЪл | ЁЯЪл
$ obj [42] (рдЗрдВрдбреЗрдХреНрд╕реЗрдмрд▓) | ЁЯСН | ЁЯСН | ЁЯСН | ЁЯЪл
$ obj [42] (рдЧреИрд░-рдЕрдиреБрдХреНрд░рдорд┐рдд) | ЁЯСН | ЁЯСН | ЁЯЪл | ЁЯЪл
$ obj.Method () | ЁЯЪл | ЁЯЪл | ЁЯЪл | ЁЯЪл
рдпрд╣ рдЙрддреНрд╕реБрдХ рд╣реИ рдХрд┐ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рд╡рд╕реНрддреБрдПрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд░рдгрд┐рдпрд╛рдВ) -Version 2
рд╕рд╛рде рднреА рдХрд┐рд╕реА рди рдХрд┐рд╕реА рддрддреНрд╡ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВ, рдЬрдмрдХрд┐ рд╕реНрдХреЗрд▓рд░ - рдЬрд╣рд╛рдВ рдкрд╛рд╡рд░рд╢реЗрд▓ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреНрд░рдордг рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ - рдирд╣реАрдВред
рдЕрд╢рдХреНрдд-рднрд┐рдЧреЛрдиреЗ ( рдЕрд╢рдХреНрдд-рд╕рд╢рд░реНрдд рдпрд╛ рд╕реА # рдореЗрдВ рдПрд▓реНрд╡рд┐рд╕ ) рдСрдкрд░реЗрдЯрд░ рд▓рдЧрднрдЧ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИ рдЬрдм StrictMode рдирд╡реАрдирддрдо рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реИ рдХрд┐ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдкрд░ рдкрд╣реБрдБрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдпрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рдореМрдЬреВрдж рд╣реИрдВред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдмреЗрд╡рдХреВрдлрд╛рдирд╛ рдЪрд╛рд▓ рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗрдирд╛ рд╣реЛрдЧрд╛:
function Get-OptionalPropertyValue($object, [string] $propertyName) {
if (-not ([bool] (Get-Member -InputObject $object -MemberType Properties -Name $propertyName))) {
return $null
}
$object.$propertyName
}
$value = Get-OptionalPropertyValue $foo "bar" # if $foo.bar exists, $value will contain its data; else $value will be $null
рдЬрдм рдЖрдк _really_ рдмрд╕ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
$value = $foo?.bar # if $foo.bar exists, $value will contain its data; else $value will be $null
рдХреГрдкрдпрд╛ рд▓реЛрдЧ, рдпрджрд┐ рдЖрдк рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рдХреЗрд╡рд▓ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЕрд╢рдХреНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрддрдирд╛ рджрд░реНрдж рд╣реЛрдЧрд╛ред
рдореИрдВ рдЗрд╕ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рд░рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдкрд╛рдпрд╛ред
рдЖрдУ рд╣рдо ??
рдФрд░ ?=
$x ?= 1
рдФрд░ $x ?? 1
рд╕реАрдзреЗ рд▓рдЧрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди, рдЬрдм рд╕реЗ рд╡реЗ рдСрдкрд░реЗрдЯрд░ рд╣реИрдВ рд╣рдореЗрдВ $x?=1
рдФрд░ $x??1
рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рде $x?
рдФрд░ $x??
рджреЛрдиреЛрдВ PowerShell рдореЗрдВ рд╡реИрд░рд┐рдПрдмрд▓ рдирд╛рдореЛрдВ рдХреЛ рдорд╛рдиреНрдп рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рддрд┐рдЬреНрдЮрд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ ${x}?=1
рдФрд░ ${x}??1
ред
рдФрд░ рд╕рд╢рд░реНрдд рд╕рджрд╕реНрдп рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ ?.
рдФрд░ ?[]
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд╣рдореЗрдВ ${x}?.name
рдФрд░ ${x}?[0]
ред
рдЗрдирдХреЗ рд▓рд┐рдП, $x ?.name
рдФрд░ $x ?[0]
рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ ?
рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред
рддреБрдо рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реЛ? @ mklement0
/ cc @rjmholt @ daxian-dbw @JamesWTruher
рдореИрдВрдиреЗ рдХрднреА рднреА рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ _leded_ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рди рд╣реА рдпрд╣ рд╕рдордЭрд╛ рд╣реИ рдХрд┐ ?
рдПрдХ рд╡реИрдз рдЪрд░ рдирд╛рдо рдХреНрдпреЛрдВ рд╣реИред рдпрд╣ $Safe?
рдЬреИрд╕реЗ рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рджрд░рд╡рд╛рдЬрд╛ рдЦреЛрд▓рддрд╛ рд╣реИ рдЬреЛ рдЖрдо рддреМрд░ рдкрд░ $IsSafe
рд░реВрдк рдореЗрдВ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдкрд░ рдЖрдорддреМрд░ рдкрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдФрд░ рдХрдо рдЕрдЬреАрдм рд╣реЛрддреЗ рд╣реИрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрджрд▓рд╛рд╡ рдХреЛ рдЖрдиреЗ рдореЗрдВ рдХрд╛рдлреА рд╕рдордп рд▓рдЧ рдЧрдпрд╛ рд╣реИред
рдпрд╣ $ рд╕реЗрдл рдЬреИрд╕реЗ рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рджрд░рд╡рд╛рдЬрд╛ рдЦреЛрд▓рддрд╛ рд╣реИ? рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдФрд░ рдХрдо рдЕрдЬреАрдм рд╣реИ рдЬрдм $ IsSafe рдХреЗ рд░реВрдк рдореЗрдВ рд╡реИрд╕реЗ рднреА рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ
рджрд┐рд▓рдЪрд╕реНрдк рд░реВрдк рд╕реЗ рдореИрдВрдиреЗ рд╡рд┐рдкрд░реАрдд рднрд╛рд╡рдирд╛ рд╡реНрдпрдХреНрдд рдХреАред рдпрд╣ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рдпреЛрдЬрдирд╛ / рд░реВрдмреА рдкрд░рдВрдкрд░рд╛ рд╣реИред
if ($questionMark?)
{
Write-Host "That's silly!"
}
рдХреНрдпрд╛ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХреЗ рдкрд╛рд╕ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереА, рдЬрд╣рд╛рдВ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЗ рд▓рд┐рдП рдСрдкрд░реЗрдЯрд░ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рдереА рдпрд╛ рдЪрд░ рдирд╛рдо рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рдереА рддрд╛рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП ?
рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рдХреЗ рд╕рд╛рде рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХреЗрдВ?
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрди рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдкреЗрд╢ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рд╕рд╛рде, PowerShell рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ ?
рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдЧрд╛ рдЬреИрд╕реЗ $x?[0]
, рдРрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреЛ ?
рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ ?
рдХреЛ рдЗрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдЪреВрдВрдХрд┐ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдорд╛рдиреНрдп рд╣реЛрдЧрд╛): ${x?}?[0]
ред $x?.Name
рдФрд░ ${x?}?.Name
ред
рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдпрд╣ рд╣реИ рдХрд┐ рдмреНрд░реЗрдХрд┐рдВрдЧ рдЪреЗрдВрдЬ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА рдЬрд╛рдП? рдЪрд░ рдирд╛рдо рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ред
A рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рдПрдХ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдкрд░рд┐рд╡рд░реНрддрди (6 рд╕реЗ 7) рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рдХрд╛рд╢ GitHub рдХреЗ рдкрд╛рд╕ рдмреЗрд╣рддрд░ рдХреЛрдб рдЦреЛрдЬ рд╣реЛрддреА, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкреАрдПрд╕ рдЪрд░ рдХреЗ рдХрд┐рддрдиреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЬреЛ ?
рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЗрддрдирд╛ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдирд╣реАрдВ рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕реЗ GitHub рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред PowerShell рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ 14 рд╡рд░реНрд╖реЛрдВ рдореЗрдВ, рдореИрдВрдиреЗ рдХрднреА рднреА рдПрдХ рдЪрд░ рдирд╛рдо рдореЗрдВ ?
рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдпрд╣ рд╕рд┐рд░реНрдл рдореЗрд░реЗ рд▓рд┐рдП рд╣реИред :-)
рдпрд╣ рдЬрд╣рд╛рдЬ рдмрд╣реБрдд рдкрд╣рд▓реЗ рд╣реА рд░рд╡рд╛рдирд╛ рд╣реЛ рдЪреБрдХрд╛ рд╣реИ, рдФрд░ рдЖрдЬ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ ?
рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рдХреЛ рджреЗрдЦрдХрд░ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЕрдЧрд░ рд╣рдо рдмрд╕ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд╛рдо рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ ?
рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЗрди рдирдП рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рдЬреЛ рд▓реЛрдЧ ?
рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЗрди рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд╕рд╛рде рдЙрди рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП {}
рдпрд╛ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди (рдЬрд╣рд╛рдВ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ "рд╡рд╣ рдЬрд╣рд╛рдЬ рд░рд╡рд╛рдирд╛ рд╣реЛ рдЧрдпрд╛" рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╕реБрдирдирд╛ рдЕрдЬреАрдм рд╣реИред рдпрд╣ рдПрдХ _рдореЗрдЬрд░ рд╕рдВрд╕реНрдХрд░рдг_ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдпрд╣рд╛рдБ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред
@rkeithhill рдореИрдВрдиреЗ рдЗрд╕реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕рд╛рдорд╛рди рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рд╕рд╣рдпреЛрдЧреА рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдРрд╕реА рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд рдЪреАрдЬрд╝ рд╣реИ рдЬреЛ рдЪрд░ рдирд╛рдореЛрдВ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддреАрдХ рдХреЗ рд╕рдорд╛рди рд╣реИ (рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдореЛрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди)
@KirkMunro "рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓реЗ рдкрд╛рд░реНрд╕рд┐рдВрдЧ" рдХреАрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреБрд▓реЗ рджрд░рд╡рд╛рдЬреЗ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред
@ vexx32 : рдмреНрд░реЗрдХрд┐рдВрдЧ рдЪреЗрдВрдЬ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдиреБрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ; рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рддрд░рд╣ рдХреЗ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдмрд╛рд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдЙрд╕ рдмрд╛рд░ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдХрд░реАрдм рдЖрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ ?
рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рддрдХ рд╡реЗ {}
рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЪрд░ рдирд╛рдо рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдирд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ ?
рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрджрд┐ рдЖрдк рдЙрджреНрдзрд░рдгреЛрдВ рдореЗрдВ рдирд╛рдо рд▓рдкреЗрдЯреЗ рдмрд┐рдирд╛ PowerShell рдореЗрдВ рдРрд╕реА рд╕рдВрдкрддреНрддрд┐ рджреЗрдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдкрд╛рд░реНрд╕рд░ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреАред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
PS C:\> $o = [pscustomobject]@{
'DoesItBlend?' = $true
}
PS C:\> $o.DoesItBlend?
At line:1 char:15
+ $o.DoesItBlend?
+ ~
Unexpected token '?' in expression or statement.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken
PS C:\> $o.'DoesItBlend?'
True
рдореБрдЭреЗ рдереЛрдбрд╝реА рд╣реИрд░рд╛рдиреА рд╣реБрдИ рдХрд┐ рдЖрдЬ рдкрд╛рд░реНрд╕ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ (рд╡рд╣ рдкрд░рд╕реЗрдЬрд╝ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ?), рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрди рдирд╛рдореЛрдВ рдХреЛ рдЙрджреНрдзрд░рдгреЛрдВ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдк рдПрдХ рдЯрд░реНрдирд░реА, рдЕрд╢рдХреНрдд рдХреЗ рд╕рд╛рде рдЙрджреНрдзрд░рдг рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред -рдХреЙрд▓реЗрдЬрд┐рдВрдЧ, рдЖрджрд┐ рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдСрдкрд░реЗрдЯрд░ рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдореБрдЭреЗ рдпрд╣ рд╕рд┐рдВрдЯреИрдХреНрд╕ ${x?}?.name
, рдФрд░ рдореИрдВ рдЗрд╕ рд░реБрдЦ рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реВрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡реИрд░рд┐рдПрдмрд▓ / рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдРрд╕реЗ рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдпрд╛ рд░рд┐рдХреНрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреЛ рдЯрд░реНрдирд░реА рдпрд╛ рдирд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред - * рдСрдкрд░реЗрдЯрд░реЛрдВред
@KirkMunro рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓реЛрдЧреЛрдВ рдХреЛ рдЪрд░-рд╕реАрдорд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ рдЕрдЧрд░ рд╡реЗ рдЧреВрдврд╝ рдЪрд░ рдирд╛рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореИрдВ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧ рдХреНрдпрд╛ рд╣реИред
рдкрд╛рд╡рд░рд╢реЗрд▓ 7 рдкрд░ рд▓реЛрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрддреНрд╕рд╛рд╣реА рд╣реИрдВ рдФрд░ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реЛрдВрдЧреЗред рдЬреЛ рд▓реЛрдЧ рдирд╣реАрдВ рд╣реИрдВ, рд╡реЗ рдЕрднреА рднреА <= v5.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЬрд╛рд░реА рд░рд╣реЗрдВрдЧреЗ; рдЬрдм рддрдХ msft рдЗрд╕реЗ рд╡рд┐рдВрдбреЛрдЬ 10 (рдХрднреА рдирд╣реАрдВ) рд╕реЗ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред
@KirkMunro рдЬрд╝рд░реВрд░, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдорд╛рдирдХ рдЕрдиреБрдореЗрдп рдЪрд░ рд╡рд░реНрдгреЛрдВ рд╕реЗ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╡реИрд╕реЗ рднреА рдЪрд░ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ ${Valid?}
рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред рдЪреВрдБрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЗрди рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдмрдЬрд╛рдп рдЗрд╕рдХреЗ рдХрд┐ ?
рдПрдХ рдРрд╕рд╛ рдкрд╛рддреНрд░ рдмрди рдЬрд╛рдП, рдЬреЛ рдХрднреА-рдХрднреА рдПрдХ рдЪрд░ рдирд╛рдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА _is_ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрд╕рдВрдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрддрд░ рдХреА рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕рднреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред ЁЯЩВ
@adityapatwardhan рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП ?
рдХреЛ рдПрдХ рд╡реИрдз рдЪрд░ рдЪрд░рд┐рддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдХрд╛рд▓рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рдкрд░рд┐рдЪрд┐рдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдирд▓-рд╕реЛрдЦ / -рдХрд▓реЗрд░рд╛рд╕ рдФрд░ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░реЛрдВ рджреЛрдиреЛрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдЧрд╛ рдЬреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрд▓реЗрдЦрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдПрд░реНрдЧреЛрдиреЙрдорд┐рдХреНрд╕ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
@KirkMunro "рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓реЗ рдкрд╛рд░реНрд╕рд┐рдВрдЧ" рдХреАрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреБрд▓реЗ рджрд░рд╡рд╛рдЬреЗ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред
@ Thecorrigible1 : рдХреЛрдИ рднреА рдХреЛрдб рдмрдЧ рдХреЗ рд▓рд┐рдП рджрд░рд╡рд╛рдЬрд╛ рдЦреЛрд▓ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рдЗрд╕реЗ рдареАрдХ рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдПрдХрд▓-рд╡рд░реНрдг рд▓реБрдХрд╣реИрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЕрдЧрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдкреЙрд╡рд░рд╢реЗрд▓ рдЯрд░реНрдирд░реА рдпрд╛ рдирд▓- * рдСрдкрд░реЗрдЯрд░ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ, рдЬрдм рдпрд╣ рдПрдХ рдЪрд░ рдирд╛рдо рдХреЛ рдкрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдЪрд░ рд╕реАрдорд╛ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдирд╣реАрдВ рд╣реИ рдФрд░ рдПрдХ ?
рд╡рд░реНрдг рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдмрдЧ рдХреЗ рд▓рд┐рдП рджрд░рд╡рд╛рдЬрд╛ рдирд╣реАрдВ рдЦреЛрд▓рддрд╛ рд╣реИред
рдкрд╛рд╡рд░рд╢реЗрд▓ 7 рдкрд░ рд▓реЛрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрддреНрд╕рд╛рд╣реА рд╣реИрдВ рдФрд░ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реЛрдВрдЧреЗред рдЬреЛ рд▓реЛрдЧ рдирд╣реАрдВ рд╣реИрдВ, рд╡реЗ рдЕрднреА рднреА <= v5.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЬрд╛рд░реА рд░рд╣реЗрдВрдЧреЗ; рдЬрдм рддрдХ msft рдЗрд╕реЗ рд╡рд┐рдВрдбреЛрдЬ 10 (рдХрднреА рдирд╣реАрдВ) рд╕реЗ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред
@ TheInrigrigible1 : рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрд╕ рдХрдерди рдХрд╛ рдХреНрдпрд╛ рдЖрдзрд╛рд░ / рд╕рдмреВрдд рд╣реИ? PowerShell 7 рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдореЗрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдЬ рдпрд╣ рдХреЗрд╡рд▓ рдЙрддреНрд╕рд╛рд╣реА рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╣ рджреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ред рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╕реЗ рдкрд░реЗ, рдпрджрд┐ PowerShell 7 рдпрд╛ рдмрд╛рдж рдореЗрдВ рд╕рдореНрдореЛрд╣рдХ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЛ рдЪрд╛рд╣рд┐рдП, рдЬрдмрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЬрд┐рд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реБрдП рд╡реЗ рдЙрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдЪ рд╣реИ рдЕрдЧрд░ OS тАЛтАЛрдХреЗ рд╕рд╛рде PowerShell 7 рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдЗрд╕ рдмрд╛рдд рдкрд░ рдХрд┐ рдЙрддреНрд╕рд╛рд╣реА рд▓реЛрдЧ рдЦреЗрд▓ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рдЙрди рд╕рдВрдЧрдардиреЛрдВ рдореЗрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдкреЙрд╡рд░рд╢реЗрд▓ 7 рдХреА рдореЗрдЬ рдкрд░ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрд╕рдВрдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рдПрдХ рдФрд░ рд╕реНрддрд░ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕рднреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред ЁЯЩВ
@ vexx32 рдЗрд╕реЗ ??
рдереЗ, рддреЛ рдпрд╣ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдПрдХ рдЪрд░ рд╣реЛрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рджреВрд░рд╕реНрде рд╣реИ рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдПрдХ рдПрдХрд▓ ?
рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, null- * рдСрдкрд░реЗрдЯрд░реНрд╕ рдХрд╛ рдкрд░рд┐рдЪрдп рдЖрдЬ рднреА ?
рдХреЛ рдПрдХ рдорд╛рдирдХ рдЕрдиреБрдореЗрдп рдЪрд░ рдЪрд░рд┐рддреНрд░ рдмреНрд░реЗрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реБрдП рдХреИрд╕реЗ рд╣реЛрдЧрд╛?
рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ рдЧреБрдб-рдЯреВ-рд╣реЗрд╡реНрд╕ (рдЬреЛ рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ) рдХреЗ рд▓рд┐рдП рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрдирдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреА рдЪрд░реНрдЪрд╛ / рддрд░реНрдХ рдХреЗрд╡рд▓ рдЪреАрдЬреЛрдВ рдХреЛ рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдзреАрдорд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╣ рдмрд┐рдВрджреБ рдЬрд╣рд╛рдБ рдЪреАрдЬреЗрдВ рдмрд╕ рд░реБрдХрддреА рд╣реИрдВ рдпрд╛ рдЫреВрдЯрдиреЗ рдореЗрдВ рдЪреВрдХ рдЬрд╛рддреА рд╣реИрдВ, рдЖрджрд┐ред рдзреАрдорд╛ рд╣реЛрдирд╛ рдЕрдХреНрд╕рд░ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдЖрдк рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдкреНрд░рднрд╛рд╡ рдХрд╛ рдЖрдХрд▓рди рдХрд░рдиреЗ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрджрд▓рд╛рд╡ рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЖрдЬ рдЙрд╕ рд╕рд╛рдХреНрд╖реНрдп рдХреЛ рдЬреБрдЯрд╛рдирд╛ рдХрдард┐рди рд╣реИред рдореИрдВ рдпрд╣ рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдХрд┐рд╕реА рднреА рджрд┐рди рдПрдХ рдЕрдЪреНрдЫреЗ-рд╕реЗ-рддреЛрдбрд╝рддреЗ рд╣реБрдП рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣рд╕ рдХрд░рддреЗ рд╣реБрдП рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рдХрд░реВрдБрдЧрд╛ред
рдореИрдВ рдЪрд░ рдирд╛рдореЛрдВ рдореЗрдВ рдХрднреА рднреА ?
рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛, рди рд╣реА рдореИрдВ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рд╕реЗ рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ PowerShell 7 рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реЗрд╢ рдХреЗ рд▓рд┐рдП рдЕрдирд╛рд╡рд╢реНрдпрдХ рдмрд╛рдзрд╛рдУрдВ рдХреЛ рд▓рдЧрд╛рддрд╛ рд╣реИ, рдмрд╕ рдЧреЛрдж рд▓реЗрдиреЗ рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм PowerShell рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рд▓реЛрдЧ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЕрдзрд┐рдХ рдЖрджреА рд╣реИрдВред
рд╡реИрд╕реЗ рднреА, рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдзреАрдорд╛ рдХрд░рдиреЗ рдХрд╛ рдореЗрд░рд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИ - рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдФрд░ рдЕрдиреБрднрд╡ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдЧреЗ рдЗрд╕ рдкрд░ рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд╣рдореЗрдВ рдпрд╣рд╛рдВ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП рдзрдХреНрдХрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдирд╣реАрдВред
рдЗрд╕ рдЖрдХрд╕реНрдорд┐рдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
$ValueIsValid? = @( $true, $false, $false, $true )
$ValueIsValid?[0]
# old behaviour? gets `$true`
# new behaviour? gets nothing, because the `?[0]` is interpreted as a null-conditional access.
рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде _already_ рддреЛрдбрд╝ рджреЗрдЧрд╛ред рдореИрдВ рдПрдХ рднреНрд░рд╛рдордХ рд╡рд┐рд░рд╛рдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рд╕реБрд╕рдВрдЧрдд, рд╕реНрд╡рдЪреНрдЫ рд╡рд┐рд░рд╛рдо рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛, рдЬрд┐рд╕реЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдзреЗ-рдкреГрд╖реНрда рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЬрдм ?
рдЕрдЪрд╛рдирдХ рд╡реИрдз рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЬрд╣рд╛рдВ рдпрд╣ рдЕрднреА рднреА рд╣реИред
@KirkMunro рдпрджрд┐ PowerShell 7 рдпрд╛ рдмрд╛рдж рдореЗрдВ рд╕рдореНрдореЛрд╣рдХ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЛ рдЪрд╛рд╣рд┐рдП, рдЬрдмрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЬрд┐рд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реБрдП рд╡реЗ рдЕрдкрдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдЪ рд╣реИ рдЕрдЧрд░ OS тАЛтАЛрдХреЗ рд╕рд╛рде PowerShell 7 рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдХреБрдЫ рдлреЙрд░реНрдЪреНрдпреВрди 50 рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░реНрдордЪрд╛рд░реА рдард┐рдХрд╛рдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣рдЬрд╛рд░реЛрдВ рдореЗрдВ рдереА, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдУрдПрд╕ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗ рджреВрд░ рд╣реЛрдирд╛ рдПрдХ рдЪреБрдиреМрддреА рдереА (рдпрд╛рдиреА, v5.x рдкрд░ рдЬрд╛ рд░рд╣рд╛ рд╣реИ)ред рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдХрд┐рд╕реА рднреА рд╕реНрдерд╛рди рдХреЛ рдХреЛрд░ рдХреЛ рдЕрдкрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ; рдмрд▓реНрдХрд┐ рд╡реЗ рдХреНрд░реЙрд╕-рдЕрдиреБрдХреВрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдкрд╛рдпрдерди рдореЗрдВ рдЪрд▓реЗ рдЬрд╛рдПрдВрдЧреЗред рд╡рд┐рдВрдбреЛрдЬ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рднреА рдПрдХ рдмрд╣реБрдд рд╣реА рдХрдо рдХрд╛рдо рдерд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдВрдкрдирд┐рдпрд╛рдВ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдИ рддрдХрдиреАрдХ рдпрд╛ рднрд╛рд╖рд╛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдЕрдкрдиреЗ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдФрд░ рдЙрдирдХреЗ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдЬреНрдЮрд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ v2 рдкрд░ рд░рд╣рдиреЗ рд╡рд╛рд▓реА рд╕рд╛рдордЧреНрд░реА рд╣реЛрдЧреА рдФрд░ рдХрднреА рднреА Win10 / Server16 cmdlets рдХреЛ рдЫреВрдирд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬреЛ рдЬреАрд╡рди рдХреЛ рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рдЖрд╕рд╛рди рдмрдирд╛рддреЗ рд╣реИрдВред
рдЗрд╕ рд╕рдмрдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рдХрд╣рдирд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпреЗ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╢реВрдиреНрдп рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдПрдХ рднрд╛рд╖рд╛ рдХреЛ рдЕрдзрд┐рдХ рдПрд░реНрдЧреЛрдиреЛрдорд┐рдХ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдЧреЛрдж рд▓реЗрдиреЗ рдХреЛ рджреЗрдЦреЗрдЧрд╛ рдЬреЛ рдЙрдкрдХрд░рдг рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡реЗ рддреЗрдЬреА рд╕реЗ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХреЗрдВред (рджреЗрдЦреЗрдВ: C # рдФрд░ рдЕрдзрд┐рдХ / рдмреЗрд╣рддрд░ рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐)
?
рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ - рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЪрд░ $ рдХреЗ рдХрд╛рд░рдг рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
@lzybkr рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдорд╛рдорд▓рд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рд╣реИ рдЬреИрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА $^
рдФрд░ $$
ред
@lzybkr @ Thecorrigible1 рдЬрд╣рд╛рдБ рддрдХ рдореБрдЭреЗ рдпрд╛рдж рд╣реИ, рдЙрди рдЪрд░ рдХрд╛ _all_ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ tokenizer рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрд╡рд░рдг рд╣реИред $^
_already_ рдПрдХ рдорд╛рдиреНрдп рдЪрд░ рдирд╛рдо рдирд╣реАрдВ рд╣реИред рдЯреЛрдХрдирд░ рдореЗрдВ рдЙрди рд╕рднреА рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬреЛ рдорд╛рдирдХ рдЪрд░ рдирд╛рдореЛрдВ рдХреА рддрд▓рд╛рд╢ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣рд╛рдБ рдПрдХрдорд╛рддреНрд░ рдЙрдкрд╛рдп ┬┐
:
рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг $? ┬┐= 1
рдореИрдВ рд╕реНрдЯреАрд╡ рд╕реНрдЯреАрд╡, рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдЗрд╕ рдкрд░ рднреАрдбрд╝ рднреАрдбрд╝ рдореЗрдВ рд╣реВрдБред
$silly?тА╜=1
@lzybkr - рдореЗрд░реЗ рдЬреНрдЮрд╛рди рдореЗрдВ $?
$$
рдФрд░ $^
рд╡рд┐рд╢реЗрд╖ рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпреЗ рдЪрд╛рд░ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ
?
рдЕрдиреБрдорддрд┐ рди рджреЗрдВред?.
рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдВред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ ?
рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рдирд╛рдо ${variablename}
рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдлрд┐рд░ рднреА рдПрдХ рдкрд░рд┐рд╡рд░реНрддрдиред?.
рдФрд░ ?[]
, ${variablename}?.property
рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЛрдИ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдирдП рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдЕрдирд╛рдбрд╝реА рдмрдирд╛ рджреЗрддрд╛ рд╣реИредрдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, 1 рдФрд░ рдЕрдВрддрд┐рдо рдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВред
рдпрд╣ рдПрдХ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдпрд╣рд╛рдБ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдкреЙрд╡рд░рд╢реЗрд▓ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░рддрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдпрд╣ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдЧрддрддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рдЯреВрдЯрдирд╛ рдирд╣реАрдВред рдореВрд▓ рдШреЛрд╖рдгрд╛ рд╕реЗ :
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЕрд░реНрде рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдХреНрдпрд╛ рд╡рд┐рдХрд▓реНрдк 1 рдФрд░ 2 рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВ? рдпрд╛ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рдЕрднреА рднреА ?
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реЛрдЧреА, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд┐ рдЙрдирдХреЗ рдкреАрдЫреЗ рдХреЛрдИ рдЕрд╢рдХреНрдд-рд╕рд╣рд╡рд░реНрддреА рдпрд╛ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдирд╣реАрдВ рд╣реИ?
рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмреИрдХрдЯреНрд░реИрдХрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдЯреЛрдХрди / рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд▓реЙрдЬрд┐рдХ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдЬрдм рдЪрд░ ?
рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдореИрдВ рдЬреЛ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рд╡рд┐рдХрд▓реНрдк 2 рд╕рд╛рдорд╛рдиреНрдп рдкрд╕рдВрдж рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдпрд╣рд╛рдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдирд┐рдЪреНрдЫрд╛ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдРрд╕рд╛ рдХрд░рдирд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ ?
рдХрд╛ рдЙрдкрдпреЛрдЧ рдЪрд░ рдирд╛рдореЛрдВ рдореЗрдВ рд╡реИрд╕реЗ рднреА рдХрд░ рджреЗрдЧрд╛, рдмрд╕ рдЙрди рдкрд░рд┐рджреГрд╢реНтАНрдпреЛрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдЬреЛ рдЪрд░ рдирд╛рдо рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╛рдореВрд▓реА рдмрджрд▓рд╛рд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдмрджрд▓рддреЗ рд░рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рдЪрд░ рдирд╛рдо рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реА рд╕реНрдерд┐рд░рддрд╛ рдореЗрдВ рдПрдХ рд╡рд┐рд░рд╛рдо рд╣реИ, рд╢рд╛рдпрдж рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рд╕рдмрд╕реЗ рдмреБрд░рд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред
рдЗрди рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдирд┐рдпрдо рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдмрд╣реБрдд рд╕рд╛рд░реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдпрд╣ рдорд╛рдорд▓рд╛ рд╣реИред рд╣рдо рдпрд╣рд╛рдБ рдкрд╛рдиреА рдХреЛ рдореИрд▓рд╛ рдХрд░рдиреЗ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рд╕реЗ рдХреБрдЫ рднреА рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рд╢рд╛рдпрдж рдЪрд░ рдирд╛рдо ?
рдХрдо рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдПрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдХреБрдЫ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрдард┐рди рд╣реИрдВ - рдЬреЛ (рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ) рд╣рдореЗрдВ рд╡рд┐рдХрд▓реНрдк 1 рдореЗрдВ рд╡рд╛рдкрд╕ рд▓рд╛рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд▓рдЧрднрдЧ ... рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЕрдм рдмреНрд░реЗрдХ рдирд╣реАрдВ рд▓реЗрдиреЗ рдФрд░ рдЕрд╕реНрдкрд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░рдг рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред
@ vexx32 1 рдФрд░ 2 рдХреЗ рдмреАрдЪ рдереЛрдбрд╝рд╛ рдЕрдВрддрд░ рд╣реИред
# 1 рдХреЗ рд▓рд┐рдП рд╣рдо рд╕рднреА рдирд╛рдореЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдЪрд░ рдирд╛рдореЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ?
рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ $x? = 1
, $x?? = 1
$x?x?x = 1
рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
# 2 рдХреЗ рд▓рд┐рдП, $x? = 1
рдЕрднреА рднреА рдорд╛рдиреНрдп рд╣реИ рд▓реЗрдХрд┐рди $x?.name
${x}?.name
рдмрд░рд╛рдмрд░ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдЕрдВрдд рдореЗрдВ ?
рд╕рд╛рде рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд╛рдореЛрдВ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ, рдЬреЛ рд╕рджрд╕реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд░рд╣реЗ рд╣реИрдВред рддреЛ, $x? = 1
, $x?? = 1
$x?x?x = 1
рдЕрднреА рднреА рдорд╛рдиреНрдп рд╣реЛрдВрдЧреЗред
рд╣рд╛рдБ, рдореИрдВ рд╡рд╣рд╛рдБ рдкрд░ рдЯреЛрдХрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЪрд┐рдВрддрд┐рдд рд╣реВрдБред рджреЛрдиреЛрдВ рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдХреБрдЫ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рднрд╛рд░реА рд╕рдорд╛рди рдЪрд░ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдореЗрд░реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рдХрд▓реНрдк 1 рд╣реИ ... рдПрдХ рдмрд╛рд░ рдХрд╛ рдмреНрд░реЗрдХрд┐рдВрдЧ рдЪреЗрдВрдЬ, рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рд▓рд┐рдП рд╣реИ, рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд┐рд╕ рддрд░рд╣ рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмреИрдХрдЯреНрд░реИрдХрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдЯреЛрдХрди / рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд▓реЙрдЬрд┐рдХ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдЬрдм рдЪрд░ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рд▓рд╛ рд╕рдХрддрд╛ рд╣реИ?
рдореИрдВ рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрд╕ рдЪрд┐рдВрддрд╛ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реВрдВред рдПрдХ рдХрднреА-рдХрднреА-рд╡рд┐рднрд╛рдЬрдХ рдХреЗ рд░реВрдк рдореЗрдВ ?
рд╣реЛрдиреЗ рд╕реЗ рдореБрдЭреЗ рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рджрд╛рдВрддреЗрджрд╛рд░ рд░реЗрдЦрд╛ рдХреА рддрд░рд╣ рдорд╣рд╕реВрд╕ рд╣реЛрддрд╛ рд╣реИред
рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмреИрдХрдЯреНрд░реИрдХрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдЯреЛрдХрди / рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд▓реЙрдЬрд┐рдХ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдЬрдм рдЪрд░ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рд▓рд╛ рд╕рдХрддрд╛ рд╣реИ?
рдпрд╣ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдЬрдм рддрдХ рдЖрдк рдЯреЛрдХрди рдХреЗ рдмрдЬрд╛рдп рд▓реБрдХрд╣реЗрдб рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдмреИрдХ-рдЕрдк рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реЛрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рдЖрдЧреЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЬрдм рдЖрдк рдПрдХ рдЪрд░ рдирд╛рдо рдореЗрдВ ?
рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреМрди рд╕реЗ рд╡рд░реНрдг рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЪрд░ рдЯреЛрдХрди рдХреЛ "рд░реИрдк" рдХреИрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдВред рдпрд╣ рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рдкрд░реЗрд╢рд╛рдиреА рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреАрдЫреЗ рд╣рдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдпрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рдЖрдИ рд╣реИред
@ рдкрд╛рд╡рд░рд╢реЗрд▓ / рдкрд╛рд╡рд░рд╢реЗрд▓-рд╕рдорд┐рддрд┐ рдиреЗ рдЖрдЬ рдЗрд╕рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ:
?
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡реЗ рдХрдо рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЗрд╕ рдХрдорд░реЗ рдореЗрдВ рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рд╣рдо рдЗрд╕рд╕реЗ рджреВрд░ рд░рд╣реЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рдПрдВ рдЬреЛ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИрдВ)ред рджреВрд╕рд░реА рдУрд░, рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рд╡реНрдпрдХреНрддрд┐ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ (рдЬреИрд╕реЗ ${foo}?.bar
) рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рд╡рд┐рдХрд▓реНрдк 3 рдХреЛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрди рдХрдо рдЕрдиреБрднрд╡реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдкрд░ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдмрдЪрддрд╛ рд╣реИред (рд▓реЗрдХрд┐рди рдлрд┐рд░, рд╣рдо рдЗрд╕реЗ рдкрд╣рд▓реА рдЧреЛрд▓реА рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдорд╛рдиреНрдп рдХрд░реЗрдВрдЧреЗред)$foo
рдФрд░ ${foo}
рдЙрдкрдпреЛрдЧ рдорд┐рд╢реНрд░рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдо рдЗрд╕ рдмрд╛рдд рдкрд░ рд╕рд╣рдордд рдереЗ рдХрд┐ рдЗрд╕реЗ рдЯреВрд▓реАрдВрдЧ (рд╡реАрдПрд╕ рдХреЛрдб рдкреЙрд╡рд░рд╢реЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рддрд░рд╣) рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╕рднреА рдЪрд░ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдЦреЛрдЬрдирд╛ рдХрдард┐рди рд╣реИ рдЬрдм рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░реНрд╕ $ рдлреВ рдФрд░ $ {рдлреВ} рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдорд┐рд▓рд╛ рд░рд╣реЗ рд╣реИрдВ
рдпрд╣ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдПрдПрд╕рдЯреА рд╡реИрд░рд┐рдПрдмрд▓ рдирд╛рдо рдХреЛ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдпрд╣ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИред рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдЙрдкрдХрд░рдг рдЬреЛ PowerShell AST рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЙрд╕реЗ рдпрд╣рд╛рдВ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рд╕реЗ рдХреЛрдИ рдкрд░реЗрд╢рд╛рдиреА рдирд╣реАрдВ рд╣реЛрдЧреАред
рд▓реЗрдХрд┐рди рд░реЗрдЧреЗрдХреНрд╕ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рдЬрд╛рдЧрд░реВрдХ рд╣реЛрдирд╛ рд╣реЛрдЧрд╛: varname
-> \{?varname\}?
@rjmholt рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рдкрд░ рдПрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ред рдПрдХ рддреНрд╡рд░рд┐рдд рдмреНрд░реЗрдХрдбрд╛рдЙрди: 22,000,000+ рдЪрд░ рдирд╛рдореЛрдВ (рдЕрджреНрд╡рд┐рддреАрдп рдирд╣реАрдВ) рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ 400,000 рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ, рдХреЗрд╡рд▓ ~ 70 рдЕрджреНрд╡рд┐рддреАрдп рдЪрд░ рдереЗ рдЬреЛ ?
рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдПред
рдзрдиреНрдпрд╡рд╛рдж, @mburszley - рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдмрдирд╛рддрд╛ рд╣реИ рдХрд┐ рдмрд╛рд▓реНрдЯреА 3: рд╕рдВрднрд╛рд╡рдирд╛ рдЧреНрд░реЗ рдХреНрд╖реЗрддреНрд░ рдкрд░рд┐рд╡рд░реНрддрди, рдФрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд╕рд╛рде рдмреЛрдЭ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ {...}
рдЕрддреНрдпрдзрд┐рдХ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ, рд╕рдорд╛рдирд╛рдВрддрд░ рдХреЗ рд▓рд┐рдП рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рдЬрд░реВрд░рдд $(...)
рдЪрд╛рд░реЛрдВ рдУрд░ exit
/ return
/ throw
&&
||
ред
рдЙрд╕ рдореБрджреНрджреЗ рд╕реЗ рддрд░реНрдХ рдЙрдзрд╛рд░ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП:
рдпрджрд┐ рд╣рдо рдЪрд░ рдирд╛рдореЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ {...}
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк ?.
рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ {...}
рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдЬрд╛рди рдкрд╛рдПрдВрдЧреЗ рдХрд┐ _it_ рдХреНрдпрд╛ рд╣реИ рдЬрдм рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ (рд╕рдВрднрд╡рддрдГ _undetected_, рдЬрдм рддрдХ рдХрд┐ Set-StrictMode -Version 2
рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдкреНрд░рднрд╛рд╡ рдореЗрдВ рди рд╣реЛ): $o = [pscustomobject] @{ one = 1 }; $o?.one
рдПрдХ рдмрд╛рд░ рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ _do_ рдХреЛ {...}
рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИ:
{...}
рдЯрд╛рдЗрдк рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИредрдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ 1 рджрд┐рди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реБрдИ
@rjmholt , рдЖрдкрдХреЛ https://github.com/PowerShell/PowerShell/issues/10967#issuecomment -561843650 рд╕реЗ рдЙрджреНрдзреГрдд рдХрд░ рд░рд╣рд╛ рд╣реИ:
рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╣рдо рдореМрдЬреВрджрд╛ рд╡реИрдз рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВ рдЙрд╕реЗ рддреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рдирд╣реАрдВ рдерд╛ред рдлрд┐рд░ рд╕реЗ, рд╡рд╣рд╛рдБ рдПрдХ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реИ, рд╣рдо рдореЗрдВ рд╕реЗ рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЬрдВрдЧрд▓реА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗ рд░рд╣реЗ рд╣реИрдВ - рд╣рдордиреЗ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрдИ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╣рдордиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдиреЗ рд╡рд┐рдкрдХреНрд╖ рдХреЛ рдмрд╛рд╣рд░ рдХрд░ рджрд┐рдпрд╛ рд╣реИ (рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдЙрди рд╕рднреА рдХреЗ рд╕рд╛рде, рдпрд╛ рдпрд╣ рдХрд┐ рд╡реЗ рджреВрд╕рд░реЛрдВ рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ)ред рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЯреЛрдХрдирд░ рдпрд╛ рдкрд╛рд░реНрд╕рд░ рдХреЗ рдХреБрдЫ рдкрд╣рд▓реВ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рджреЛ рдкреЙрд╡рд░рд╢реЗрд▓ рд╕рдВрд╕реНрдХрд░рдг рдЕрдм рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдПрдПрд╕рдЯреА рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рджреЛ рдкреЙрд╡рд░рд╢реЗрд▓реНрд╕ рдПрдХ рд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ "рджреЗрдЦреЗрдВрдЧреЗ"ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рднреА рдЙрд╕реА рддрд░рд╣ рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ PSScriptAnalyzer рдирд┐рдпрдо рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рдорд▓реЛрдВ рдХреЛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ; PSScriptAnalyzer рдПрдХ PowerShell рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдЕрдЧрд▓реЗ рддрдХ рдПрдХ рдЕрд▓рдЧ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рджреЗрдЦреЗрдЧрд╛ред
C # рдХреЗ рд╡рд┐рдкрд░реАрдд, PowerShell рдПрдХ рдЕрд▓рдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдмрд╛рдж рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдЧрдд рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдПрдХ рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рд░рдирдЯрд╛рдЗрдо рдХреЗ рд▓рд┐рдП рд╕реАрдорд┐рдд рд╣реИред рдПрдХ рдмрд╛рд░ рдкрд╛рд╡рд░рд╢реЗрд▓ рдПрдХ рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рдмреНрд░реЗрдХ рдХрд░ рджреЗрддрд╛ рд╣реИ, рд╣рдо рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рджреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╢реЗрд▓ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрдВрднреАрд░ рдореБрджреНрджрд╛ рд╣реИред рдкреЙрд╡рд░рд╢реЗрд▓ рдХреЛ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдВрджрд░ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рд╕рднреА рдорддрднреЗрджреЛрдВ рдХреЛ рдореЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдЧрддрд┐рд╢реАрд▓ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдПрдХ рдЧреИрд░-рд╕рдордЭреМрддрд╛рд╡рд╛рджреА рд╕реНрдерд┐рд░ рдЪреАрдЬрд╝ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИред рдФрд░ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рдирд╛ рдЬрд╣рд╛рдВ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдорд╛рдиреНрдп рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЦрддрд░рдирд╛рдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рд╕рд░рд▓ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ рд╣реИ рдФрд░ рджреЛрдиреЛрдВ рдкрд░рд┐рд╡реЗрд╢реЛрдВ рдореЗрдВ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рднреА, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реБрдЖред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВ рд╕рд░рд╛рд╣рдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдмрд╣реБрдд рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рддрднреА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдкреЗрд╢реЗрд╡рд░реЛрдВ рдиреЗ рд╡рд┐рдкрдХреНрд╖ рдХреЛ рдкрдЫрд╛рдбрд╝ рджрд┐рдпрд╛, рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░рдХ рдпрд╣ рд╣реИ рдХрд┐ рдореМрдЬреВрджрд╛ рдХреЛрдб рдХрд┐рддрдирд╛ рдЯреВрдЯрддрд╛ рд╣реИред
рд╣рдо рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдХрд╛рдо рдХрд░ рд╕рдХрдиреЗ рд╡рд╛рд▓реА рд▓рд┐рдкрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░ рджреЗрддреЗ рд╣реИрдВ
рдЕрд░реНрде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рджреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рд╣рдо рдпрд╣рд╛рдВ рдПрдХ _new_ рд╕рд┐рдиреЗрдЯрд┐рдХ рдлреАрдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ ( ?.
), рдЗрд╕рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВ _cannot_ (рд╕рд╛рд░реНрдердХ рд░реВрдк рд╕реЗ) рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдЪрд▓рддреА рд╣реИрдВ - рдЬрдм рддрдХ рдХрд┐ рдЖрдк рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрди рд╢рд░реНрддреЛрдВ рдХреЛ рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рд╡рд┐рд░рд╛рд╕рдд-рд╕рдВрд╕реНрдХрд░рдг-рд╕рдВрдЧрдд-рд╕рдВрдЧрдд рдкрде рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╢рд╛рдпрдж рд╣реА рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИ - рдЖрдк рддреЛ рдмрд╕ рд╡рд┐рд░рд╛рд╕рдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд░рд╣рдирд╛ рд╣реЛрдЧрд╛ред
рд╣рд╛рдВ, рдкреБрд░рд╛рдиреА рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ $var?.foo
рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЬреЛ рдПрдХ рдЪрд░ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ $var?
, рд▓реЗрдХрд┐рди:
?
рдХреЛ рдХрднреА рднреА рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП _woutout рдиреЗ рдЗрд╕реЗ {...}
_ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд┐рдпрд╛ред
рдЪреВрдВрдХрд┐ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╣реИ рдФрд░ рд╢рд╛рдпрдж рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА _unknown_, рдРрд╕реЗ рдЪрд░ рдирд╛рдо рдЬрдВрдЧрд▓реА рдореЗрдВ рдЕрддреНрдпрдзрд┐рдХ рджреБрд░реНрд▓рдн рд╣реИрдВ, рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрднрд╡ рд╕реЗ рдмреЛрд▓рддреЗ рд╣реБрдП, рд▓реЗрдХрд┐рди @mburszley рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЕрдзрд┐рдХ рдореВрд░реНрдд рдкреНрд░рдорд╛рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ ред
?
(рдФрд░ !
) рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рд╡рд╣рд╛рдБ рдХреЗрд╡рд▓ _method_ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИрдВ, рдФрд░ рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд░реВрдмреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рд╡рд╣реА рдЪреАрдЬрд╝редрддреЛ, рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдмреЛрд▓:
рдореМрдЬреВрджрд╛ рдХреЛрдб рдХрд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╣рд┐рд╕реНрд╕рд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ - рдПрдХ рдЯреЛрдХрди рдЬреИрд╕реЗ $var?.foo
рдмрд╕ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝реЗрдЧрд╛ред
рдпрджрд┐ рдЖрдк рдирдП рд╢рдмреНрджрд╛рд░реНрдереЛрдВ рдХреЗ рд╕рд╛рде $var?.foo
рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рд╛рдБ, рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдЪрд▓рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХреЗ рд╕реЗ рдЯреВрдЯрдиреЗ рдХреЗ рдмрдЬрд╛рдп), рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕рдЦреНрдд рдореЛрдб рдкреНрд░рднрд╛рд╡ рдореЗрдВ рд╣реИ - рд▓реЗрдХрд┐рди _you рд╣рдореЗрд╢рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рд╡реИрд╕реЗ рднреА рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдиреНрдпреВрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВред рд╡реИрд╕реЗ рднреА ( #requires -Version
, рдореЙрдбреНрдпреВрд▓-рдкреНрд░рдХрдЯ рдХреБрдВрдЬреА)ред
рд╕рднреА рдореЗрдВ, рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдмрд╛рд▓реНрдЯреА 3 рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдорд╛рдорд▓рд╛ рд╣реИ: рдПрдХ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд╛рднреЛрдВ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддреЗ рд╕рдордп рдмрд╣реБрдд рдХрдо рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ (рдпрд╛, рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ, рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдХрд╛рд░рдг рдмрд╛рд░рд╣рдорд╛рд╕реА рд╕рд┐рд░рджрд░реНрдж рд╕реЗ рдмрдЪрддрд╛ рд╣реИ)ред
@ mklement0 рд╣рдо
рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ, @ рд╕реНрдЯреАрд╡рдПрд▓-рдПрдордПрд╕рдПрдлрдЯреА - рдХреГрдкрдпрд╛ # 11379 рджреЗрдЦреЗрдВред
рдореИрдВ рдпрд╣рд╛рдВ рд╕рднреА рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдорд░реНрдерди (рдпрд╛, рд╣рд╛рдВрдлрдирд╛, рдЧреИрд░-рд╕рдорд░реНрдерди) рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@rjmholt рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рдкрд░ рдПрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ред рдПрдХ рддреНрд╡рд░рд┐рдд рдмреНрд░реЗрдХрдбрд╛рдЙрди: 22,000,000+ рдЪрд░ рдирд╛рдореЛрдВ (рдЕрджреНрд╡рд┐рддреАрдп рдирд╣реАрдВ) рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ 400,000 рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ, рдХреЗрд╡рд▓ ~ 70 рдЕрджреНрд╡рд┐рддреАрдп рдЪрд░ рдереЗ рдЬреЛ
?
рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдПред