เดนเต เดนเดฌเตผ! เดฒเตเดเดจเดคเตเดคเดฟเดจเตเดฑเต เดตเดฟเดตเตผเดคเตเดคเดจเด เดเดพเตป เดจเดฟเดเตเดเดณเตเดเต เดถเตเดฐเดฆเตเดงเดฏเดฟเตฝเดชเตเดชเตเดเตเดคเตเดคเตเดจเตเดจเต เดเตเดฐเดฟเดธเตเดฑเตเดฑเดซเตผ เดเตเดเตเดเต เดเดดเตเดคเดฟเดฏเดคเต.
เดเดฌเตเดเดเตเดฑเตเดฑเต-เดเดฑเดฟเดฏเดจเตเดฑเดกเต, เดซเดเตเดทเดฃเตฝ เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดเดเต เดฎเดพเดคเตเดเดเตพ เดชเดฐเดธเตเดชเดฐเด เดตเดฟเดฐเตเดฆเตเดงเดฎเดพเดฏเดฟ เดคเตเดจเตเดจเดพเดฎเตเดเตเดเดฟเดฒเตเด, เดชเดตเตผเดทเตเดฒเตเดฒเดฟเตฝ เดฐเดฃเตเดเตเด เดเดฐเตเดชเตเดฒเต เดชเดฟเดจเตเดคเตเดฃเดฏเตเดเตเดเตเดจเตเดจเต. เดซเดเตเดทเดฃเตฝ เดเดฏเดพเดฒเตเด เด เดฒเตเดฒเดพเดคเตเดคเดคเตเดฎเดพเดฏ เดฎเดฟเดเตเดเดตเดพเดฑเตเด เดเดฒเตเดฒเดพ เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดเดเต เดญเดพเดทเดเดณเตเด เดตเดฟเดชเตเดฒเดฎเดพเดฏ เดจเตเดฏเดฟเด-เดตเดพเดฒเตเดฏเต เดฌเตเตปเดกเดฟเดเดเต เดตเดพเดเตเดฆเดพเดจเด เดเตเดฏเตเดฏเตเดจเตเดจเต; เดเดเดจเดเดณเตเด เดฑเตเดเตเดเตเตผเดกเตเดเดณเตเด เดชเตเดฒเตเดณเตเดณ เดเตเดฒเดพเดธเตเดเตพ เดเดฐเต เดธเดฎเตเดชเดจเด เดฎเดพเดคเตเดฐเดฎเดพเดฃเต. เดจเตเดฏเดฟเด-เดตเดพเดฒเตเดฏเต เดฌเตเตปเดกเดฟเดเดเดฟเดฒเตเดเตเดเต เดเตเดฒเดพเดธเตเดเดณเตเดเต เดเดชเดฏเตเดเด เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเตเดเตเดคเตเดคเตเดจเตเดจเดคเดฟเดฒเตเดเตเดฏเตเด เดชเดพเดฐเดฎเตเดชเดฐเตเดฏเด, เดชเตเดณเดฟเดฎเตเตผเดซเดฟเดธเด เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดฎเตเดฏเตเดเตเดเดฌเดฟเดฒเดฟเดฑเตเดฑเดฟ เดชเตเดฒเตเดณเตเดณ เดนเตเดตเดฟเดตเตเดฏเตเดฑเตเดฑเต เดเดฌเตเดเดเตเดฑเตเดฑเต-เดเดฑเดฟเดฏเดจเตเดฑเดกเต เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดเดเต เดเดถเดฏเดเตเดเตพ เดเดดเดฟเดตเดพเดเตเดเตเดจเตเดจเดคเดฟเดฒเตเดเตเดฏเตเด, เดจเดฎเตเดฎเตเดเต เดเตเดกเดฟเดจเต เดธเดเตเดเตเตผเดฃเตเดฃเดฎเดพเดเตเดเดพเดคเต เด เดตเดฏเตเดเต เดจเตเดเตเดเดเตเดเตพ เดจเดฎเตเดเตเดเต เดชเตเดฐเดฏเตเดเดจเดชเตเดชเตเดเตเดคเตเดคเดพเด. เดเตเดเดพเดคเต, เดฎเดพเดฑเตเดฑเดฎเดฟเดฒเตเดฒเดพเดคเตเดค เดคเดฐเด เดชเดฐเดฟเดตเตผเดคเตเดคเดจ เดฐเตเดคเดฟเดเตพ เดเตเตผเดเตเดเตเดจเตเดจเดคเดฟเดฒเตเดเต, เดเตเดฒเดพเดธเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฎเตเดฎเตเดเต เดซเดเตเดทเดฃเตฝ เดเตเดกเดฟเดจเต เดธเดฎเตเดชเตเดทเตเดเดฎเดพเดเตเดเดพเตป เดเดดเดฟเดฏเตเด.
เดเดพเดคเดฟ เดฎเดพเดจเตเดคเตเดฐเดฟเดเดค
เดชเดตเตผเดทเตเดฒเตเดฒเดฟเดฒเต เดเดฑเตเดฑเดตเตเด เดถเดเตเดคเดฎเดพเดฏ เดธเดตเดฟเดถเตเดทเดคเดเดณเดฟเตฝ เดเดจเตเดจเดพเดฃเต เดเดพเดธเตเดฑเตเดฑเตเดเตพ. เดจเดฟเดเตเดเตพ เดเดฐเต เดฎเตเดฒเตเดฏเด เดเดพเดธเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดฎเตเดชเตเตพ, เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดจเดฟเดเตเดเดณเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเดฟเดฒเตเดเตเดเต เดเตเตผเดเตเดเตเดจเตเดจ เดเดเดชเตเดฒเดฟเดธเดฟเดฑเตเดฑเต เดเดจเตเดทเตเดฏเดฒเตเดธเตเดทเดจเตเดฏเตเด เดตเดพเดฒเดฟเดกเตเดทเตป เดเดดเดฟเดตเตเดเดณเตเดฏเตเด เดจเดฟเดเตเดเตพ เดเดถเตเดฐเดฏเดฟเดเตเดเตเดจเตเดจเต. เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, [xml] เดฒเตเดเตเดเต เดเดฐเต เดธเตเดเตเดฐเดฟเดเดเต เดเดพเดธเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเต เดชเดพเดดเตโเดธเตผ เดเตเดกเดฟเดฒเตเดเต เด เดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดเดฏเตเด เดเดฐเต เดชเตเตผเดฃเตเดฃ XML เดเตเดฐเต เดธเตเดทเตเดเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด. เด เดคเต เดเดตเดถเตเดฏเดคเตเดคเดฟเดจเดพเดฏเดฟ เดจเดฎเตเดเตเดเต เดจเดฎเตเดฎเตเดเต เดเตเดกเดฟเตฝ เดเตเดฒเดพเดธเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเดพเด.
เดนเดพเดทเตโเดเตเดฌเดฟเดณเตเดเตพ เดเดพเดธเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเด
เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดเตบเดธเตเดเตเดฐเดเตเดฑเตเดฑเตผ เดเดฒเตเดฒเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเดณเตเดเต เดเตเดฒเดพเดธเต เดคเดฐเดคเตเดคเดฟเดฒเตเดเตเดเต เดนเดพเดทเต เดเตเดฌเดฟเตพ เดเดพเดธเตเดฑเตเดฑเต เดเตเดฏเตเดคเตเดเตเดฃเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เด เดคเต เดเตเดเดพเดคเต เดคเตเดเดฐเดพเด. เด เดชเดพเดฑเตเดฑเตเดฃเดฟเดจเตเดฑเต เดชเตเตผเดฃเตเดฃ เดชเตเดฐเดฏเตเดเดจเด เดจเตเดเตเดจเตเดจเดคเดฟเดจเต เดตเดพเดฒเดฟเดกเตเดทเตป เดเดเตเดฐเดฟเดฌเตเดฏเตเดเตเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเดพเตป เดฎเดฑเดเตเดเดฐเตเดคเต. เดเตเดเตเดคเตฝ เดเดดเดคเตเดคเดฟเดฒเตเดณเตเดณ เดเดจเตเดทเตเดฏเดฒเตเดธเตเดทเดจเตเด เดตเดพเดฒเดฟเดกเตเดทเตป เดฒเตเดเดฟเดเตเดเตเด เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดพเตป เดจเดฎเตเดเตเดเต เดเตเดชเตเดชเต เดเตเดฏเตเดค เดเตเดฒเดพเดธเต เดชเตเดฐเตเดชเตเดชเตผเดเตเดเดฟเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเดพเด.
class Cluster {
[ValidatePattern("^[A-z]+$")]
[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("^[A-z]+$")]
[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"เดฒเตเดจเดฟเตฝ เดเดพเดธเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเด
เดธเตเดเตเดฐเดฟเดเดเต เดเดจเตเดฑเตผเดชเตเดณเตเดทเตป เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเตเดชเตเดฒเต, เดเดฐเต เดธเตเดเตเดฐเดฟเดเดเดฟเดฒเต เดเดฌเตเดเดเตเดฑเตเดฑเดฟเดจเต เดชเตเดฐเดคเดฟเดจเดฟเดงเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฒเตเดเดฟเดเต เดจเดฟเตผเดตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดจเดฟเดเตเดเตพเดเตเดเต [string] เดเตเดฒเดพเดธเดฟเดจเตเดฑเต ToString() เดฐเตเดคเดฟ เด เดธเดพเดงเตเดตเดพเดเตเดเดพเดจเตเด เดเดดเดฟเดฏเตเด.
class Cluster {
[ValidatePattern("^[A-z]+$")]
[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'"เดธเตเดฐเดฟเดฏเดฒเตเดธเต เดเตเดฏเตเดค เดธเดเดญเดตเดเตเดเตพ เดเดพเดธเตเดฑเตเดฑเตเดเตเดฏเตเดฏเตเดจเตเดจเต
เดเดพเดธเตเดฑเตเดฑเต เดธเตเดฐเดเตเดทเดฟเดคเดฎเดพเดฏ เดกเตเดธเตเดฐเดฟเดฏเดฒเตเดธเตเดทเตป เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต. เดกเดพเดฑเตเดฑ เดเดเตเดเดณเตเดเต เดเตเดฒเดธเตเดฑเตเดฑเตผ เดธเตเดชเตเดธเดฟเดซเดฟเดเตเดเตเดทเตป เดชเดพเดฒเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ เดคเดพเดดเตเดฏเตเดณเตเดณ เดเดฆเดพเดนเดฐเดฃเดเตเดเตพ เดชเดฐเดพเดเดฏเดชเตเดชเตเดเตเด.
# ะะฐะปะธะดะฐัะธั ัะตัะธะฐะปะธะทะพะฒะฐะฝะฝัั
ะดะฐะฝะฝัั
[Cluster]$cluster = Get-Content "./my-cluster.json" | ConvertFrom-Json
[Cluster[]]$clusters = Import-Csv "./my-clusters.csv"เดจเดฟเดเตเดเดณเตเดเต เดซเดเตเดทเดฃเตฝ เดเตเดกเดฟเตฝ เดเดพเดธเตเดฑเตเดฑเตเดเตพ
เดซเดเตเดทเดฃเตฝ เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดเดฆเตเดฏเด เดกเดพเดฑเตเดฑเดพ เดเดเดจเดเดณเต เดจเดฟเตผเดตเดเดฟเดเตเดเตเดจเตเดจเต, เดคเตเดเตผเดจเตเดจเต เดฎเดพเดฑเตเดฑเดฎเดฟเดฒเตเดฒเดพเดคเตเดค เดกเดพเดฑเตเดฑเดพ เดเดเดจเดเดณเดฟเดฒเต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเดเตเดเดณเตเดเต เดเดฐเต เดถเตเดฐเตเดฃเดฟเดฏเดพเดฏเดฟ เดชเตเดฐเตเดเตเดฐเดพเด เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเต. เดตเดฟเดชเดฐเตเดคเดฎเดพเดฏ เดเดฐเต เดฎเดคเดฟเดชเตเดชเต เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเดฟเดเตเดเตเด, เดเตเดฒเดพเดธเตเดเตพ เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เด เดตเดฏเตเดเต เดคเดฐเด เดชเดฐเดฟเดตเตผเดคเตเดคเดจ เดฐเตเดคเดฟเดเตพ เดเดพเดฐเดฃเด เดซเดเตเดทเดฃเตฝ เดเตเดกเต เดเดดเตเดคเดพเตป เดธเดนเดพเดฏเดฟเดเตเดเตเดจเตเดจเต.
เดเดพเตป เดซเดเตเดทเดฃเตฝ เดชเดตเตผเดทเตเตฝ เดเดฃเต เดเดดเตเดคเตเดจเตเดจเดคเต?
เดธเดฟ# เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดธเดฎเดพเดจเดฎเดพเดฏ เดชเดถเตเดเดพเดคเตเดคเดฒเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดชเดฒเดฐเตเด เดชเดตเตผเดทเตเตฝ เดเดดเตเดคเตเดจเตเดจเต, เดเดคเต เดธเดฟ#-เดจเต เดธเดฎเดพเดจเดฎเดพเดฃเต. เด เดเตเดเดจเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเตเดเต, เดจเดฟเดเตเดเตพ เดซเดเตเดทเดฃเตฝ เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดเดเต เดเดถเดฏเดเตเดเตพ เดเดชเตเดเตเดทเดฟเดเตเดเตเดเดฏเตเด เดชเดตเตผเดทเตเดฒเดฟเตฝ เดเดฌเตเดเดเตเดฑเตเดฑเต-เดเดฑเดฟเดฏเดจเตเดฑเดกเต เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดเดเดฟเดฒเตเดเตเดเต เดเดดเดคเตเดคเดฟเตฝ เดเดฑเดเตเดเตเดเดฏเต เดซเดเตเดทเดฃเตฝ เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดเดเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเตเดเตเดคเดฒเดฑเดฟเดฏเตเดเดฏเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเต เดจเดฟเดเตเดเตพเดเตเดเต เดชเตเดฐเดฏเตเดเดจเดเดฐเดฎเดพเดเตเด.
เดชเตเดชเตเดชเตเดเตพ (|), Where-Object, ForEach-Object, Select-Object, Group-Object, Sort-Object เดฎเตเดคเดฒเดพเดฏเดต เดเดชเดฏเตเดเดฟเดเตเดเต เดฎเดพเดฑเตเดฑเดฎเดฟเดฒเตเดฒเดพเดคเตเดค เดกเดพเดฑเตเดฑ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดจเดฟเดเตเดเตพ เดตเดณเดฐเตเดฏเดงเดฟเดเด เดเดถเตเดฐเดฏเดฟเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เดเตเดเตเดคเตฝ เดซเดเตเดทเดฃเตฝ เดถเตเดฒเดฟเดฏเตเดฃเตเดเต, เดเตเดเดพเดคเต เดซเดเตเดทเดฃเตฝ-เดธเตเดฑเตเดฑเตเตฝ เดชเดตเตผเดทเตเตฝ เดเตเดฒเดพเดธเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเดเตเดเตพเดเตเดเต เดชเตเดฐเดฏเตเดเดจเด เดฒเดญเดฟเดเตเดเตเด.
เดเตเดฒเดพเดธเตเดเดณเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดชเดฐเดฎเดพเดฏ เดเดชเดฏเตเดเด
เดเดพเดธเตเดฑเตเดฑเตเดเตพ, เดเดฐเต เดฌเดฆเตฝ เดตเดพเดเตเดฏเดเดเดจ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเตเดฃเตเดเตเดเตเดเดฟเดฒเตเด, เดฐเดฃเตเดเต เดกเตเดฎเตเดฏเตโเดจเตเดเตพเดเตเดเดฟเดเดฏเดฟเดฒเตเดณเตเดณ เดเดฐเต เดฎเดพเดชเตเดชเดฟเดเดเต เดฎเดพเดคเตเดฐเดฎเดพเดฃเต. เดเดฐเต เดชเตเดชเตเดชเตโเดฒเตเดจเดฟเตฝ, ForEach-Object เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดฎเตเดฒเตเดฏเดเตเดเดณเตเดเต เดเดฐเต เดจเดฟเดฐ เดฎเดพเดชเตเดชเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด.
เดคเดพเดดเตเดฏเตเดณเตเดณ เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ, เดเดฐเต เดกเดพเดฑเตเดฑเด เดเดพเดธเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดฎเตเดชเตเดดเตเดฒเตเดฒเดพเด เดจเตเดกเต เดเตบเดธเตเดเตเดฐเดเตเดฑเตเดฑเตผ เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเดชเตเดชเตเดเตเดจเตเดจเต, เดเดคเต เดเดฃเตเดฏเดฎเดพเดฏ เด เดณเดตเดฟเดฒเตเดณเตเดณ เดเตเดกเดฟเดจเต เดเดฒเตเดฒเดพเดคเดพเดเตเดเตเดจเตเดจเต. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดเดเตเดเดณเตเดเต เดชเตเดชเตเดชเตโเดฒเตเตป เดกเดฟเดเตเดฒเดฑเตเดฑเตเดฑเตเดตเต เดกเดพเดฑเตเดฑ เดเตเดตเดฑเดฟเดเดเดฟเดฒเตเด เด เดเตเดฐเดเตเดทเดจเดฟเดฒเตเด เดถเตเดฐเดฆเตเดง เดเตเดจเตเดฆเตเดฐเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต, เด เดคเตเดธเดฎเดฏเด เดเดเตเดเดณเตเดเต เดเตเดฒเดพเดธเตเดเตพ เดกเดพเดฑเตเดฑ เดชเดพเดดเตโเดธเดฟเดเดเตเด เดตเดพเดฒเดฟเดกเตเดทเดจเตเด เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเตเดจเตเดจเต.
# ะัะธะผะตั ะบะพะผะฑะธะฝะธัะพะฒะฐะฝะธั ะบะปะฐััะพะฒ ั ะบะพะฝะฒะตะนะตัะฐะผะธ ะดะปั separation of concerns ะฒ ะบะพะฝะฒะตะนะตัะฐั
class Node {
[ValidateLength(3, 7)]
[string] $Name
[ValidateSet("INT", "PPE", "PROD")]
[string] $FlightingRing
[ValidateSet("EastUS", "WestUS", "NorthEurope", "WestEurope")]
[string] $Region
Node([string] $Name) {
$Name -match "([a-z]+)(INT|PPE|PROD)([a-z]+)"
$_, $this.Service, $this.FlightingRing, $this.Region = $Matches
$this.Name = $Name
}
}
class Datum {
[string] $Name
[int] $Value
[Node] $Computer
[int] Severity() {
$this.Name -match "[0-9]+$"
return $Matches[0]
}
}
Write-Host "Urgent Security Audit Issues:"
Import-Csv "./audit-results.csv" `
| ForEach-Object {[Datum]$_} `
| Where-Object Value -gt 0 `
| Group-Object {$_.Severity()} `
| Where-Object Name -lt 2 `
| ForEach-Object Group `
| ForEach-Object Computer `
| Where-Object FlightingRing -eq "PROD" `
| Sort-Object Name, Region -Uniqueเดชเตเดจเดฐเตเดชเดฏเตเดเดฟเดเตเดเดพเดตเตเดจเตเดจ เดชเดพเดเตเดเตเดเดฟเดเดเต
เดเดจเตเดจเตเด เดคเตเดจเตเดจเตเดจเตเดจเดคเตเดฐ เดจเดฒเตเดฒเดคเดฒเตเดฒ.
เดจเดฟเตผเดญเดพเดเตเดฏเดตเดถเดพเตฝ, เดซเดเดเตเดทเดจเตเดเดณเต เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเดณเต เดชเตเดฒเต เดฎเตเดกเตเดฏเตเดณเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดเตเดฒเดพเดธเตเดเตพ เดเดเตเดธเตเดชเตเตผเดเตเดเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ, เดชเดเตเดทเต เดเดฟเดฒ เดคเดจเตเดคเตเดฐเดเตเดเดณเตเดฃเตเดเต. เดจเดฟเดเตเดเดณเตเดเต เดเตเดฒเดพเดธเตเดเตพ ./my-classes.ps1 เดซเดฏเดฒเดฟเตฝ เดจเดฟเตผเดตเดเดฟเดเตเดเดฟเดเตเดเตเดฃเตเดเตเดจเตเดจเต เดชเดฑเดฏเดพเด.
เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดเตเดฒเดพเดธเต เดซเดฏเตฝ เดกเตเดเตเดเต เดธเตเดดเตโเดธเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด: ./my-classes.ps1. เดเดคเต เดจเดฟเดเตเดเดณเตเดเต เดจเดฟเดฒเดตเดฟเดฒเต เดธเตเดเตเดชเตเดชเดฟเตฝ my-classes.ps1 เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเตเดเดฏเตเด เด เดตเดฟเดเตเดฏเตเดณเตเดณ เดซเดฏเดฒเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดเดฒเตเดฒเดพ เดเตเดฒเดพเดธเตเดเดณเตเด เดจเดฟเตผเดตเดเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด.
เดจเดฟเดเตเดเดณเตเดเต เดเดฒเตเดฒเดพ เดเดทเตโเดเดพเดจเตเดธเตเดค API-เดเดณเตเด (cmdlets) เดเดฏเดฑเตเดฑเตเดฎเดคเดฟ เดเตเดฏเตเดฏเตเดจเตเดจ เดเดฐเต เดชเดตเตผเดทเตเตฝ เดฎเตเดกเตเดฏเตเตพ เดจเดฟเดเตเดเตพเดเตเดเต เดธเตเดทเตเดเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด, เดเตเดเดพเดคเต เดจเดฟเดเตเดเดณเตเดเต เดฎเตเดกเตเดฏเตเดณเดฟเดจเตเดฑเต เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเดฟเตฝ ScriptsToProcess = "./my-classes.ps1" เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดธเดเตเดเดฎเดพเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเดพเด, เด เดคเต เดซเดฒเด: ./my-classes.ps1 เดจเดฟเดเตเดเดณเตเดเต เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเดฟเตฝ เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเดชเตเดชเตเดเตเด.
เดจเดฟเดเตเดเตพ เดเดคเต เดเดชเตเดทเตป เดคเดฟเดฐเดเตเดเตเดเตเดคเตเดคเดพเดฒเตเด, เดตเตเดฏเดคเตเดฏเดธเตเดค เดธเตเดฅเดฒเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดฒเตเดกเต เดเตเดฏเตเดค เดเดฐเต เดชเตเดฐเดฟเดฒเตเดณเตเดณ เดคเดฐเดเตเดเตพ เดชเดตเตผเดทเตเตฝ เดเตเดชเตเดชเต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดจเต เดชเดฐเดฟเดนเดฐเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒเตเดจเตเดจเต เดเตผเดฎเตเดฎเดฟเดเตเดเตเด.
เดตเตเดฏเดคเตเดฏเดธเตเดค เดธเตเดฅเดฒเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฐเต เดชเตเดฐเตเดชเตเดชเตผเดเตเดเดฟเดเตพ เดเดณเตเดณ เดฐเดฃเตเดเต เดธเดฎเดพเดจ เดเตเดฒเดพเดธเตเดเตพ เดจเดฟเดเตเดเตพ เดฒเตเดกเต เดเตเดฏเตเดคเดพเดฒเตเด, เดจเดฟเดเตเดเตพเดเตเดเต เดชเตเดฐเดถเตเดจเดเตเดเตพ เดจเตเดฐเดฟเดเดพเดจเตเดณเตเดณ เดธเดพเดงเตเดฏเดคเดฏเตเดฃเตเดเต.
เดฎเตเดจเตเดจเตเดเตเดเตเดณเตเดณ เดตเดดเดฟ
เดเตเดชเตเดชเต เดฑเตเดธเดฒเตเดฏเตเดทเตป เดชเตเดฐเดถเตเดจเดเตเดเตพ เดเดดเดฟเดตเดพเดเตเดเดพเดจเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด เดจเดฒเตเดฒ เดฎเดพเตผเดเด เดจเดฟเดเตเดเดณเตเดเต เดเตเดฒเดพเดธเตเดเตพ เดเดฐเดฟเดเตเดเดฒเตเด เดเดชเดฏเตเดเตเดคเดพเดเตเดเตพเดเตเดเต เดฎเตเดจเตเดจเดฟเตฝ เดคเตเดฑเดจเตเดจเตเดเดพเดเตเดเดพเดคเดฟเดฐเดฟเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต. เดเดฐเต เดเตเดฒเดพเดธเดฟเตฝ เดจเดฟเตผเดตเดเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดคเดฐเด เดเดชเดฏเตเดเตเดคเดพเดเตเดเตพ เดเดฑเดเตเดเตเดฎเดคเดฟ เดเตเดฏเตเดฏเตเดฎเตเดจเตเดจเต เดชเตเดฐเดคเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดชเดเดฐเด, เดเตเดฒเดพเดธเต เดจเตเดฐเดฟเดเตเดเต เดเดเตโเดธเดธเต เดเตเดฏเตเดฏเตเดฃเตเดเดคเดฟเดจเตเดฑเต เดเดตเดถเตเดฏเดเดค เดเดฒเตเดฒเดพเดคเดพเดเตเดเตเดจเตเดจ เดเดฐเต เดซเดเดเตเดทเตป เดจเดฟเดเตเดเดณเตเดเต เดฎเตเดกเตเดฏเตเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดเตโเดธเตโเดชเตเตผเดเตเดเต เดเตเดฏเตเดฏเตเด. เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดจเดพเดฏเดฟ, เดเดชเดฏเตเดเตเดคเต-เดธเตเดนเตเดฆ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเตผ เดธเตเดฑเตเดฑเตเดเดณเต เดชเดฟเดจเตเดคเตเดฃเดฏเตโเดเตเดเตเดเดฏเตเด เดเดฐเต เดเตเดฒเดธเตเดฑเตเดฑเตผ เดคเดฟเดฐเดฟเดเต เดจเตฝเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจ เดเดฐเต เดจเตเดฏเต-เดเตเดฒเดธเตเดฑเตเดฑเตผ เดซเดเดเตโเดทเตป เดเดเตเดเตพเดเตเดเต เดเดเตโเดธเตโเดชเตเตผเดเตเดเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด.
class Cluster {
[ValidatePattern("^[A-z]+$")]
[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เดตเตเดฑเต เดเดจเตเดคเต เดตเดพเดฏเดฟเดเตเดเดพเตป
เด เดตเดฒเดเดฌเด: www.habr.com
