PowerShell á ááŹá¸ááźááşáááşá¸áááŻá¸áážá áĄááááˇáşá áŹááťáŹá¸á á áŹááŹá¸áĄáá˝ááşáááş áá°ááŹá¸áááşáááŻááşááąáŹááŻáśá áśááźááˇáş áĄááťááşáĄáááşáááŻááźááááˇáşáááşá¸áááşá¸áá áşááŻááťážááŹááźá áşáááşá ááááşááąáŹáˇ áááşáááşá¸ááťááş áĄááŹááášááŻááťáŹá¸áážááˇáş ááŻááşááąáŹááşáááş- cmdlets áážááˇáş functions ááťáŹá¸áááş áááşá¸áááŻáˇáĄáŹá¸ input áĄááźá áş áááşááśááá°áááşá áážááˇáş áĄááźááşáĄáážááşáĄááťááŻá¸ááźáŻáááŻááşááąáŹ áá˝á˛ááźáŹá¸ááąáŹáĄááťááŻá¸áĄá áŹá¸ááťáŹá¸áážááˇáş scripts ááťáŹá¸áá˝ááş .NET áĄáááşá¸ááťáŹá¸ááᯠáĄááźáąááśááŹá¸áááşá á áŽá¸ááŽá¸á á ááŻáášáááąáŹááşá¸ááŤá¸áá˝ááşá ááťá˝ááşáŻááşáááŻáˇáááş áĄááŹááášááŻááťáŹá¸áážááˇáş ááŻááşááąáŹááşááźááşá¸ááᯠáááŻáááŻáĄááąá¸á áááşááąáˇááŹááŤáááşá
ááŹááááŹ:
PowerShell áážá áĄááŹááášááŻááťáŹá¸
áĄááŹááášááŻáá áşááŻáááş ááąááŹáĄáá˝ááşááťáŹá¸ (Properties, Events, etc.) áážááˇáş áááşá¸áááŻáˇááᯠááŻááşááąáŹááşáááş áááşá¸áááşá¸ááťáŹá¸ (methods) ááťáŹá¸ áĄá áŻáĄááąá¸áá áşááŻááźá áşááźáąáŹááşá¸ ááááááźááŤá ááŻáˇá áááşá¸ááá˝á˛áˇá ááşá¸ááŻáśáááş áĄááťáŹá¸áĄáŹá¸ááźááˇáş áá áşá áŻáá áşá ááşá¸áááşá¸ááźá áşááąáŹ .NET Core ááááşááąáŹááşá¸áá˝ááş áĄááŻáśá¸ááźáŻáááˇáş áĄáááşá¸ááťáŹá¸áĄááąáŤáş áĄááźáąááśáááˇáş áĄááťááŻá¸áĄá áŹá¸áá áşááŻááźááˇáş áááşáážááşáááşá áááşá¸áááş COMá CIM (WMI) áážááˇáş ADSI áĄááŹááášááŻááťáŹá¸áážááˇáşáááşá¸ ááŻááşááąáŹááşáááŻááşáááşá ááąááŹáĄááąáŤáş áĄááťááŻá¸ááťááŻá¸ááąáŹ ááŻááşááąáŹááşááťááşááťáŹá¸ááᯠááŻááşááąáŹááşáááş Properties áážááˇáş Method ááťáŹá¸áááş áááŻáĄááşáááşá áááŻáˇáĄááźááş PowerShell áá˝ááş áĄááŹááášááŻááťáŹá¸ááᯠááŻááşááąáŹááşááťááşááťáŹá¸áážááˇáş cmdlets ááťáŹá¸áááŻáˇ áĄááźáąáŹááşá¸ááźááťááşááťáŹá¸áĄááźá áş ááťáąáŹáşááźááşáááŻááşááźáŽá¸á áááşá¸áááŻáˇá áááşáááŻá¸ááťáŹá¸ááᯠááááşá¸áážááşááťáŹá¸áááŻáˇ áááşáážááşááąá¸áááŻááşáááşá (áááŻááşáááŻááşá¸)á áááŻááşáááŻááşá¸áážá command áá áşááŻá áŽáááş áááşá¸á output ááᯠááąáŹááşáá áşááŻáááŻáˇ áá˝ážá˛áá˝áŹá¸áááşá áĄááŹááášááŻáĄáááŻááş áĄááŹááášááŻáá áşááŻá áŽááᯠáĄáážááˇáşáá˝ááş ááąá¸áááŻáˇáááşá ááŻááşááąáŹááşáááş áááŻáˇáááŻááş áááˇáşáááŻááşáááŻááşáááşááŽá¸áááşáĄáá˝ááş á áŻá ááşá¸ááŹá¸ááąáŹ cmdlets áááŻááŻáśá¸áááŻááşáááşá áááŻááşáááŻááşá¸áážá áĄááŹááášááŻááťáŹá¸áážááˇáş áĄááťááŻá¸ááťááŻá¸ááąáŹ ááźááşáážááşáážáŻááťáŹá¸ááᯠááŻááşááąáŹááşáááş- á á áşááŻááşááźááşá¸á á áŽááźááşá¸á áĄáŻááşá áŻáá˝á˛áˇááźááşá¸áážááˇáş áááşá¸áááŻáˇá áá˝á˛áˇá ááşá¸ááŻáśááᯠááźáąáŹááşá¸áá˛ááźááşá¸áááşá á¤ááąáŹááşáá˝ááş ááąááŹáá˝ážá˛ááźáąáŹááşá¸ááźááşá¸áá˝ááş ááąá¸áááşááąáŹáĄáŹá¸ááŹááťááşáážááááş- áááşááśááąá¸áĄáá˝á˛áˇáááş áááŻááşá áŽá¸ááźáąáŹááşá¸ (á áŹááŹá¸ááᯠáá˝á˛ááźááşá¸á áááşááźáŹáááş ááááŻáĄááşááŤ)á áááşáááŻááşáᏠááŻááşááášááááťáŹá¸áážááˇáş áááşá¸áááşá¸ááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻááźááşá¸ááźááˇáş áááŻáĄááşááąáŹ áĄááťááşáĄáááşáĄáŹá¸ááŻáśá¸ááᯠáĄáá˝ááşááá° ááŻááşáá°áááŻááşáááşá
áĄááŹááášááŻááťáŹá¸ááá˝á˛áˇá ááşá¸ááŻáśáááŻááźááˇáşáážáŻááźááşá¸á
áĽáááŹáĄááąáá˛áˇá á áá áşáá˛áážáŹ ááŻááşááąáŹááşááąáá˛áˇ ááŻááşáááşá¸á ááşáá˝áąáĄááźáąáŹááşá¸ áĄááťááşáĄáááşáá˝áąááᯠááá°áá˝ááˇáşááźáŻáá˛áˇ Get-Process cmdlet ááᯠáá˝ááˇáşááźááˇáşááĄáąáŹááşá

