Windows PowerShell рдХреНрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХреНрдпрд╛ рдЦрд╛рддрд╛ рд╣реИ? рднрд╛рдЧ 3: рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛, cmdlets рдмрдирд╛рдирд╛



рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рджреВрд╕рд░рд╛ рд╣рд┐рд╕реНрд╕рд╛ PowerShell рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рдХрд╡рд░, рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рдХреИрд╕реЗ рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрд╕ рдкрд░ рд▓рд┐рдЦреЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рд▓рд╛рднрджрд╛рдпрдХ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдирд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ cmdlets рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИред

рд╡рд┐рд╖рдп - рд╕реВрдЪреА:


рд╕реНрдерд┐рддрд┐рдЧрдд рдкреИрд░рд╛рдореАрдЯрд░
рдкрд░рдо () рдмреНрд▓реЙрдХ
рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ
рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛
рд╢рд░реАрд░ рдХреА рд╕рдВрд░рдЪрдирд╛
рд╡рд┐рд╢реЗрд╖рддрд╛ [CmdletBinding ()] рдФрд░ рдЙрдиреНрдирдд рдлрд╝рдВрдХреНрд╢рди
рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдФрд░ cmdlets рдмрдирд╛рдирд╛

рд╕реНрдерд┐рддрд┐рдЧрдд рдорд╛рдкрджрдВрдб


рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ, рдЖрдк рд╕реНрдерд┐рддреАрдп рдорд╛рдкрджрдВрдбреЛрдВ (рддрд░реНрдХреЛрдВ) рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ , рдЬрд┐рдирдХреЗ рдорд╛рди рдмрд┐рд▓реНрдЯ-рдЗрди рд╡реИрд░рд┐рдПрдмрд▓ рдореЗрдВ $ args рдХреЛ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рдЗрд╕ рдПрдХ рдЖрдпрд╛рдореА рд╕рд░рдгреА рдХреЛ рдкреВрд░реНрд╡ рдШреЛрд╖рдгрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рджрд╛рдпрд░рд╛ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рддрдХ рд╕реАрдорд┐рдд рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдБ:

Write-Host " :" $args.count
Write-Host ":" $args


рдЫрд╡рд┐

рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ, рдкреЛрдЬрд┐рд╢рдирд▓ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕реА рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

function Print-Args {
    Write-Host " :" $args.count
    Write-Host " 0:" $args[0]
    Write-Host " 1:" $args[1] 
}

рдкреНрд░рд┐рдВрдЯ-рдЖрд░реНрдЧреНрд╕ "рдЬрд╝реАрд░реЛ" "рд╡рди"

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреНрд░рд┐рдВрдЯ-рдЖрд░реНрдЧреНрд╕ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рд╣рдо рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмреАрдЪ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдирд╣реАрдВ рд▓рдЧрд╛рддреЗ рд╣реИрдВ: рдпрд╣ рдПрдХ рд╕рд░рдгреА рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрдХреНрддрд┐рдЧрдд рдорд╛рди рдЬреЛ рдХрд┐ рдПрдХ рдЖрдпрд╛рдореА рд╕рд░рдгреА $ togs рдХреЛ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ - рдЗрд╕рдХрд╛ рджрд╛рдпрд░рд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢рд░реАрд░ рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рд╣реИред

рдЫрд╡рд┐

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

рдкрд░рдо рдмреНрд▓реЙрдХ ()


рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ, рдирд╛рдорд╛рдВрдХрд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдПрдХ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ, рд╣рдо рдПрдХ рддрд░рд╣ рд╕реЗ рдЙрдирдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА:

function test ($arg0, ..., $argN)
{
       
}

