рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рд▓реЗрдЦ "рдлрд╝рдВрдХреНрд╢рдирд▓ рдкреЙрд╡рд░рд╢реЗрд▓ рд╡рд┐рдж рдХреНрд▓рд╛рд╕реЗрд╕" рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдБ ред
рдореИрдВ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреНрд░рд┐рд╕реНрдЯреЛрдлрд░ рдХреБрдПрдЪ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдСрдХреНрд╕реАрдореЛрд░рди рдирд╣реАрдВ рд╣реИред
рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдФрд░ рдлрд╝рдВрдХреНрд╢рдирд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреНрд░рддрд┐рдорд╛рди рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдЕрдЬреАрдм рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рджреЛрдиреЛрдВ рдкреЙрд╡рд░реНрд╕ рдореЗрдВ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред рд▓рдЧрднрдЧ рд╕рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ, рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдФрд░ рдирд╣реАрдВ, рдирд╛рдо рдФрд░ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдмрдВрдзрди рдХреЗ рд╕рд╛рдзрди рд╣реИрдВ; рдХрдХреНрд╖рд╛рдПрдВ, рдЬреИрд╕реЗ рд╕рдВрд░рдЪрдирд╛ рдФрд░ рд░рд┐рдХреЙрд░реНрдб, рдХреЗрд╡рд▓ рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред рдпрджрд┐ рд╣рдо рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдирд╛рдо рдФрд░ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рд░рд╛рд╕рдд, рдмрд╣реБрд░реВрдкрддрд╛, рдпрд╛ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ "рднрд╛рд░реА" рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдЬрдЯрд┐рд▓ рдХрд┐рдП рдмрд┐рдирд╛ рдЙрдирдХрд╛ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рдХрд╛рд░ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рддрд░реАрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░, рд╣рдо рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреЛрдб рдХреЛ рд╕рдореГрджреНрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЬрд╛рджреВ рдХрд╛ рдЬрд╛рджреВ
рдкреЙрд╡рд░реНрд╕рд╢реЗрд▓ рдореЗрдВ рдХрд╛рд╕реНрдЯ рд╕рдмрд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЬрдм рдЖрдк рдПрдХ рдореВрд▓реНрдп рдбрд╛рд▓рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЖрд░рдВрдн рдФрд░ рд╕рддреНрдпрд╛рдкрди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рдХреНрд╖рдорддрд╛ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, [xml] рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХрд╛рд╕реНрдЯ рдЗрд╕реЗ рдкрд╛рд░реНрд╕рд░ рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рдПрдЧрд╛ рдФрд░ рдПрдХ рдкреВрд░реНрдг xml рдкреЗрдбрд╝ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред рд╣рдо рдПрдХ рд╣реА рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХрд╕реНрдЯрдо рд╣реИрд╢рдЯреИрдм
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдЕрдкрдиреЗ рд╡рд░реНрдЧ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╣реИрд╢ рдЯреЗрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕реЗ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреИрдЯрд░реНрди рдХрд╛ рдкреВрд░рд╛ рд▓рд╛рдн рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рддреНрдпрд╛рдкрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдпрд╛рдж рд░рдЦреЗрдВред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рд╣рдо рд╡рд░реНрдЧ рдХреЗ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ рднреА рдЧрд╣рд░рд╛ рдЖрд░рдВрднреАрдХрд░рдг рдФрд░ рд╕рддреНрдпрд╛рдкрди рддрд░реНрдХ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
class Cluster { [ValidatePattern("^[Az]+$")] [string] $Service [ValidateSet("TEST", "STAGE", "CANARY", "PROD")] [string] $FlightingRing [ValidateSet("EastUS", "WestUS", "NorthEurope")] [string] $Region [ValidateRange(0, 255)] [int] $Index } [Cluster]@{ Service = "MyService" FlightingRing = "PROD" Region = "EastUS" Index = 2 }
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд▓рд╛рдХрд╛рд░реЛрдВ рдХреЛ рдПрдХ рд╕рд╛рдл рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИред рдпрджрд┐ рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рдЗрди рд╣реИрд╢ рдЯреЗрдмрд▓ рдХреЛ рдПрдХ рдХрдХреНрд╖рд╛ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ рддреЛ рдлреЙрд░реНрдореЗрдЯ-рдЯреЗрдмрд▓ рдореЗрдВ рджрд┐рдП рдЧрдП рдХреНрд▓рд╕реНрдЯрд░ рд╣реИрд╢ рдЯреЗрдмрд▓ рд╕рд░рдгреА рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред рд╡рд░реНрдЧ рдХреЗ рдЧреБрдг рд╣рдореЗрд╢рд╛ рдЙрд╕ рдХреНрд░рдо рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рд╡рд╣рд╛рдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдЙрди рд╕рднреА рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рдордиреЗ рдЫрд┐рдкреЗ рд╣реБрдП рдХреАрд╡рд░реНрдб рдХреЛ рдЬреЛрдбрд╝рдирд╛ рди рднреВрд▓реЗрдВ, рдЬреЛ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрдиреЗ рдЪрд╛рд╣рд┐рдПред