ááźááşááąá¸áááˇáşáĄááŹááášááŻááťáŹá¸á ááŻááşááášááááťáŹá¸áážááˇáş áááşá¸áááŻáˇááááşá¸áááşá¸ááťáŹá¸áĄááźáąáŹááşá¸ áááşáááˇáşáĄááźáśáĽáŹááşáážáááąá¸áááˇáş ááąáŹáşáááşááŻááşááŹá¸ááąáŹ á
áŹááŹá¸ááąááŹáĄááťááŻáˇááᯠá
ááááşáááŻáˇ ááŻááşááąá¸áááşááźá
áşáááşá áĄáá˝ááşáĄáŹá¸ ááťáááşáážááááşá áĄááŹááášááŻááťáŹá¸á áá˝á˛áˇá
ááşá¸ááŻáśááᯠáááşá¸á
á
áşáááşá¸ááᯠááąáˇááŹáááş áááŻáĄááşááźáŽá¸ Get-Member cmdlet áááş ááťá˝ááşáŻááşáááŻáˇáĄáŹá¸ á¤áĄááŹááᯠáá°ááŽááąá¸ááŤáááş-
Get-Process | Get-Member 
á¤ááąááŹáá˝ááş ááťá˝ááşáŻááşáááŻáˇáááş áĄááťááŻá¸áĄá
áŹá¸áážááˇáş áá˝á˛áˇá
ááşá¸ááŻáśááᯠááźááşááŹá¸ááźáŽá¸ááŹá¸ááźá
áşááźáŽá¸á áĄáááŻááąáŹááşááąáŹááşááťáŹá¸áĄáá°áĄááŽááźááˇáş áĽáááŹáĄáŹá¸ááźááˇáşá áááˇáşáá˝ááşá¸ááąáŹáĄááŹááášááŻá ááŻááşááášááááťáŹá¸áááŻáᏠááźááááŻááşáááş-
Get-Process | Get-Member -MemberType PropertyáĄááźááşáĄáážááşááŻáśáˇááźááşáážáŻááŻááşáá˝ááş á áŽááśáááˇáşáá˝á˛ááąá¸ááŹáááşááťáŹá¸ááᯠááźáąáážááşá¸áááş áááŻáˇáááŻááş áááˇáşáááŻááşáááŻááş scripts ááťáŹá¸ááąá¸ááŹá¸áááş á¤áĄááááᏠáááŻáĄááşááááˇáşáááş- áĽáááŹá ááŻáśáˇááźááşáážáŻáááŻááşáááŻááşáážáŻááᯠáĄááŻáśá¸ááźáŻá ááťáááşáá˝á˛ááŹá¸áááˇáş ááŻááşáááşá¸á ááşááťáŹá¸áĄááźáąáŹááşá¸ áĄááťááşáĄáááşááá°áááşá
áĄááŹááášááŻááťáŹá¸ááᯠá á áşááŻááşááźááşá¸á
PowerShell áááş áááˇáşáĄáŹá¸ áááşáážááşááŹá¸ááąáŹ áĄááźáąáĄááąáážááˇáş áááŻááşááŽáááˇáş áááŻááşáááŻááşá¸áážááááˇáş áĄááŹááášááŻááťáŹá¸ááᯠááźááşáááşá¸áá˝ááˇáşááźáŻáááş-
Where-Object { йНОк ŃŃонаŃĐ¸Ń }áĄáąáŹáşáááąááŹáá˝ááşá¸ááááşááťáŹá¸áá˝ááş script ááááşáááŻáˇááźááşá¸ááᯠááŻááşááąáŹááşááźááşá¸áááááşáááş ááŻáášáááááşáááŻá¸ááźá áşáááŤáááşá áĄáááşá áááşá¸áááş áĄáážááş ($true)á Where-Object cmdlet áá˝ááş áááˇáşáá˝ááşá¸ááŹá¸ááąáŹ áĄááŹááášááŻáááş áááŻááşáááŻááşá¸áá áşááťážáąáŹááş áááşáááˇáşááźááşáááşá¸áá˝áŹá¸áááşááźá áşááźáŽá¸á áááŻááşááŤá (áááşáááŻá¸ $false) ááᯠááťááşáá áşáááşááźá áşáááşá áĽáááŹáĄááąááźááˇáşá áááşáááˇáşááŹá¸ááąáŹ Windows Server áááşááąáŹááşáážáŻááťáŹá¸á áŹáááşá¸ááᯠááąáŹáşááźááźááŤá ááŻáˇá áááŻáááŻáááşáážáŹ Status áááŻááşáááŻááşáážáŻáááşáááŻá¸ "Stopped" áážáááąáŹáá°ááťáŹá¸á
Get-Service | Where-Object {$_.Status -eq "Stopped"} 
á¤ááąááŹáá˝ááş ááťá˝ááşáŻááşáááŻáˇáááş á
áŹááŹá¸áááŻááşá
áŹá¸ááźáŻáážáŻááᯠáááşááśáá˝áąáˇááźááşáááąáŹáşáááşá¸á áááŻááşáááŻááşá¸áážááááˇáşááźááşáááşá¸áá˝áŹá¸ááąáŹ áĄááŹááášááŻááťáŹá¸á áĄááťááŻá¸áĄá
áŹá¸áážááˇáş áĄáá˝ááşá¸áááŻááşá¸áá˝á˛áˇá
ááşá¸ááŻáśááᯠááŹá¸áááşáááŻááŤáá áááşá¸áááş ááááşáá˛ááŤ
Get-Service | Where-Object {$_.Status -eq "Stopped"} | Get-Member 
áĄááŹááášááŻááťáŹá¸ááᯠá áŽááźááşá¸á
áááŻááşáááŻááşá¸áá áşááŻáá˝ááş áĄááŹááášááŻááťáŹá¸ááᯠá áŽááśááąáŹááşáá˝ááşáááˇáşáĄá፠áááşá¸áááŻáˇááᯠá áŽáááş áááźáŹáá áááŻáĄááşáááşá Sort-Object cmdlet áááş ááŻááşááášááááťáŹá¸ (sort keys) á áĄáááşááťáŹá¸ááᯠáááşááśááážáááźáŽá¸ áááşá¸áááş áááşá¸áááŻáˇá áááşáááŻá¸ááťáŹá¸ááźááˇáş á áŽááŹá¸ááąáŹ áĄááŹááťáŹá¸ááᯠááźááşááąá¸áááşá ááŻááşááąáŹááşááąáááˇáş ááŻááşáááşá¸á ááşááťáŹá¸á áĄáá˝ááşááᯠááŻáśá¸á á˝á˛áááˇáş ááááŻáááşááŹáĄááťáááş (cpu áááŻááşáááŻááşáážáŻ) ááźááˇáş áĄáá˝ááşááá° á áŽáá˝á˛áááŻááşáááş-
Get-Process | Sort-Object âProperty cpuSort-Object cmdlet áááŻááąáŤáşááąáŹáĄá፠-Property parameter ááᯠááťááşáážááşááŹá¸áááŻááşááŤáááşá áááşá¸ááᯠdefault áĄááąááźááˇáşáĄááŻáśá¸ááźáŻáááşá ááźáąáŹááşá¸ááźááşá áŽááźááşá¸áĄáá˝ááşá -Descending parameter áááŻáĄááŻáśá¸ááźáŻáááş-
Get-Process | Sort-Object cpu -Descending 
áĄááŹááášááŻááťáŹá¸áážááˇáş áááşá¸áááŻáˇá áĄá áááşáĄáááŻááşá¸ááťáŹá¸ááᯠáá˝áąá¸ááťááşááźááşá¸á
Select-Object cmdlet áááş -First áááŻáˇáááŻááş -Last parameters ááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻá áááŻááşáááŻááşá¸áá áşááŻááĄá áááŻáˇáááŻááş áĄááŻáśá¸áá˝ááş áĄááťááŻáˇááąáŹ áĄááŹááášááŻáĄááťááŻáˇááᯠáá˝áąá¸ááťááşáááŻááşá áąááŤáááşá áĄááŹááášááŻáá áşááŻááťááşá¸á ᎠáááŻáˇáááŻááş ááŽá¸ááźáŹá¸ááŻááşááášááááťáŹá¸ááᯠáá˝áąá¸ááťááşáááşáážááˇáş áááşá¸áááŻáˇáĄááąáŤáşáĄááźáąááśá áĄááŹááášááŻáĄáá áşááťáŹá¸áááşááŽá¸áááş áááşá¸ááᯠáĄááŻáśá¸ááźáŻáááŻááşáááşá áááŻá¸áážááşá¸ááąáŹááá°ááŹááťáŹá¸áááŻáĄááŻáśá¸ááźáŻá cmdlet áááşáá˛áˇáááŻáˇáĄááŻááşááŻááşáááşáááŻááźááˇáşááźááŤá ááŻáˇá
áĄáąáŹááşááąáŹáşááźá፠command áááş RAM áááŹááĄááťáŹá¸ááŻáśá¸ááŻáśá¸á á˝á˛áááˇáş ááŻááşáááşá¸á ááş 10 ááŻáĄááźáąáŹááşá¸ áĄááťááşáĄáááşááᯠááźááááş-
Get-Process | Sort-Object WS -Descending | Select-Object -First 10 
Conveyor áážááááˇáş ááźááşáááşá¸áá˝áŹá¸ááąáŹ áĄááŹááášááŻááťáŹá¸á áĄááťááŻáˇááąáŹ ááŻááşááášááááťáŹá¸áááŻáᏠáá˝áąá¸ááťááşáááŻááşááźáŽá¸ áááşá¸áááŻáˇáĄááąáŤáş áĄááźáąááśá áĄáá
áşááťáŹá¸ááᯠáááşááŽá¸áááŻááşáááş-
Get-Process | Select-Object ProcessName, Id -First 1áááŻááşáááŻááşá¸áááááşáĄááąááźááˇáşá Get-Process cmdlet áážááźááşááąá¸ááąáŹáá˝á˛áˇá ááşá¸ááŻáśáážááˇáşáá˝á˛ááźáŹá¸áááˇáşáĄááŹááášááŻáĄáá áşáá áşááŻáááŻááážáááŤáááşá Get-Member ááᯠáĄááŻáśá¸ááźáŻá áááşá¸ááᯠáĄáááşááźáŻááźááŤá ááŻáˇá
Get-Process | Select-Object ProcessName, Id -First 1 | Get-Member 
Select-Object áááş ááťá˝ááşáŻááşáááŻáˇáááşáážááşááŹá¸ááąáŹ áĄáá˝ááşáážá
áşááŻááŹááŤáážáááąáŹ áĄááŹáá
áşáᯠ(-First 1) ááᯠááźááşááąá¸áááş- áááşá¸áááŻáˇááááşáááŻá¸ááťáŹá¸ááᯠGet-Process cmdlet ááž áááŻááşáááŻááşá¸áááŻáˇ ááąá¸áááŻáˇááąáŹ ááááĄááŹááášááŻááž áááşá¸áááŻáˇááááşáááŻá¸ááťáŹá¸ááᯠáá°á¸áá°ááŹá¸áááşá Select-Object áááŻáĄááŻáśá¸ááźáŻááźááşá¸áááş PowerShell scripts ááťáŹá¸áá˝ááş áĄááŹááášááŻááťáŹá¸ááᯠáááşááŽá¸áááş áááşá¸áááşá¸áá
áşááŻááźá
áşáááş-
$obj = Get-Process | Select-Object ProcessName, Id -First 1
$obj.GetType() 
Select-Object ááᯠáĄááŻáśá¸ááźáŻá áááşáááŻááşá
áŹá¸ááźáŻáááŻááąáŹ áĄááŹááášááŻááťáŹá¸áááŻáˇ áá˝ááşááťááşááŹá¸ááąáŹ ááŻááşááášááááťáŹá¸ ááąáŤááşá¸áááˇáşáááŻááşáááşá . á¤ááá
ášá
áá˝ááşá áááşá¸ááááááąáŹáˇáááşáááŻá¸áááş áááŻááşáááŻááşáážáŻáĄáááşáážááˇáş áááşáááŻááşááźáŽá¸ ááŻáááááąáŹáˇáááşáááŻá¸áááş áááşáážááááŻááşáááŻááşá¸áĄá
áááşáĄáááŻááşá¸áĄáá˝ááş áááŻááşáááŻááşáážáŻáááşáááŻá¸áážááˇáş áááşáááŻááşáááş-
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}} 
Conveyor áážááááˇáş ááźááşáááşá¸áá˝áŹá¸ááąáŹ áĄááŹááášááŻááťáŹá¸á áá˝á˛áˇá
ááşá¸ááŻáśááᯠááźááˇáşááźááŤá
ááŻáˇá
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}} | Get-Member 
ForEach-Objectá Group-Object áážááˇáş Measure-Object
Object ááťáŹá¸áážááˇáş ááŻááşááąáŹááşáááş áĄááźáŹá¸ááąáŹ cmdlets ááťáŹá¸ áážáááŤáááşá áĽáááŹáĄáŹá¸ááźááˇáşá ááťá˝ááşáŻááşáááŻáˇáááş áááˇáşáĄáŹá¸ áĄááŻáśá¸áááşááŻáśá¸ ááŻáśá¸ááŻáĄááźáąáŹááşá¸ ááźáąáŹááźááŤáááşá
ForEach-Object áááŻááşáááŻááşá¸áážá áĄááŹááášááŻáá áşááŻá áŽáĄáá˝ááş PowerShell ááŻááşááᯠáááşááŻááşááąáŹááşáááŻááşáááş-
ForEach-Object { йНОк ŃŃонаŃĐ¸Ń }áĄáŻááşá áŻ-áĄááŹááášáᯠáá ášá ááşá¸áááşáááŻá¸áĄáááŻááş áĄááŹááášááŻááťáŹá¸ááᯠáĄáŻááşá áŻáá˝á˛áˇááŤ-
Group-Object PropertyNameáááşá¸ááᯠ-NoElement parameter ááźááˇáş run ááŤáá áĄáŻááşá áŻááťáŹá¸áážá element áĄááąáĄáá˝ááşááᯠáááşáážáŹáá˝áąáááŻááşáááşá
áááŻááşá¸ááŹ-áĄááŹááášáᯠáááŻááşáááŻááşá¸áážá áĄááŹááášááŻááťáŹá¸á áááşáááşááťáŹá¸á áááşáááŻá¸ááťáŹá¸ááźááˇáş áĄááťááŻá¸ááťááŻá¸ááąáŹ áĄááťááşá¸ááťáŻááş ááąáŹááşááťáŹá¸ááᯠááąáŤááşá¸á ááşá¸áááş (ááąáŤááşá¸áááşááᯠáá˝ááşááťááşááźáŽá¸ áĄááááˇáşááŻáśá¸á áĄááźááˇáşááŻáśá¸ áááŻáˇáááŻááş ááťááşá¸ááťážáááşáááŻá¸áááŻáááşá¸ áážáŹáá˝áąáááş)á
Measure-Object -Property PropertyName -Minimum -Maximum -Average -SumááŻáśáážááşáĄáŹá¸ááźááˇáşá áá˝áąá¸áá˝áąá¸ááŹá¸ááąáŹ cmdlets ááťáŹá¸ááᯠáĄááźááşáĄáážááşáĄááťááŻá¸áááşááąáŹááşáážáŻááŻááşáá˝ááş áĄááŻáśá¸ááźáŻááźááźáŽá¸ scripts ááťáŹá¸áá˝ááş áááŻááááźáŹáááááşááŽá¸ááźáááşá Beginá Process áážááˇáş End ááŻááşáá˝ááşááťáŹá¸ááźááˇáşá
.NET áážááˇáş COM áĄááŹááášááŻááťáŹá¸ áááşááŽá¸ááźááşá¸ (New-Object)
á áá áşá áŽááśáááˇáşáá˝á˛áá°ááťáŹá¸áĄáá˝ááş áĄááŻáśá¸áááşááąáŹ .NET Core áážááˇáş COM áĄááşááŹááąáˇá áşááťáŹá¸ááŤáážáááąáŹ ááąáŹáˇááşáá˛áĄá áááşáĄáááŻááşá¸ááťáŹá¸á á˝áŹáážáááŤáááşá System.Diagnostics.EventLog áĄáááşá¸áĄá áŹá¸ááᯠáĄááŻáśá¸ááźáŻá áááşáááş Windows PowerShell ááž á áá áşáážááşáááşá¸ááťáŹá¸ááᯠáááŻááşáááŻááşá áŽááśáááˇáşáá˝á˛áááŻááşáááşá -TypeName parameter ááźááˇáş New-Object cmdlet ááᯠáĄááŻáśá¸ááźáŻá á¤áĄáááşá¸á instance áá áşááŻááᯠáááşááŽá¸ááźááşá¸á áĽáááŹááᯠááźááˇáşááźááŤá ááŻáˇá
New-Object -TypeName System.Diagnostics.EventLog 
áááşáááşáážááşáážááş ááźá
áşáááşáážááşáááşá¸áá
áşááŻááᯠááťá˝ááşáŻááşáááŻáˇ ááááşáážááşááŹá¸ááąáŹááźáąáŹááˇáş áá˝ááşááąáŤáşááŹááąáŹ áĄáááşá¸áĄá
áŹá¸áá˝ááş áááşáááˇáşááąááŹááťáž áááŤáááşááŤá áááşá¸áááŻááźáąáŹááşá¸áá˛áááş -ArgumentList parameter ááᯠáĄááŻáśá¸ááźáŻá áááşá¸ááááşááŽá¸áážáŻáĄáá˝ááşá¸ áĄáá°á¸áááşááąáŹááşááąá¸áááşá¸áááşá¸ááᯠááťá˝ááşáŻááşáááŻáˇááąáŤáşáááŻáááş áááŻáĄááşááŤáááşá ááťá˝ááşáŻááşáááŻáˇáááş áĄáááŽááąá¸áážááşá¸áážááşáááşá¸ááᯠáááşááąáŹááşáááŻááŤáá ááťá˝ááşáŻááşáááŻáˇáááş áááşááąáŹááşáá°áĄáŹá¸ áĄááźáąáŹááşá¸ááźááťááşáĄááźá
áş "Application" á
áŹááźáąáŹááşá¸ááᯠááąá¸áááŻáˇáááˇáşáááş-
$AppLog = New-Object -TypeName System.Diagnostics.EventLog -ArgumentList Application
$AppLog 
command output ááᯠ$AppLog variable áá˝ááş ááááşá¸áááşá¸ááŹá¸ááźáąáŹááşá¸ áááááźáŻááŤá áááŻááşáááŻááşá¸ááťáŹá¸ááᯠáĄááźááşáĄáážááşáĄááťááŻá¸áááşááąáŹááşáážáŻááŻááşáá˝ááş áĄááŻáśá¸ááťáŹá¸ááąáŹáşáááşá¸á scripting áááş áĄááŹááášááŻáá
áşááŻáĄáŹá¸ áááşáá˝ážááşá¸ááťááşáá
áşááŻááᯠááááşá¸áááşá¸ááŹá¸áááş áááŻáĄááşááŤáááşá áááŻáˇáĄááźááşá core .NET Core áĄáááşá¸ááťáŹá¸ááᯠSystem namespace áá˝ááşááŤáááşáááş- PowerShell áááş á¤áĄááťááŻá¸áĄá
áŹá¸ááťáŹá¸ááᯠáá°áááşá¸áĄáááŻááşá¸áážáŹáá˝áąáááşá áááŻáˇááźáąáŹááˇáş System.Diagnostics.EventLog áĄá
áŹá¸ Diagnostics.EventLog áááŻááąá¸ááźááşá¸áááş áážááşáááşááŤáááşá
áážááşáááşá¸áážááˇáşáĄáá° áĄááŻááşááŻááşáááşá áááşáááŻááşááąáŹáááşá¸áááşá¸ááťáŹá¸ááᯠáááşáĄááŻáśá¸ááźáŻáááŻááşáááş-
$AppLog | Get-Member -MemberType Method 
áááşááąáŹááşáá˝ááˇáş áĄáá˝ááˇáşáĄááąá¸ááťáŹá¸ ááážáááŤá Clear() áááşá¸áááşá¸ááᯠáĄááŻáśá¸ááźáŻá áážááşá¸áááşá¸áááşáᯠáááŻááźááŤá
ááŻáˇá
$AppLog.Clear()New-Object cmdlet ááᯠCOM áĄá áááşáĄáááŻááşá¸ááťáŹá¸áážááˇáş áĄááŻááşááŻááşáááşáááşá¸ áĄááŻáśá¸ááźáŻááŤáááşá áááşá¸áááŻáˇáá˛ááž áĄááťááŻáˇáážáŹ Windows script server ááž ááąáŹááşááśáˇááąá¸ááŹá¸ááąáŹ á áŹááźááˇáşáááŻááşááťáŹá¸ááž Internet Explorer áá˛áˇáááŻáˇááąáŹ ActiveX áĄáááŽááąá¸áážááşá¸ááťáŹá¸áĄáá ááźá áşáááşá COM áĄááŹááášááŻáá áşááŻáááşááŽá¸áááşá áááşáĄáááŻáážáááąáŹáĄáááşá¸á ááááŻááááşáĄáážááşáĄááŹá¸ááźáŻ ProgId ááźááˇáş -ComObject ááŤááŹááŽááŹááᯠáááşáážááşáááş áááŻáĄááşáááş-
New-Object -ComObject WScript.Shell
New-Object -ComObject WScript.Network
New-Object -ComObject Scripting.Dictionary
New-Object -ComObject Scripting.FileSystemObjectNew-Object áááŻáĄááŻáśá¸ááźáŻááźááşá¸ááźááˇáş áááˇáşáááŻááşáááŻááşáĄááŹááášááŻááťáŹá¸ááᯠááááşááááŻáá˝á˛áˇá ááşá¸áááşááąáŹááşáááşá ᤠcmdlet ááᯠPowerShell áážááˇáşáááşá ááşááąáŹ ááźááşáááąáŹáˇáá˛ááş áĄá áááşáĄáááŻááşá¸ááťáŹá¸áážááˇáş áĄááŻááşááŻááşáááş áĄááŻáśá¸ááźáŻáááşá áĄáąáŹááşááŤááąáŹááşá¸ááŤá¸ááťáŹá¸áá˝ááş á¤ááźáżááŹááᯠáááŻáááŻáĄááąá¸á áááşáá˝áąá¸áá˝áąá¸ááŤáááşá .NET áážááˇáş COM áĄááŹááášááŻááťáŹá¸áĄááźááş CIM (WMI) áážááˇáş ADSI áĄááŹááášááŻááťáŹá¸áááŻáááşá¸ ááąáˇááŹááŤáááşá
áĄááźáááşáááşá¸áááşá¸ááťáŹá¸ ááąáŤáşáááŻááźááşá¸á
System.Environment áážááˇáş System.Math áĄááŤáĄáááş ááťááşááźááşá¸áááááŻááşááąáŹ áĄááťááŻáˇááąáŹ .NET Core áĄáááşá¸ááťáŹá¸ áážáááŤáááşá áá°áááŻáˇá áážááˇáş áááşááźáááşááŻááşááášááááťáŹá¸áážááˇáş áááşá¸áááşá¸ááťáŹá¸áᏠááŤáážááááşá áĄáážá áşááŹááĄáŹá¸ááźááˇáşá áááşá¸áááŻáˇáááş áĄááŹááášááŻááťáŹá¸ááᯠáááşááŽá¸ááźááşá¸áááźáŻáᲠáĄááŻáśá¸ááźáŻáááˇáş áááşáá˝ážááşá¸á áŹááźááˇáşáááŻááşááťáŹá¸ááźá áşáááşá áĄááťááŻá¸áĄá áŹá¸áĄáááşááᯠá ááŻáááşá¸áá˝ááşá¸á áá˝ááşááťáŹá¸áá˝ááş áááˇáşáá˝ááşá¸áᏠáááááĄáŹá¸ááźááˇáş áĄááźáááşáĄáááşá¸ááᯠáááŻá¸ááŹá¸áááŻááşáááşá á¤ááá ášá áá˝ááşá Get-Member ááᯠáĄááŻáśá¸ááźáŻá áĄááŹááášááŻáááşááąáŹááşááŻáśááᯠááźááˇáşááťážááş System.Environment áĄá áŹá¸ System.RuntimeType áĄááťááŻá¸áĄá áŹá¸ááᯠáá˝áąáˇááááşááźá áşááŤáááşá
[System.Environment] | Get-Member 
Static áĄáá˝á˛áˇáááşááťáŹá¸áááŻááŹááźááˇáşáážáŻáááş -Static parameter ááźááˇáş Get-Member áááŻááąáŤáşáááŻá፠(áĄááŹááášááŻáĄááťááŻá¸áĄá
áŹá¸ááᯠáááááźáŻááŤ)á
[System.Environment] | Get-Member -Static 
áááşááźáááşááŻááşááášááááťáŹá¸áážááˇáş áááşá¸áááşá¸ááťáŹá¸ááᯠáááşááąáŹááşááźááˇáşáážáŻáááşá á
áŹááŹá¸ááźáŽá¸ááąáŹááş ááŹááá
áşááŻáĄá
áŹá¸ áááşáááŻááş ááąáŹáşááśáážá
áşááŻááᯠáĄááŻáśá¸ááźáŻááŤ-
[System.Environment]::OSVersionáááŻáˇáááŻááş
$test=[System.Math]::Sqrt(25)
$test
$test.GetType() 
PSCustomObject áĄááťááŻá¸áĄá áŹá¸
PowerShell áá˝ááşááážááááŻááşááąáŹááąááŹáĄááťááŻá¸áĄá áŹá¸ááťáŹá¸á á˝áŹáážááááˇáşáĄáááşá áĄááŹááášááŻááťáŹá¸áááŻáááşááááŻááŻáśá áśááźááˇáşááááşá¸áááşá¸áááşááŽáááŻááşá¸ááźáŻááŻááşááŹá¸áááˇáş PSCustomObject áááŻááąáŹáşááźáááťááŻá¸áááşáááşá New-Object cmdlet ááᯠáĄááŻáśá¸ááźáŻá áááŻáááŻáˇááąáŹ áĄááŹáá áşááŻááᯠáááşááŽá¸ááźááşá¸áááş ááášááááşááźá áşááąáŹáşáááşá¸ áááşáá˛ááźáŽá¸ ááąááşáááŽááąáŹ áááşá¸áááşá¸áá áşááŻáᯠáá°ááááş-
$object = New-Object âTypeName PSCustomObject -Property @{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'}
áĄááŹááášááŻááá˝á˛áˇá ááşá¸ááŻáśáááŻááźááˇáşááźááŤá ááŻáˇá
$object | Get-Member 
PowerShell 3.0 ááźááˇáş á
áááşá áĄááźáŹá¸ syntax ááᯠááááŻááşáááş-
$object = [PSCustomObject]@{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'
}
áá°ááŽááąáŹáááşá¸áááşá¸ááťáŹá¸áá˛ááž ááąááŹááᯠáááşáááşááąáŹááşááźááˇáşáážáŻáááŻááşáááş-
$object.Name
$object.'Name'
$value = 'Name'
$object.$value
á¤áááşáážáŹ áážáááźáŽá¸ááŹá¸ hashtable áá áşááŻááᯠáĄááŹááášááŻáá áşááŻáĄááźá áşáááŻáˇ ááźáąáŹááşá¸áá˛ááźááşá¸á áĽáááŹáá áşááŻááźá áşáááşá
$hash = @{'Name'='Ivan Danko'; 'City'='Moscow'; 'Country'='Russia'}
$hash.GetType()
$object = [pscustomobject]$hash
$object.GetType()

á¤áĄááŹááášááŻáĄááťááŻá¸áĄá
áŹá¸á áĄáŹá¸áááşá¸ááťááşááťáŹá¸áá˛áážáá
áşááŻáážáŹ áááşá¸áááŻáˇá ááŻááşááášááááťáŹá¸ áĄá
áŽáĄá
áĽáş ááźáąáŹááşá¸áá˛áá˝áŹá¸ááźááşá¸áááşááźá
áşáááşá áááşá¸áááŻáážáąáŹááşáážáŹá¸áááşá áááşáááş [ordered] attribute áááŻáĄááŻáśá¸ááźáŻáááşáááŻáĄááşáááş-
$object = [PSCustomObject][ordered]@{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'
}
áĄááŹááášááŻáá áşááŻááᯠáááşááŽá¸áááş áĄááźáŹá¸áá˝áąá¸ááťááşá ááŹááťáŹá¸ áážááááş- áĄáááşáá˝ááş ááťá˝ááşáŻááşáááŻáˇáááş cmdlet ááᯠáĄááŻáśá¸ááźáŻá ááźááˇáşáážáŻáá˛áˇáááşá . ááťááşááŹáĄáŹá¸ááŻáśá¸á ááźááşá ááşáá˝áąááᯠáááşáááŻááąáŤááşá¸áááˇáş áááşáážáŹá¸áááá˛áááŻáᏠáĄááźáąáážáŹáááŻáˇáᲠááťááşááąáŹáˇáááşá ááááşáĽáááŹááž áĄááŹááášááŻáĄáá˝ááş áááşá¸áááŻááźáŻááŻááşáááş áĄáá˝ááşáá˝ááşáá°áááş-
$object | Add-Member âMemberType NoteProperty âName Age âValue 33
$object | Get-Member

Add-Member cmdlet áááş "-MemberType ScriptMethod" construct áááŻáĄááŻáśá¸ááźáŻááźááşá¸ááźááˇáş áááˇáşáĄáŹá¸ ááŻááşááášááááťáŹá¸ááŹáá ááááşáááşááŽá¸ááŹá¸ááąáŹ $object áá
áşááŻáááŻáˇ áááşá¸áááşá¸ááťáŹá¸áááŻáááşá¸ áááˇáşáá˝ááşá¸áááŻááşá
áąáááş-
$ScriptBlock = {
# кОд
}
$object | Add-Member -Name "MyMethod" -MemberType ScriptMethod -Value $ScriptBlock
$object | Get-Member
áááşá¸áááşá¸áĄáá áşáĄáá˝ááş ááŻááşááᯠááááşá¸áááşá¸áááş ScriptBlock áĄááťááŻá¸áĄá áŹá¸á $ScriptBlock variable ááᯠáĄááŻáśá¸ááźáŻáá˛áˇááźáąáŹááşá¸ áááááźáŻááŤá

ááŻááşááášááááťáŹá¸ááᯠáááşáážáŹá¸áááş áááˇáşááťáąáŹáşááąáŹáááşá¸áááşá¸ááᯠáĄááŻáśá¸ááźáŻááŤ-
$object.psobject.properties.remove('Name')
áááşááááŻááşáááŻááşáĄáááşá¸ááťáŹá¸áááŻáááşááŽá¸ááŤá
PowerShell 5.0 áááş áááşáážááşáááş á á˝ááşá¸áááşááᯠááááşáááşááąá¸áá˛áˇáááşá object-oriented programming languages ââááťáŹá¸áĄáá˝ááş ááŻáśáážááş syntax ááᯠáĄááŻáśá¸ááźáŻááźááşá¸á á¤áááşáá˝ááşááťááşáĄáá˝ááşá áááşááąáŹááşáážáŻá ááŹá¸ááŻáśá¸ Class ááᯠáááşáá˝ááşááźáŽá¸á áááŻáˇááąáŹááşáá˝ááş áĄáááşá¸áĄáááşááᯠáááşáážááşáááˇáşááźáŽá¸ áááşá¸ááááŻááşáááşáĄáŹá¸ áĄáąáŹáşáááąááŹáá˝ááşá¸ááááşááťáŹá¸áá˝ááş ááąáŹáşááźááŹá¸ááŤáááşá
class MyClass
{
# ŃоНО кНаŃŃа
}
áááşá¸áááş ááááˇáş .NET Core áĄááťááŻá¸áĄá áŹá¸ááźá áşááźáŽá¸ áááşá¸ááááŻááşáááşá áááşá¸á ááŻááşááášááááťáŹá¸á áááşá¸áááşá¸ááťáŹá¸áážááˇáş áĄááźáŹá¸ááźááşá ááşááťáŹá¸ááᯠááąáŹáşááźááŤáááşá áááŻá¸áážááşá¸ááąáŹ class ááᯠáááşáážááşááźááşá¸á áĽáááŹááᯠááźááˇáşááźááŤá ááŻáˇá
class MyClass
{
[string]$Name
[string]$City
[string]$Country
}
áĄááŹááášááŻáá áşááŻáááşááŽá¸áááş (class instance) ááᯠcmdlet áááŻáĄááŻáśá¸ááźáŻáááşá áááŻáˇáááŻááş [MyClass] áážááˇáş áááááĄááťááŻá¸áĄá áŹá¸áá áşáᯠáĄáá áş (áá°ááááşááąáŹááşáá°):
$object = New-Object -TypeName MyClassáááŻáˇáááŻááş
$object = [MyClass]::new()áĄááŹááášááŻááá˝á˛áˇá ááşá¸ááŻáśáááŻáá˝á˛ááźááşá¸á áááşááźáŹááźááŤá ááŻáˇá
$object | Get-Member 
áááşáááşááᯠáááąáˇááŤáážááˇáş- áĄááťááŻá¸áĄá
áŹá¸áĄáááşááᯠá
áŹááźáąáŹááşá¸áĄááźá
áş áááŻá¸ááŹá¸áááá፠áááŻáˇáááŻááş áĄáááşá¸áĄá
áŹá¸ áááşáážááşááŹá¸áááˇáş ááŹááşáá˝ážááşá¸ áááŻáˇáááŻááş ááąáŹáşááťá°á¸áĄááźááşáááşáá˝ááş á
áŹááŹá¸áĄááťááŻá¸áĄá
áŹá¸ááᯠáĄááŻáśá¸ááźáŻáááááŤá áááŻáˇááąáŹáşá ááŻááşááąáŹááşááťááşááťáŹá¸áááş module áááŻáˇáááŻááş script ááźááşááá˝ááşáááşááąáŹááşáĄááŻáśá¸ááźáŻáááŻááşáááˇáş class instances (objects) ááᯠááźááşááąá¸áááŻááşááŤáááşá
áĄááŹááášááŻááᯠáááşááŽá¸ááźáŽá¸ááąáŹááş áááşá¸á ááŻááşááášááááťáŹá¸ááᯠááźááˇáşááŤ-
$object.Name = 'Ivan Danko'
$object.City = 'Moscow'
$object.Country = 'Russia'
$object

áĄáááşá¸ááąáŹáşááźááťááşáááş áááŻááşáááŻááşáážáŻáĄááťááŻá¸áĄá
áŹá¸ááťáŹá¸ááŹáá áááşá¸áááŻáˇá ááŻáśááąáááşáááŻá¸ááťáŹá¸áááŻá፠ááąáŹáşááźááźáąáŹááşá¸ áááááźáŻááŤá
class Example
{
[string]$Name = 'John Doe'
}
class method áá áşááŻá ááąáŹáşááźááťááşáááş function áá áşááŻá ááąáŹáşááźááťááşáážááˇáş áááşáá°ááąáŹáşáááşá¸ function keyword ááᯠáĄááŻáśá¸áááźáŻáá˛á ááŻááşááąáŹááşááťááşáá áşááŻáá˝ááş ááŤááŹááŽááŹááťáŹá¸ááᯠáááŻáĄááşááŤá áááşá¸áááşá¸ááťáŹá¸áááŻáˇ ááąá¸áááŻáˇáááş-
class MyClass
{
[string]$Name
[string]$City
[string]$Country
#ОпиŃанио ПоŃОда
Smile([bool]$param1)
{
If($param1) {
Write-Host ':)'
}
}
}
áááŻááťá˝ááşáŻááşáááŻáˇááĄáááşá¸áááŻááşá áŹá¸áážááşáááşááźáŻáśá¸áááŻááşáááş-
$object = [MyClass]::new()
$object.Smile($true)
áááşá¸áááşá¸ááťáŹá¸áááş áĄááŻááşáááŻááŻááşáááŻááşááźáŽá¸ áĄáááşá¸ááťáŹá¸áááşá¸ áážááááŻááşááŤáááşá áĄáááşááťáŹá¸áááş áĄáááşá¸ááĄáááşáážááˇáş áááŻááşááŽááąáŹ áááşááąáŹááşáá°ááťáŹá¸áááşá¸ ááźá áşáááşá script áááŻáˇáááŻááş PowerShell module áá˝ááş áááşáážááşááŹá¸ááąáŹ áĄáááşá¸áááş áĄááźáŹá¸áĄáááşá¸áĄáá˝ááş áĄááźáąááśáĄááźá áş ááŻááşááąáŹááşáááŻááşáááş - á¤áááşáážáŹ áĄáá˝áąáááşááśááźááşá¸ááᯠáĄááąáŹááşáĄáááşááąáŹáşááŻáśááźá áşáááşá á¤ááá ášá áá˝ááşá áážáááźáŽá¸ááŹá¸ .NET áĄáááşá¸ááťáŹá¸ááᯠáĄááźáąááśáĄáááşá¸ááťáŹá¸áĄááźá áş áĄááŻáśá¸ááźáŻáááŻááşáááşá
class MyClass2 : MyClass
{
#ŃоНО нОвОгО кНаŃŃа, йаСОвŃĐź Đ´ĐťŃ ĐşĐžŃĐžŃОгО ŃвНŃĐľŃŃŃ MyClass
}
[MyClass2]::new().Smile($true)
PowerShell áá˝ááş áĄááŹááášááŻááťáŹá¸áážááˇáş ááŻááşááąáŹááşááźááşá¸áááŻááşáᏠááťá˝ááşáŻááşáááŻáˇáááąáŹáşááźááťááşáááş ááźáŽá¸ááźááˇáşá áŻáśáááşáᯠááááŻáááŻááşááŤá áĄáąáŹááşááŤááŻááşááąáážáŻááťáŹá¸áá˝ááşá ááťá˝ááşáŻááşáááŻáˇáááş áááşá¸áĄáŹá¸ áááşáá˝áąáˇááťááąáŹáĽáááŹááťáŹá¸ááźááˇáş áááşáážááŻááşá¸áĄáąáŹááşááźááŻá¸á áŹá¸ááŤáááş- á áŽá¸ááŽá¸áááášá áááźáąáŹááşááąáŹááşá¸ááŤá¸áááş PowerShell áááŻááźááşáááŻáášáááŽááąáŹáˇááşáá˛áĄá áááşáĄáááŻááşá¸ááťáŹá¸áážááˇáşááąáŤááşá¸á ááşááźááşá¸áááŻááşááŹááá ášá áááşááťáŹá¸áĄáá˝ááş áááşáá˝ážááşá¸ááŤáááşá ááááşáĄáááŻááşá¸ááťáŹá¸ááᯠáĄáąáŹááşááŤáááˇáşááşááťáŹá¸áá˝ááş ááźááˇáşáážáŻáááŻááşááŤáááşá
source: www.habr.com