рдПрдХ рд╕рдорд╛рди рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреИрд░рд╛рдореАрдЯрд░ (рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдХреЛрд╖реНрдардХ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ - рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд╕рдВрдЧрддрд┐ рдкреИрджрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рд╢реЗрд▓ рднрд╛рд╖рд╛рдУрдВ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рд╣реИ: рд╢реЗрд▓ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рдиреЛрдВ рдХреЗ рдмреАрдЪ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИрдВред рдкрд░реАрдХреНрд╖рдг ($ value0) рдХреЙрд▓ рд╣реИ рднреА рд╕рд╣реА, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛрд╖реНрдардХ рдореЗрдВ рдкреВрд░реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ, рдпрд╛рдиреА рд╣реИ ($ Value0) рдХреЗ рдмрдЬрд╛рдп $ value0 ред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкрд╛рд╕ рд╣реЛрдиреЗ рд╕реЗ рдХрдИ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдХреЙрд▓рд┐рдВрдЧ рдЯреЗрд╕реНрдЯ ($ value0, $ value1) рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк , рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ - рджреЛ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдЬрд┐рд╕рдореЗрдВ $ value0 рдФрд░ $ value1 рдХрд╛ рдорд╛рди рд╣реЛрдЧрд╛ ред

Microsoft Corporation рдкрд░рдо () рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЕрдзрд┐рдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рди рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рднреА:

param (
    $arg0, $arg1
)

Write-Host $arg0 $arg1


рдЫрд╡рд┐

рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢рд░реАрд░ рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

function test {
     param (
           $arg0, $arg1
     )
}

рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреА рддрд░реНрдХ рд╕реВрдЪреА рдЫреЛрдЯреА рд╣реИ, рддреЛ рдкрд░рдо () рдмреНрд▓реЙрдХ рдХреЗрд╡рд▓ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рдкрдардиреАрдп рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдЕрдЪреНрдЫреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╢реИрд▓реА рдХрд╛ рдПрдХ рддрддреНрд╡ рд╣реИред

рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ


рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХреЛрдВ рдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╕рдордп, рдЙрдирдХреА рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рдордЬрдмреВрд░ рд╕реНрдерд╛рдкрдирд╛ рд╣реИ:

param([int]$arg0)

рдпрд╛

function test ([int]$arg0) {
}

рдЯрд╛рдЗрдк рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк [рдкреИрд░рд╛рдореАрдЯрд░ ()] рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

param(
    [parameter(Argument1=value1, Argument2=value2)]
    $ParameterName
)

рдЗрд╕рдХреА рдорджрдж рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ - рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡реЗ рдПрдХ рджреВрд╕рд░реЗ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВ:

param([parameter(Mandatory=$true)][int]$arg0)

рдпрд╛

function test ([parameter(Mandatory=$true)][int]$arg0) { 
}

рдпрд╛

function test {
          parameter([parameter(Mandatory=$true)][int]$arg0)
}


рдЫрд╡рд┐

рд╕реНрдерд┐рддрд┐ рдЖрдкрдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдЖрджреЗрд╢ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ рдШреЛрд╖рдгрд╛ рдХреЗ рдЖрджреЗрд╢ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ):

param(
                    [parameter(Mandatory=$true, Position=0)]
                    [int]
                    $arg0,

                    [parameter(Position=1)]
                    [string]
                    $arg1,

                    [parameter(Position=2)]
                    [array]
                    $arg2
)

[рдкреИрд░рд╛рдореАрдЯрд░ ()] рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдЕрдиреНрдп рддрд░реНрдХ рд╣реИрдВ, рдЬрд┐рд╕рдХреА рдкреВрд░реА рд╕реВрдЪреА Microsoft рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ ред рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╡рд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рдирдХреА рдорджрдж рд╕реЗ рдЖрдк рдЙрддреНрддреАрд░реНрдг рдореВрд▓реНрдпреЛрдВ рдХреЛ рдорд╛рдиреНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдирдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдХреБрдЫ рд╣реИрдВ:

[рдЙрдкрдирд╛рдо ()] рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдирд╛рдо рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ:

param(
    [parameter(Mandatory=$true)]
    [alias("ARG","ArgumentName")]
    [string[]]
    $arg0
)

рдХрд╛рд╕реНрдЯ рдСрдкрд░реЗрдЯрд░ [рд╕реНрдЯреНрд░рд┐рдВрдЧ []] рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рди рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рд░рдгреА рд╣реИред

[AllowNull ()] рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ $ null рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

param(
    [parameter(Mandatory=$true)]
    [AllowNull()]
    [string]
    $arg0
)

[AllowEmptyString ()] рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

param(
    [parameter(Mandatory=$true)]
    [AllowEmptyString()]
    [string]
    $arg0
)

[AllowEmptyCollection ()] рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЦрд╛рд▓реА рд╕рд░рдгреА рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

param(
    [parameter(Mandatory=$true)]
    [AllowEmptyCollection()]
    [string[]]
    $arg0
)

[ValidatePattern ()] рд╕рддреНрдпрд╛рдкрди рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП:

