Powershell: рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд░реНрд╕рд┐рдВрдЧ/рдкрд╛рд╕рд┐рдВрдЧ: рдЧреИрд░-рдЙрджреНрдзреГрдд рдЯреЛрдХрди рдЬреЛ рдХреЛрд▓рди рдХреЗ рд╕рд╛рде рдирд╛рдорд┐рдд рддрд░реНрдХреЛрдВ рдХреА рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рднрд╛рдЬрдХ рджреЛ рдореЗрдВ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ $Args / @Args рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 11 рдорд╛рд░реНрдЪ 2018  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: PowerShell/PowerShell

рд╕рдВрдмрдВрдзрд┐рдд: #6291, #6292, рдФрд░ #4624

https://github.com/PowerShell/PowerShell/issues/6292#issuecomment -371344550 рд╕реЗ рдлрд╝реЙрд▓реЛ рдЕрдк:

рдиреЛрдЯ: рд╡рд┐рдЪрд╛рд░рд╛рдзреАрди рдЯреЛрдХрди, рдЬреИрд╕реЗ -foo:bar , _look_ рдирд╛рдорд┐рдд рдкрд╛рд╡рд░рд╢реЗрд▓ рддрд░реНрдХреЛрдВ рдХреА рддрд░рд╣ (рдФрд░, рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ, рд╢реБрд░реВ рдореЗрдВ рд╣рдореЗрд╢рд╛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдиреАрдЪреЗ @BrucePay рдХреА рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВ), рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП -is (рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛) рдмрд╛рд╣рд░реА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордпред

рдЯреЛрдХрди рдЬреЛ -foo.bar рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ, рд╡реЗ рд╕рдорд╛рди рднрд╛рдЧреНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ (#6291 рджреЗрдЦреЗрдВ)ред

рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА _direct_ рддрд░реНрдХ рдкрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
echoArgs -foo:bar рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ -foo:bar рдХрд░рддрд╛ рд╣реИ
), рд▓реЗрдХрд┐рди $Args / рдЗрд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╕рдордп рдирд╣реАрдВ ( @Args )ред

рдиреЛрдЯ: рд╕рдорд╕реНрдпрд╛ $Args / @Args рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдореМрд▓рд┐рдХ рд╣реИ рдФрд░, рд╢рд╛рдпрдж рдХрдо рдЖрдо рд╣реЛрдиреЗ рдкрд░, рдкрд╛рд╡рд░рд╢реЗрд▓-рдореВрд▓ рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИ - рдиреАрдЪреЗ рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВ ред

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

MacOS рдпрд╛ Linux рдкрд░ рдЪрд▓рд╛рдПрдБред

function baz {
  bash -c 'for a; do echo $a; done' - $Args   # note: same with <strong i="32">@Args</strong>
}

baz -foo:bar
'---'
baz -foo.bar

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

-foo:bar
---
-foo.bar

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

-foo:
bar
---
-foo
.bar

рддрд░реНрдХ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ рджреЛ рдореЗрдВ рдЯреВрдЯ рдЧрдП рд╣реИрдВред рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдХреА рдЧрдИ рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВред

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

PowerShell Core v6.0.1 on macOS 10.13.3
PowerShell Core v6.0.1 on Ubuntu 16.04.3 LTS
PowerShell Core v6.0.1 on Microsoft Windows 10 Pro (64-bit; v10.0.15063)
Windows PowerShell v5.1.15063.674 on Microsoft Windows 10 Pro (64-bit; v10.0.15063)
Issue-Discussion WG-Language

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

рдореИрдВрдиреЗ рдЕрднреА рдкрд┐рдЫрд▓реЗ рд╣рдлреНрддреЗ рдпрд╛ рддреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╕рд╛рде рдХреБрд╢реНрддреА рдмрд┐рддрд╛рдИ рд╣реИред рдпрд╣ рдЯреНрд░реИрдХрд┐рдВрдЧ рдордЬрдмреВрд░ рд╕реНрд╡рд┐рдЪ рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рди рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдХреЗ рдмрд╛рдж (рдЬреИрд╕реЗ -foo:$bar ) рдХреЗ рд╕рд╛рде splatting рдХреЗ рдмрд╛рдж рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╕реЗрдЯ @Args , рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЕрд╕реНрдкрд╖реНрдЯ scoping рдореБрджреНрджрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЗрд░реЗ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдЬрдм рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХрд┐рд╕реА рднреА рд╕реНрд╡рд┐рдЪ рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рди рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдордЬрдмреВрд░ рдХрд░рдиреЗ рд╕реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ рдкрд╛рд╡рд░рд╣реЗрд▓ 7 рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди 1 рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде рднреА рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рд╡рд╣реА рдореБрджреНрджрд╛ рдЕрднреА рднреА рдЙрдарддрд╛ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдПрдХ рдЬреНрдЮрд╛рдд рд╕рдорд╕реНрдпрд╛ рд╣реЛрдиреЗ рдХреЗ рдПрдХ рд╡рд░реНрд╖ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ ...

рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╡рд╣ рдкрд░реАрдХреНрд╖рдг рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдмрдЧ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдерд╛ред рдЗрд╕реЗ рд╕рд░реНрд╡рд░ 2016 рдорд╢реАрди рдкрд░ Powershell 7 рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди 1 рдХреЗ рд╕рд╛рде, рд╕рд╛рде рд╣реА Powershell 5.1 рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ 2012 R2 рдорд╢реАрди рдкрд░ рджреЗрдЦрд╛ред

function foo
{
    param(
        [switch]$testArg = $false
    )

    write-host "Test arg value: '$testArg'"
}

function bar
{
    foo <strong i="9">@Args</strong>
}

$testSplat = @{
    testArg = $false
}

write-host "#### Foo tests ####"

foo
foo -testArg:$true
foo -testArg:$false
foo <strong i="10">@testSplat</strong>

write-host "#### Bar tests ####"

bar
bar -testArg:$true
bar -testArg:$false
bar <strong i="11">@testSplat</strong>

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

рдиреЛрдЯ: рд╡рд┐рдЪрд╛рд░рд╛рдзреАрди рдЯреЛрдХрди, рдЬреИрд╕реЗ - рдлреВ: рдмрд╛рд░ рдирд╛рдорд┐рдд рдкрд╛рд╡рд░рд╢реЗрд▓ рддрд░реНрдХреЛрдВ рдХреА рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ,

@ mklement0 рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ #6292 рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ, рдЗрди _are_ рдиреЗ PowerShell рддрд░реНрдХреЛрдВ рдХрд╛ рдирд╛рдо рджрд┐рдпрд╛ рд╣реИред рд╣рдореЗрд╢рд╛ред рд╕рдВрдХрд▓рди рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рд▓рдВрдмреЗ рд╕рдордп рдмрд╛рдж рдкреИрд░рд╛рдореАрдЯрд░ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреА рдЬрд╛рддреА рд╣реИред рдЕрдм рд╕рдВрдХрд▓рд┐рдд рдПрдПрд╕рдЯреА рдореЗрдВ, -foo: рдХреЗ рдЯреЛрдХрди рдореЗрдВ рдПрдХ рдзреНрд╡рдЬ рд╣реИ рдЬреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЛрдИ рд╕реНрдерд╛рди рдирд╣реАрдВ рдерд╛ред NativeCommandParameterBinder рдЗрд╕ рдПрдПрд╕рдЯреА рддрддреНрд╡ рдХреЛ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрдЦрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдзреНрд╡рдЬ рд╕реЗрдЯ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдлрд┐рд░ рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рддрд░реНрдХ рдХреЛ рдЙрдирдХреЗ рдмреАрдЪ рдХреЛрдИ рд╕реНрдерд╛рди рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдПрдХ рд╕реНрдерд╛рди рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрд░реНрдХ рд╢рд╛рдмреНрджрд┐рдХ рд╣реЛрдВ (рдпрд╛рдиреА NativeCommandParameter рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдПрдПрд╕рдЯреА рддрдХ рдкрд╣реБрдВрдЪ рдереА)ред рдмрдВрдЯрд╡рд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рддрд░реНрдХ рдореВрд▓реНрдп рд╣реИрдВ, рд╢рд╛рдмреНрджрд┐рдХ рддрд░реНрдХ рдирд╣реАрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рд╕реНрдерд╛рди рдорд┐рд▓рддрд╛ рд╣реИред

рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ "рдиреЛрд╕реНрдкреЗрд╕" рдЯреЛрдХрди рдЧреБрдг рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рдкрд░ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдореЗрдВ рдкреНрд░рдЪрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реИред NativeCommandParameterBinder рддрдм рдЗрд╕ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЗрд╕рдХреЗ arg рд╕рд░рдгреА рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд╛рдпрдж рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рд╕реЛрдЪрдиреЗ рд▓рд╛рдпрдХ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЕрдиреНрдп рдорд╛рдорд▓реЗ рд╣реИрдВ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ * рдирд┐рдХреНрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЗ) рдЬрд┐рдиреНрд╣реЗрдВ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

6492 (рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ) рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ @args рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рднреА рдкрд╛рд╡рд░рд╢реЗрд▓ рдлрд╝рдВрдХреНрд╢рди (рди рдХреЗрд╡рд▓ рдмрд╛рд╣рд░реА рдкреНрд░реЛрдЧреНрд░рд╛рдо) рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ:

рдЙрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╕рдВрднрд╡рддрдГ рдФрд░ рднреА рдкреЗрдЪреАрджрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдБ рдЕрдкреЗрдХреНрд╖рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдирд╛рдорд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЙрдирдХреЗ рдореВрд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рд░реЗрдкреЛ рд╣реИ:

function b {
  Param
  (
      [Switch] $p1,
      [int] $p2,
      $rest
  )
  "`$p1: [$p1]"
  "`$p2: [$p2]"
  "`$rest: [$rest]"
}

& { b <strong i="9">@args</strong> } -p1:$false 666
$p1: [True]  # `-p1:` was interpreted as just `-p1`
$p2: [0]      # `$false`, as a separate argument, was coerced to [int] 0
$rest: [666] # what was meant to be the 2nd argument was passed as the 3rd

рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб - рдФрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди - рд░рд┐рд▓реЗрдЗрдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕рдорд╛рди param() рдмреНрд▓реЙрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдФрд░ @PSBoundParameters рд╕рд╛рде рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╣реИред

рдореИрдВрдиреЗ рдЕрднреА рдкрд┐рдЫрд▓реЗ рд╣рдлреНрддреЗ рдпрд╛ рддреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╕рд╛рде рдХреБрд╢реНрддреА рдмрд┐рддрд╛рдИ рд╣реИред рдпрд╣ рдЯреНрд░реИрдХрд┐рдВрдЧ рдордЬрдмреВрд░ рд╕реНрд╡рд┐рдЪ рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рди рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдХреЗ рдмрд╛рдж (рдЬреИрд╕реЗ -foo:$bar ) рдХреЗ рд╕рд╛рде splatting рдХреЗ рдмрд╛рдж рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╕реЗрдЯ @Args , рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЕрд╕реНрдкрд╖реНрдЯ scoping рдореБрджреНрджрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЗрд░реЗ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдЬрдм рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХрд┐рд╕реА рднреА рд╕реНрд╡рд┐рдЪ рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рди рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдордЬрдмреВрд░ рдХрд░рдиреЗ рд╕реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ рдкрд╛рд╡рд░рд╣реЗрд▓ 7 рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди 1 рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде рднреА рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рд╡рд╣реА рдореБрджреНрджрд╛ рдЕрднреА рднреА рдЙрдарддрд╛ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдПрдХ рдЬреНрдЮрд╛рдд рд╕рдорд╕реНрдпрд╛ рд╣реЛрдиреЗ рдХреЗ рдПрдХ рд╡рд░реНрд╖ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ ...

рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╡рд╣ рдкрд░реАрдХреНрд╖рдг рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдмрдЧ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдерд╛ред рдЗрд╕реЗ рд╕рд░реНрд╡рд░ 2016 рдорд╢реАрди рдкрд░ Powershell 7 рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди 1 рдХреЗ рд╕рд╛рде, рд╕рд╛рде рд╣реА Powershell 5.1 рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ 2012 R2 рдорд╢реАрди рдкрд░ рджреЗрдЦрд╛ред

function foo
{
    param(
        [switch]$testArg = $false
    )

    write-host "Test arg value: '$testArg'"
}

function bar
{
    foo <strong i="9">@Args</strong>
}

$testSplat = @{
    testArg = $false
}

write-host "#### Foo tests ####"

foo
foo -testArg:$true
foo -testArg:$false
foo <strong i="10">@testSplat</strong>

write-host "#### Bar tests ####"

bar
bar -testArg:$true
bar -testArg:$false
bar <strong i="11">@testSplat</strong>
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

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

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

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

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

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

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