рдХрд╕реНрдЯрдо рдореВрд▓реНрдп
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рд╣реИ, рддреЛ рдЕрдкрдиреЗ рд╡рд░реНрдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХрд░рдирд╛ рдЖрдкрдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдЗрд╕ рдореВрд▓реНрдп рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЖрд░рдВрднреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
class Cluster { [ValidatePattern("^[Az]+$")] [string] $Service [ValidateSet("TEST", "STAGE", "CANARY", "PROD")] [string] $FlightingRing [ValidateSet("EastUS", "WestUS", "NorthEurope")] [string] $Region [ValidateRange(0, 255)] [int] $Index Cluster([string] $id) { $this.Service, $this.FlightingRing, $this.Region, $this.Index = $id -split "-" } } [Cluster]"MyService-PROD-EastUS-2"
рдХрд╕реНрдЯрдо рд▓рд╛рдЗрди
рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рддрд░реНрдХ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ [рд╕реНрдЯреНрд░рд┐рдВрдЧ] ToString () рдХреЛ рднреА рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХреНрд╖реЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред
class Cluster { [ValidatePattern("^[Az]+$")] [string] $Service [ValidateSet("TEST", "STAGE", "CANARY", "PROD")] [string] $FlightingRing [ValidateSet("EastUS", "WestUS", "NorthEurope")] [string] $Region [ValidateRange(0, 255)] [int] $Index [string] ToString() { return $this.Service, $this.FlightingRing, $this.Region, $this.Index -join "-" } } $cluster = [Cluster]@{ Service = "MyService" FlightingRing = "PROD" Region = "EastUS" Index = 2 } Write-Host "We just created a model for '$cluster'"
рдХрд╕реНрдЯрдо рдХреНрд░рдордмрджреНрдз рдЙрджрд╛рд╣рд░рдг
рдХрд╛рд╕реНрдЯ рд╕реБрд░рдХреНрд╖рд┐рдд deserialization рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ рдпрджрд┐ рдбреЗрдЯрд╛ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╣рдорд╛рд░реЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
рдЖрдкрдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рдореЗрдВ рдЬрд╛рддрд┐рдпрд╛рдВ
рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкрд╣рд▓реЗ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдкрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рдзрд╛рд░рдгрд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рд╡рд░реНрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЯрд╛рдЗрдкрд┐рдВрдЧ рд░реВрдкрд╛рдВрддрд░рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред
рдХреНрдпрд╛ Powershell рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдореИрдВ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ?
рдХрдИ рд▓реЛрдЧ рдЬреЛ C # рд╕реЗ рдЖрддреЗ рд╣реИрдВ рдпрд╛ рдПрдХ рд╕рдорд╛рди рдЕрддреАрдд рдХреЗ рд╕рд╛рде Powershell рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЬреЛ C # рдХреЗ рд╕рдорд╛рди рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ, рдЖрдк рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдирд┐рдЪреНрдЫреБрдХ рд╣реИрдВ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рднрд╛рд░реА рд░реВрдк рд╕реЗ рдбреВрдм рдЬрд╛рдиреЗ рдпрд╛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдмреЗрд╣рддрд░ рд╕рдордЭ рдХреЗ рд▓рд╛рдн рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ (!), рдЬрд╣рд╛рдВ-рдСрдмреНрдЬреЗрдХреНрдЯ, рдлреЙрд░рдПрдЪ-рдСрдмреНрдЬреЗрдХреНрдЯ, рд╕рд┐рд▓реЗрдХреНрдЯ-рдСрдмреНрдЬреЗрдХреНрдЯ, рдЧреНрд░реБрдк-рдСрдмреНрдЬреЗрдХреНрдЯ, рд╕реЙрд░реНрдЯ-рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓рдиреЗ рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╢реИрд▓реА рд╣реИ, рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╢реИрд▓реА рдореЗрдВ рдкреЙрд╡рд░реНрд╕рд╢реЗрд▓ рдХрдХреНрд╖рд╛рдПрдВред
рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЙрдкрдпреЛрдЧ
рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЬрд╛рддрд┐рдпрд╛рдВ, рдХреЗрд╡рд▓ рджреЛ рдбреЛрдореЗрди рдХреЗ рдмреАрдЪ рдореИрдкрд┐рдВрдЧ рдХрд░ рд░рд╣реА рд╣реИрдВред рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ, рдЖрдк ForEach-Object рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЛ рдореИрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдиреЛрдб рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рд╣рд░ рдмрд╛рд░ рдбреЗрдЯрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд╕реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╣рдореЗрдВ рдЙрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рдХреЛрдб рдирд╣реАрдВ рд▓рд┐рдЦрдиреЗ рджреЗрддрд╛ рд╣реИред рдирддреАрдЬрддрди, рд╣рдорд╛рд░реА рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдбрд┐рдХреНрд▓реЗрдХреНрдЯрд┐рд╡ рдбреЗрдЯрд╛ рдХреНрд╡реЗрд░реА рдФрд░ рдПрдХрддреНрд░реАрдХрд░рдг рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ, рдЬрдмрдХрд┐ рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛рдПрдВ рдбреЗрдЯрд╛ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдФрд░ рд╕рддреНрдпрд╛рдкрди рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрддреА рд╣реИрдВред
рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрдХреНрд╖рд╛ рдкреИрдХреЗрдЬрд┐рдВрдЧ
рдХреБрдЫ рднреА рдЙрддрдирд╛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рд▓рдЧрддрд╛ рд╣реИ
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдп рдпрд╛ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдпрд╛рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рд▓реЗрдХрд┐рди рдХреБрдЫ рддрд░рдХреАрдмреЗрдВ рд╣реИрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреА рдХрдХреНрд╖рд╛рдПрдВ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВ ред/my-classes.ps1
рдЖрдк рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЦреЛрдж рд╕рдХрддреЗ рд╣реИрдВ:ред ./my-classes.ps1ред рдпрд╣ рдЖрдкрдХреЗ рд╡рд░реНрддрдорд╛рди рджрд╛рдпрд░реЗ рдореЗрдВ my-classes.ps1 рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдЧрд╛ред
рдЖрдк рдПрдХ Powershell рдореЙрдбреНрдпреВрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЗ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ API (cmdlets) рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкреНрд░рдХрдЯ рд╣реЛрдиреЗ рдХреЗ рд╕рдордп рдЪрд░ ScriptsToProcess = "./my-classes.ps1" рдХреЛ рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ ://--classes.ps1 рдЖрдкрдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдЧрд╛ред ред
рдЖрдк рдЬреЛ рднреА рд╡рд┐рдХрд▓реНрдк рдЪреБрдирддреЗ рд╣реИрдВ, рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдкреЙрд╡рд░реНрд╕рд╢реЗрд▓ рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЬрдЧрд╣реЛрдВ рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдерд╛рдиреЛрдВ рд╕реЗ рд╕рдорд╛рди рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рджреЛ рд╕рдорд╛рди рдХрдХреНрд╖рд╛рдПрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рдЪрд▓рдиреЗ рдХрд╛ рдЬреЛрдЦрд┐рдо рдЙрдард╛рддреЗ рд╣реИрдВред
рдЖрдЧреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛
рдЯрд╛рдЗрдк рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреА рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдХрднреА рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рдордиреЗ рди рд▓рд╛рдПрдБред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╡рд░реНрдЧ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ рдЬреЛ рд╕реАрдзреЗ рд╡рд░реНрдЧ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирдП-рдХреНрд▓рд╕реНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрдХреВрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдЧрд╛ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рд▓реМрдЯрд╛рдПрдЧрд╛ред
class Cluster { [ValidatePattern("^[Az]+$")] [string] $Service [ValidateSet("TEST", "STAGE", "CANARY", "PROD")] [string] $FlightingRing [ValidateSet("EastUS", "WestUS", "NorthEurope")] [string] $Region [ValidateRange(0, 255)] [int] $Index } function New-Cluster { [OutputType([Cluster])] Param( [Parameter(Mandatory, ParameterSetName = "Id", Position = 0)] [ValidateNotNullOrEmpty()] [string] $Id, [Parameter(Mandatory, ParameterSetName = "Components")] [string] $Service, [Parameter(Mandatory, ParameterSetName = "Components")] [string] $FlightingRing, [Parameter(Mandatory, ParameterSetName = "Components")] [string] $Region, [Parameter(Mandatory, ParameterSetName = "Components")] [int] $Index ) if ($Id) { $Service, $FlightingRing, $Region, $Index = $Id -split "-" } [Cluster]@{ Service = $Service FlightingRing = $FlightingRing Region = $Region Index = $Index } } Export-ModuleMember New-Cluster
рдФрд░ рдХреНрдпрд╛ рдкрдврд╝рдирд╛ рд╣реИ
рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рд░рдХреНрд╖рд╛рддреНрдордХ PowerShell
PowerShell рдореЗрдВ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