param(
    [parameter(Mandatory=$true)]
    [ValidatePattern("[0-9][0-9][0-9][0-9]")]
    [string[]]
    $arg0
)

[ValidateLength ()] рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рд▓рдВрдмрд╛рдИ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ:

param(
    [parameter(Mandatory=$true)]
    [ValidateLength(1,10)]
    [string]
    $arg0
)

рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛


рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдкрд╣рд▓реЗ рд▓реЗрдЦ рдореЗрдВ , рд╣рдордиреЗ рдПрдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ cmdlets рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреАред PowerShell рдореЗрдВ, cmdlets рдФрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ (рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо) рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЗрдирдкреБрдЯ рдкрд░ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЧреЗрдЯ-рд╣реЗрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рдПрдХ cmdlets рдХреЛ рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ:

Get-Help Stop-Process -Parameter Name


рдЫрд╡рд┐

рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЖрдк рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рдиреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИрдВ (ByValue рдФрд░ / рдпрд╛ ByPropertyName)ред рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдкрд╛рдЗрдк рд▓рд╛рдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдмрд╢рд░реНрддреЗ рдХрд┐ рдЗрд╕рдХрд╛ рдкреНрд░рдХрд╛рд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реЛред рджреВрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдореВрд▓реНрдп рдЖрдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБ рдХреА рд╕рдВрдкрддреНрддрд┐ рд╣реЛрдЧреА рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдирд╛рдо рдпрд╛ рдЙрдкрдирд╛рдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмреВрд▓рд┐рдпрди рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде [рдкреИрд░рд╛рдореАрдЯрд░ ()] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ValueFromPipeline рдФрд░ ValueFromPipelineByPropertyName, рдЬрд┐рд╕рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди $ рдЭреВрдард╛ рд╣реИ:

param(
    [parameter(Mandatory=$true,
    ValueFromPipeline=$true)]
    [string[]]
    $Name
)

рдпрд╛

param(
    [parameter(Mandatory=$true,
    ValueFromPipelineByPropertyName=$true)]
    [string[]]
    $Name
)

ValueFromPipelineByPropertyName рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдорддреМрд░ рдкрд░ рдХрдИ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдХреЛрдИ рднреНрд░рдо рди рд╣реЛ, рдФрд░ рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ ValueFromPipeline рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ:

param(
    [parameter(Mandatory=$true,
    ValueFromPipeline=$true,
    ValueFromPipelineByPropertyName=$true)]
    [string[]]
    $Name
)

Write-Host $Name


рдЫрд╡рд┐

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

рд╢рд░реАрд░ рдХреА рд╕рдВрд░рдЪрдирд╛


PowerShell рдореЗрдВ, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдмреНрд░реИрдХреЗрдЯреНрд╕ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХреЛрдб рдХреЗ рддреАрди рд╡реИрдХрд▓реНрдкрд┐рдХ рдмреНрд▓реЙрдХ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ - рд╢реБрд░реБрдЖрдд, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдФрд░ рдЕрдВрддред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

function test
{
   param()
   begin {}
   process {}
   end {}
}

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

function test
{

    param(
        [Parameter(ValueFromPipeline)]
        [string[]]
        $Param1,

        [string]$Param2
    )

    begin
    {
        Write-Host " Begin"
        Write-Host "       ( pipeline):" $Param1
        Write-Host "       ( ):" $Param2
    }

    process {
        Write-Host " Process"
        Write-Host "       ( pipeline):" $Param1
        Write-Host "       ( ):" $Param2
    }

    end
    {
        Write-Host " End"
        Write-Host "       ( pipeline):" $Param1
        Write-Host "       ( ):" $Param2
    }
}

'рдПрдХ', 'рджреЛ', 'рддреАрди' | рдкрд░реАрдХреНрд╖рдг -рдкрд░рд╛рдо 2 'рдЪрд╛рд░'

рдЫрд╡рд┐

[CmdletBinding ()] рд╡рд┐рд╢реЗрд╖рддрд╛ рдФрд░ рдЙрдиреНрдирдд рдХрд╛рд░реНрдп


"рдЙрдиреНрдирдд" рдлрд╝рдВрдХреНрд╢рди (рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдЦреНрддреА рд╕реЗ рдмреЛрд▓рдирд╛) рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк [ CmdletBinding () ] рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣ рдЖрдкрдХреЛ Visual Studio рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдмрд╛рдЗрдирд░реА cmdlets рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЙрдиреНрдирдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ .NET рдХреЛрд░ рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИ, рд╣рдо рдЙрди рдкрд░ рд░реЛрдХ рджреЗрдВрдЧреЗ:

function <Name>
{
    [CmdletBinding(ConfirmImpact=<String>,
    DefaultParameterSetName=<String>,
    HelpURI=<URI>,
    SupportsPaging=<Boolean>,
    SupportsShouldProcess=<Boolean>,
    PositionalBinding=<Boolean>)]

    Param ()

    Begin{}
    Process{}
    End{}
}

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, [CmdletBinding ()] рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ CmdletBindingAttribute рд╡рд░реНрдЧ рдХреЗ рдПрдХ рдирдП рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЖрд░рдВрдн рдХрд░рддрд╛ рд╣реИ , рдЬрд┐рд╕рдореЗрдВ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдирдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг Microsoft рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рд╣реИ ред CmdletBinding рд╡рд┐рд╢реЗрд╖рддрд╛ рдЖрдкрдХреЛ рдЙрдиреНрдирдд рдлрд╝рдВрдХреНрд╢рди рдХреА рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ: -Confirm рдФрд░ -WhatIf (SupportsShouldProcess рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ), -Force, -Verbose рдФрд░ -Dugug рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕реНрдерд┐рддреАрдп рдкреИрд░рд╛рдореАрдЯрд░ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдЧреЗ рд╣рдо рд╡рд┐рд╢реЗрд╖ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред -Force

рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;

-рдХреНрдпрд╛ рд╣реЛ рдЕрдЧрд░рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди (рдХрдорд╛рдВрдб) рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЙрдиреНрдЪ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдирд┐рдХрд╛рд▓реЗрдВ-рдЖрдЗрдЯрдо C: \ Windows \ notepad.exe -WhatIf

рдЫрд╡рд┐

-Confirm рдХреЛ рдкреБрд╖реНрдЯрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

function Delete-File {
[CmdletBinding(
    ConfirmImpact = 'High',
    SupportsShouldProcess = $true
)]
    param(
        [string]$File,
        [switch]$Force
    )
    if ($Force -or $PSCmdlet.ShouldProcess($File,"Delete file")) {
        Remove-Item $File
    }
}


рдЫрд╡рд┐

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП -WhatIf рдФрд░ / рдпрд╛ -Confirm, рдХрдВрдзреЗ рдХреА рд╡рд┐рдзрд┐ (SupportsShouldProcess = $ true) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдпрд╛ рддреЛ рдХрдорд╛рдВрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ рдпрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИред рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП -Force рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг, рд╣рдо рдЗрд╕реЗ IF рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рд░рдЦрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, -рдУрдЖрд░ рдСрдкрд░реЗрдЯрд░ рдХреЗ рдмрд╛рдИрдВ рдУрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдЕрдЧрд░ рдпрд╣ рд╕рдЪ рд╣реИ, рддреЛ рдкрд░реАрдХреНрд╖рдг рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ - рдХрдВрдзреЗрдкреНрд░реЛрд╕реЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, [CmdletBinding ()] рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ, рд╣рдордиреЗ ConfirmImpact рддрд░реНрдХ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛, рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХреЛрдб рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЗ рд╕реНрддрд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ -Confirm рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВрдбрд▓рд░ рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣ рддрд░реНрдХ рдирд┐рдореНрди рдорд╛рди рд▓реЗ рд╕рдХрддрд╛ рд╣реИ:

рдХреЛрдИ рднреА рдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ - рдкреБрд╖реНрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рднрд▓реЗ рд╣реА -Confirm рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рд╣реЛред

рдХрдо - рдлрд╝рдВрдХреНрд╢рди рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдереЛрдбрд╝рд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рд╣рд╛рдирд┐ рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬреЛрдЦрд┐рдо рдкреИрджрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдордзреНрдпрдо - рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдбреЗрдЯрд╛ рд╣рд╛рдирд┐ рдХреЗ рдХрдо рдЬреЛрдЦрд┐рдо рдХреЗ рд╕рд╛рде рдордзреНрдпрдо рдЬреЛрдЦрд┐рдоред

рдЙрдЪреНрдЪ - рдХреЛрдб рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдбреЗрдЯрд╛ рд╣рд╛рдирд┐ рдХрд╛ рдПрдХ рдЙрдЪреНрдЪ рдЬреЛрдЦрд┐рдо рдмрдирд╛рддрд╛ рд╣реИред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, PowerShell рд╕рддреНрд░ рдХреЗ рд▓рд┐рдП, рдПрдХреНрд╕рдкреЛрдЬрд╝рд░ рд╕реНрддрд░ рдХреЛ рдЙрдЪреНрдЪ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп $ ConfirmPreference рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдХреЛрдб рдХрд╛ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╕рдорд╛рди рдпрд╛ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХрд╛ рдкреНрд░рднрд╛рд╡ рд╣реИ, рддреЛ рдПрдХ рдкреБрд╖реНрдЯрд┐рдХрд░рдг рдЕрдиреБрд░реЛрдз рд╣рдореЗрд╢рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╡рд┐рдХрд▓реНрдк -Verbose рдФрд░ -Debugрдбрд┐рдмрдЧрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдПрдХ рдЕрдЪреНрдЫреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╢реИрд▓реА рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ (рд░рд╛рдЗрдЯ-рд╣реЛрд╕реНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рдУ, рдЙрдиреНрдирдд рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ)ред рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рдЧрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ - рд╡рд┐рд╕реНрддреГрдд рдбреАрдмрдЧрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реАред рдпрд╣ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред -Verbose рдФрд░ -Debug рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЗрд╕ рддрд░рд╣ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

function Get-Something {
[CmdletBinding()]
    param()
    if ($PSBoundParameters.Verbose) {$VerbosePreference = "Continue"}
    if ($PSBoundParameters.Debug) {$DebugPreference = "Continue"}
    Write-Verbose "Type some verbose information"
    Write-Debug "Type some debug information"
}

рд╡рд┐рд╢реЗрд╖ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ $ PSBoundParameters рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, $ VerbosePreference рдФрд░ $ DebugPreference рдХреЗ рдорд╛рди 'SilentlyContinue' рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рднреА рдбрд┐рдмрдЧрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧреА - рдЙрдиреНрд╣реЗрдВ 'рдЬрд╛рд░реА рд░рдЦреЗрдВ' рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбреНрдпреВрд▓ рдФрд░ Cmdlet рдирд┐рд░реНрдорд╛рдг


рдЪрд▓реЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ cmdlets рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпреЗ рдЙрдиреНрдирдд рдХрд╛рд░реНрдп рд╣реИрдВ рдЬреЛ рддрдерд╛рдХрдерд┐рдд рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбреНрдпреВрд▓ - рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдкрд╛рда рдлрд╝рд╛рдЗрд▓реЗрдВ .psm1ред рд╡реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ PSModulePath рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВред рдЖрдк рдирд┐рдореНрди рдЖрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рдкрде рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

Get-ChildItem Env: \ PSModulePath | рдлрд╝реЙрд░реНрдореЗрдЯ-рдЯреЗрдмрд▓ -рдСрдЯреЛрд╕рд╛рдЗрдЬрд╝

рдорд╛рдирдХ рд╕реЗрдЯ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

C: \ Users \% рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо% \ Documents \ WindowsPowerShell \ Modules
C: \ Program Files \ WindowsPowerShell \ Modules
C: \ Windows's System32 \ WindowsPowerShell \ v1.0 \ Modules

рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд Delete-File рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде ModuleName.psm1 рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕рдореЗрдВ] C: \ Users \% рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо% \ Documents \ WindowsPowerShell \ Module \ ModuleNameред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо .psm1 рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдзрд╛рд░ рдирд╛рдо (рдмрд┐рдирд╛) рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдЗрдВрдкреЛрд░реНрдЯ-рдореЙрдбреНрдпреВрд▓ рдореЙрдбреНрдпреВрд▓ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж , рдбрд┐рд▓реАрдЯ-рдлрд╛рдЗрд▓ рдлрд╝рдВрдХреНрд╢рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЪреВрдВрдХрд┐ рдпрд╣ рдЙрдиреНрдирдд рд╣реИ, рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдпрд╣ рд╕рдорд╛рди cmdlet рд╣реИред

рдЫрд╡рд┐

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЬрд╛рдВрдЪ рдХреА рд╣реИред рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдЕрдЧрд▓рд╛ рднрд╛рдЧ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реЛрдЧрд╛ред

рднрд╛рдЧ 1: Windows PowerShell рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИ
2: Windows PowerShell
4: ,



All Articles