ืžื”ื• Windows PowerShell ื•ืœืžื” ื”ื•ื ืžืฉืžืฉ? ื—ืœืง 4: ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉื™ืขื•ืจื™ื ืžืฉืœื•

ืžื”ื• Windows PowerShell ื•ืœืžื” ื”ื•ื ืžืฉืžืฉ? ื—ืœืง 4: ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉื™ืขื•ืจื™ื ืžืฉืœื•

ืคืœื˜ ื”ื˜ืงืกื˜ ืฉืœ ืคืงื•ื“ื•ืช ื‘ื—ืœื•ืŸ ื”ืžืชื•ืจื’ืžืŸ ืฉืœ PowerShell ื”ื•ื ืจืง ื“ืจืš ืœื”ืฆื™ื’ ืžื™ื“ืข ื‘ืฆื•ืจื” ื”ืžืชืื™ืžื” ืœืชืคื™ืกื” ืื ื•ืฉื™ืช. ื‘ืขืฆื ื™ื•ื ืจื‘ื™ืขื™ ื”ืชืžืงื“ ืœืขื‘ื•ื“ ืขื ืื•ื‘ื™ื™ืงื˜ื™ื: cmdlets ื•ืคื•ื ืงืฆื™ื•ืช ืžืงื‘ืœื™ื ืื•ืชื ื›ืงืœื˜ ื• ื—ื–ืจ ื‘ื™ืฆื™ืื”, ื•ืกื•ื’ื™ ื”ืžืฉืชื ื™ื ื”ื–ืžื™ื ื™ื ื‘ืื•ืคืŸ ืื™ื ื˜ืจืืงื˜ื™ื‘ื™ ื•ื‘ืกืงืจื™ืคื˜ื™ื ืžื‘ื•ืกืกื™ื ืขืœ ืžื—ืœืงื•ืช NET. ื‘ืžืืžืจ ื”ืจื‘ื™ืขื™ ืฉืœ ื”ืกื“ืจื” ื ืœืžื“ ื‘ื™ืชืจ ืคื™ืจื•ื˜ ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื.

ืื•ืคืฆื™ื•ืช:

ืื•ื‘ื™ื™ืงื˜ื™ื ื‘- PowerShell
ืฆืคื™ื™ื” ื‘ืžื‘ื ื” ืฉืœ ื—ืคืฆื™ื
ืกื™ื ื•ืŸ ื—ืคืฆื™ื
ืžื™ื•ืŸ ื—ืคืฆื™ื
ื‘ื—ื™ืจืช ื—ืคืฆื™ื ื•ื—ืœืงื™ื”ื
ForEach-Object, Group-Object ื•ืžื™ื“ื”-Object
ื™ืฆื™ืจืช ืื•ื‘ื™ื™ืงื˜ื™ NET ื•-COM (New-Object)
ืงืจื™ืื” ืœืฉื™ื˜ื•ืช ืกื˜ื˜ื™ื•ืช
ื”ืงืœื“ PSCustomObject
ื™ืฆื™ืจืช ืฉื™ืขื•ืจื™ื ืžืฉืœืš

ืื•ื‘ื™ื™ืงื˜ื™ื ื‘- PowerShell

ื ื–ื›ื™ืจ ืฉืื•ื‘ื™ื™ืงื˜ ื”ื•ื ืื•ืกืฃ ืฉืœ ืฉื“ื•ืช ื ืชื•ื ื™ื (ืžืืคื™ื™ื ื™ื, ืื™ืจื•ืขื™ื ื•ื›ื•') ื•ืฉื™ื˜ื•ืช ืœืขื™ื‘ื•ื“ื (ืฉื™ื˜ื•ืช). ื”ืžื‘ื ื” ืฉืœื• ืžื•ื’ื“ืจ ืขืœ ื™ื“ื™ ืกื•ื’, ื”ืžื‘ื•ืกืก ื‘ื“ืจืš ื›ืœืœ ืขืœ ืžื—ืœืงื•ืช ื”ืžืฉืžืฉื•ืช ื‘ืคืœื˜ืคื•ืจืžืช .NET Core ื”ืžืื•ื—ื“ืช. ืืคืฉืจ ื’ื ืœืขื‘ื•ื“ ืขื ืื•ื‘ื™ื™ืงื˜ื™ COM, CIM (WMI) ื•-ADSI. ื“ืจื•ืฉื™ื ืžืืคื™ื™ื ื™ื ื•ืฉื™ื˜ื•ืช ืœื‘ื™ืฆื•ืข ืคืขื•ืœื•ืช ืฉื•ื ื•ืช ื‘ื ืชื•ื ื™ื; ื‘ื ื•ืกืฃ, ื‘-PowerShell, ื ื™ืชืŸ ืœื”ืขื‘ื™ืจ ืื•ื‘ื™ื™ืงื˜ื™ื ื›ืืจื’ื•ืžื ื˜ื™ื ืœืคื•ื ืงืฆื™ื•ืช ื•-cmdlet, ืœื”ืงืฆื•ืช ืืช ื”ืขืจื›ื™ื ืฉืœื”ื ืœืžืฉืชื ื™ื, ื•ื™ืฉ ื’ื ืžื ื’ื ื•ืŸ ื”ืจื›ื‘ ืคืงื•ื“ื” (ืžืกื•ืข ืื• ืฆื™ื ื•ืจ). ื›ืœ ืคืงื•ื“ื” ื‘ืฆื™ื ื•ืจ ืžืขื‘ื™ืจื” ืืช ื”ืคืœื˜ ืฉืœื” ืœืคืงื•ื“ื” ื”ื‘ืื” ื‘ืชื•ืจื”, ืื•ื‘ื™ื™ืงื˜ ืื—ืจ ืื•ื‘ื™ื™ืงื˜. ืœืขื™ื‘ื•ื“, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘-cmdlets ืžื”ื™ื“ื•ืจ ืื• ืœื™ืฆื•ืจ ืžืฉืœืš ืžืืคื™ื™ื ื™ื ืžืชืงื“ืžื™ืืœื‘ืฆืข ืžื ื™ืคื•ืœืฆื™ื•ืช ืฉื•ื ื•ืช ืขื ืื•ื‘ื™ื™ืงื˜ื™ื ื‘ืฆื ืจืช: ืกื™ื ื•ืŸ, ืžื™ื•ืŸ, ืงื™ื‘ื•ืฅ ื•ืืคื™ืœื• ืฉื™ื ื•ื™ ื”ืžื‘ื ื” ืฉืœื”ื. ืœืฉื™ื“ื•ืจ ื ืชื•ื ื™ื ื‘ืฆื•ืจื” ื–ื• ื™ืฉ ื™ืชืจื•ืŸ ืจืฆื™ื ื™: ื”ืฆื•ื•ืช ื”ืžืงื‘ืœ ืื™ื ื• ืฆืจื™ืš ืœื ืชื— ืืช ื–ืจื ื”ื‘ืชื™ื (ื˜ืงืกื˜), ื›ืœ ื”ืžื™ื“ืข ื”ื“ืจื•ืฉ ื ืฉืœืฃ ื‘ืงืœื•ืช ืขืœ ื™ื“ื™ ืงืจื™ืื” ืœืžืืคื™ื™ื ื™ื ื•ืœืฉื™ื˜ื•ืช ื”ืžืชืื™ืžื•ืช.

ืฆืคื™ื™ื” ื‘ืžื‘ื ื” ืฉืœ ื—ืคืฆื™ื

ืœื“ื•ื’ืžื”, ื‘ื•ืื• ื ืจื™ืฅ ืืช ื”-cmdlet Get-Process, ื”ืžืืคืฉืจ ืœืงื‘ืœ ืžื™ื“ืข ืขืœ ื”ืชื”ืœื™ื›ื™ื ื”ืจืฆื™ื ื‘ืžืขืจื›ืช:

ืžื”ื• Windows PowerShell ื•ืœืžื” ื”ื•ื ืžืฉืžืฉ? ื—ืœืง 4: ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉื™ืขื•ืจื™ื ืžืฉืœื•

ื–ื” ื™ืฆื™ื’ ื›ืžื” ื ืชื•ื ื™ ื˜ืงืกื˜ ืžืขื•ืฆื‘ื™ื ืฉืื™ื ื ื ื•ืชื ื™ื ืžื•ืฉื’ ืœื’ื‘ื™ ื”ืžืืคื™ื™ื ื™ื ืฉืœ ื”ืื•ื‘ื™ื™ืงื˜ื™ื ื”ืžื•ื—ื–ืจื™ื ื•ื”ืฉื™ื˜ื•ืช ืฉืœื”ื. ื›ื“ื™ ืœื›ื•ื•ื ืŸ ืืช ื”ืคืœื˜, ืขืœื™ื ื• ืœืœืžื•ื“ ื›ื™ืฆื“ ืœื‘ื—ื•ืŸ ืืช ื”ืžื‘ื ื” ืฉืœ ืื•ื‘ื™ื™ืงื˜ื™ื, ื•ื”-cmdlet Get-Member ื™ืขื–ื•ืจ ืœื ื• ื‘ื›ืš:

Get-Process | Get-Member

ืžื”ื• Windows PowerShell ื•ืœืžื” ื”ื•ื ืžืฉืžืฉ? ื—ืœืง 4: ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉื™ืขื•ืจื™ื ืžืฉืœื•

ื›ืืŸ ื›ื‘ืจ ืจื•ืื™ื ืืช ื”ืกื•ื’ ื•ื”ืžื‘ื ื”, ื•ื‘ืขื–ืจืช ืคืจืžื˜ืจื™ื ื ื•ืกืคื™ื ื ื•ื›ืœ, ืœืžืฉืœ, ืœื”ืฆื™ื’ ืจืง ืืช ื”ืžืืคื™ื™ื ื™ื ืฉืœ ื”ืื•ื‘ื™ื™ืงื˜ ืฉื ื›ืœืœ ื‘ืงืœื˜:

Get-Process | Get-Member -MemberType Property

ื™ื“ืข ื–ื” ื™ื”ื™ื” ื ื—ื•ืฅ ื›ื“ื™ ืœืคืชื•ืจ ื‘ืขื™ื•ืช ื ื™ื”ื•ืœ ื‘ืื•ืคืŸ ืื™ื ื˜ืจืืงื˜ื™ื‘ื™ ืื• ื›ื“ื™ ืœื›ืชื•ื‘ ืกืงืจื™ืคื˜ื™ื ืžืฉืœืš: ืœืžืฉืœ, ื›ื“ื™ ืœืงื‘ืœ ืžื™ื“ืข ืขืœ ืชื”ืœื™ื›ื™ื ืชืœื•ื™ื™ื ื‘ืืžืฆืขื•ืช ื”ืžืืคื™ื™ืŸ Reponding.

ืกื™ื ื•ืŸ ื—ืคืฆื™ื

PowerShell ืžืืคืฉืจ ืœื”ืขื‘ื™ืจ ืื•ื‘ื™ื™ืงื˜ื™ื ื”ืขื•ืžื“ื™ื ื‘ืชื ืื™ ืžืกื•ื™ื ื“ืจืš ืฆื™ื ื•ืจ:

Where-Object { ะฑะปะพะบ ัั†ะตะฝะฐั€ะธั }

ื”ืชื•ืฆืื” ืฉืœ ื‘ื™ืฆื•ืข ื‘ืœื•ืง ื”ืกืงืจื™ืคื˜ ื‘ืชื•ืš ื”ืกื•ื’ืจื™ื™ื ื—ื™ื™ื‘ืช ืœื”ื™ื•ืช ืขืจืš ื‘ื•ืœื™ืื ื™. ืื ื–ื” ื ื›ื•ืŸ ($true), ื”ืื•ื‘ื™ื™ืงื˜ ืฉื ืงืœื˜ ืœ-cmdlet Where-Object ื™ื•ืขื‘ืจ ืœืื•ืจืš ื”ืฆื™ื ื•ืจ, ืื—ืจืช ($false) ื”ื•ื ื™ื™ืžื—ืง. ืœื“ื•ื’ืžื”, ื‘ื•ืื• ื ืฆื™ื’ ืจืฉื™ืžื” ืฉืœ ืฉื™ืจื•ืชื™ Windows Server ืฉื”ื•ืคืกืงื•, ื›ืœื•ืžืจ. ืืœื” ืฉืžืืคื™ื™ืŸ ื”ืกื˜ื˜ื•ืก ืฉืœื”ื ืžื•ื’ื“ืจ ืœ-"Stopped":

Get-Service | Where-Object {$_.Status -eq "Stopped"}

ืžื”ื• Windows PowerShell ื•ืœืžื” ื”ื•ื ืžืฉืžืฉ? ื—ืœืง 4: ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉื™ืขื•ืจื™ื ืžืฉืœื•

ื›ืืŸ ืฉื•ื‘ ืื ื• ืจื•ืื™ื ื™ื™ืฆื•ื’ ื˜ืงืกื˜ื•ืืœื™, ืื‘ืœ ืื ืืชื” ืจื•ืฆื” ืœื”ื‘ื™ืŸ ืืช ื”ืกื•ื’ ื•ื”ืžื‘ื ื” ื”ืคื ื™ืžื™ ืฉืœ ื”ืื•ื‘ื™ื™ืงื˜ื™ื ื”ืขื•ื‘ืจื™ื ื‘ืฆื™ื ื•ืจ ื–ื” ืœื ืงืฉื”:

Get-Service | Where-Object {$_.Status -eq "Stopped"} | Get-Member

ืžื”ื• Windows PowerShell ื•ืœืžื” ื”ื•ื ืžืฉืžืฉ? ื—ืœืง 4: ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉื™ืขื•ืจื™ื ืžืฉืœื•

ืžื™ื•ืŸ ื—ืคืฆื™ื

ื‘ืขืช ืขื™ื‘ื•ื“ ืฆื ืจืช ืฉืœ ืื•ื‘ื™ื™ืงื˜ื™ื, ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื™ืฉ ืฆื•ืจืš ืœืžื™ื™ืŸ ืื•ืชื. ื”-cmdlet Sort-Object ืžืขื‘ื™ืจ ืืช ืฉืžื•ืช ื”ืžืืคื™ื™ื ื™ื (ืžืคืชื—ื•ืช ืžื™ื•ืŸ) ื•ืžื—ื–ื™ืจ ืื•ื‘ื™ื™ืงื˜ื™ื ืžืกื•ื“ืจื™ื ืœืคื™ ื”ืขืจื›ื™ื ืฉืœื”ื. ืงืœ ืœืžื™ื™ืŸ ืืช ื”ืคืœื˜ ืฉืœ ืชื”ืœื™ื›ื™ื ืคื•ืขืœื™ื ืœืคื™ ื–ืžืŸ ื”-CPU (ืžืืคื™ื™ืŸ CPU):

Get-Process | Sort-Object โ€“Property cpu

ื ื™ืชืŸ ืœื”ืฉืžื™ื˜ ืืช ื”ืคืจืžื˜ืจ -Property ื‘ืขืช ืงืจื™ืื” ืœ-Sort-Object cmdlet; ื”ื•ื ืžืฉืžืฉ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ. ืœืžื™ื•ืŸ ื”ืคื•ืš, ื”ืฉืชืžืฉ ื‘ืคืจืžื˜ืจ -ื‘ื™ืจื™ื“ื”:

Get-Process | Sort-Object cpu -Descending

ืžื”ื• Windows PowerShell ื•ืœืžื” ื”ื•ื ืžืฉืžืฉ? ื—ืœืง 4: ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉื™ืขื•ืจื™ื ืžืฉืœื•

ื‘ื—ื™ืจืช ื—ืคืฆื™ื ื•ื—ืœืงื™ื”ื

ื”-cmdlet Select-Object ืžืืคืฉืจ ืœืš ืœื‘ื—ื•ืจ ืžืกืคืจ ืžืกื•ื™ื ืฉืœ ืื•ื‘ื™ื™ืงื˜ื™ื ื‘ืชื—ื™ืœืช ืื• ื‘ืกื•ืฃ ืฆื™ื ื•ืจ ื‘ืืžืฆืขื•ืช ื”ืคืจืžื˜ืจื™ื -First ืื• -Last. ื‘ืขื–ืจืชื• ืชื•ื›ืœื• ืœื‘ื—ื•ืจ ืื•ื‘ื™ื™ืงื˜ื™ื ื‘ื•ื“ื“ื™ื ืื• ืžืืคื™ื™ื ื™ื ืžืกื•ื™ืžื™ื, ื•ื’ื ืœื™ืฆื•ืจ ืื•ื‘ื™ื™ืงื˜ื™ื ื—ื“ืฉื™ื ืขืœ ืกืžืš ืื•ืชื. ื‘ื•ืื• ื ืกืชื›ืœ ื›ื™ืฆื“ ื”-cmdlet ืขื•ื‘ื“ ื‘ืืžืฆืขื•ืช ื“ื•ื’ืžืื•ืช ืคืฉื•ื˜ื•ืช.

ื”ืคืงื•ื“ื” ื”ื‘ืื” ืžืฆื™ื’ื” ืžื™ื“ืข ืขืœ 10 ื”ืชื”ืœื™ื›ื™ื ืฉืฆื•ืจื›ื™ื ืืช ื”ื›ืžื•ืช ื”ืžืงืกื™ืžืœื™ืช ืฉืœ RAM (ืžืืคื™ื™ืŸ WS):

Get-Process | Sort-Object WS -Descending | Select-Object -First 10

ืžื”ื• Windows PowerShell ื•ืœืžื” ื”ื•ื ืžืฉืžืฉ? ื—ืœืง 4: ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉื™ืขื•ืจื™ื ืžืฉืœื•

ืืชื” ื™ื›ื•ืœ ืœื‘ื—ื•ืจ ืจืง ืžืืคื™ื™ื ื™ื ืžืกื•ื™ืžื™ื ืฉืœ ืื•ื‘ื™ื™ืงื˜ื™ื ื”ืขื•ื‘ืจื™ื ื‘ืฆื™ื ื•ืจ ื•ืœื™ืฆื•ืจ ืžืืคื™ื™ื ื™ื ื—ื“ืฉื™ื ืขืœ ืกืžืš ืื•ืชื:

Get-Process | Select-Object ProcessName, Id -First 1

ื›ืชื•ืฆืื” ืžื”ืคืขืœืช ื”ืฆื™ื ื•ืจ ื ืงื‘ืœ ืื•ื‘ื™ื™ืงื˜ ื—ื“ืฉ ืฉืžื‘ื ื”ื• ื™ื”ื™ื” ืฉื•ื ื” ืžื”ืžื‘ื ื” ืฉื™ื—ื–ื™ืจ ื”-Cmdlet Get-Process. ื‘ื•ืื• ื ื•ื•ื“ื ื–ืืช ื‘ืืžืฆืขื•ืช Get-Member:

Get-Process | Select-Object ProcessName, Id -First 1 | Get-Member

ืžื”ื• Windows PowerShell ื•ืœืžื” ื”ื•ื ืžืฉืžืฉ? ื—ืœืง 4: ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉื™ืขื•ืจื™ื ืžืฉืœื•

ืฉื™ืžื• ืœื‘ ืฉ- Select-Object ืžื—ื–ื™ืจ ืื•ื‘ื™ื™ืงื˜ ื‘ื•ื“ื“ (-1 ืจืืฉื•ืŸ) ืฉื™ืฉ ืœื• ืจืง ืฉื ื™ื™ื ืžื”ืฉื“ื•ืช ืฉืฆื™ื™ื ื•: ื”ืขืจื›ื™ื ืฉืœื”ื ื”ื•ืขืชืงื• ืžื”ืื•ื‘ื™ื™ืงื˜ ื”ืจืืฉื•ืŸ ืฉื”ื•ืขื‘ืจ ืœืฆื™ื ื•ืจ ืขืœ ื™ื“ื™ ื”-cmdlet Get-Process. ืื—ืช ื”ื“ืจื›ื™ื ืœื™ืฆื•ืจ ืื•ื‘ื™ื™ืงื˜ื™ื ื‘ืกืงืจื™ืคื˜ื™ื ืฉืœ PowerShell ืžื‘ื•ืกืกืช ืขืœ ืฉื™ืžื•ืฉ ื‘- Select-Object:

$obj = Get-Process | Select-Object ProcessName, Id -First 1
$obj.GetType()

ืžื”ื• Windows PowerShell ื•ืœืžื” ื”ื•ื ืžืฉืžืฉ? ื—ืœืง 4: ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉื™ืขื•ืจื™ื ืžืฉืœื•

ื‘ืืžืฆืขื•ืช Select-Object, ื ื™ืชืŸ ืœื”ื•ืกื™ืฃ ืžืืคื™ื™ื ื™ื ืžื—ื•ืฉื‘ื™ื ืœืื•ื‘ื™ื™ืงื˜ื™ื ืฉืฆืจื™ื›ื™ื ืœื”ื™ื•ืช ืžื™ื•ืฆื’ื™ื ื‘ืชื•ืจ ื˜ื‘ืœืื•ืช ื—ืฉื™ืฉ. ื‘ืžืงืจื” ื–ื”, ื”ืขืจืš ืฉืœ ื”ืžืคืชื— ื”ืจืืฉื•ืŸ ืฉืœื• ืžืชืื™ื ืœืฉื ื”ืžืืคื™ื™ืŸ, ื•ื”ืขืจืš ืฉืœ ื”ืžืคืชื— ื”ืฉื ื™ ืžืชืื™ื ืœืขืจืš ื”ืžืืคื™ื™ืŸ ืขื‘ื•ืจ ืจื›ื™ื‘ ื”ืฆื™ื ื•ืจ ื”ื ื•ื›ื—ื™:

Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}}

ืžื”ื• Windows PowerShell ื•ืœืžื” ื”ื•ื ืžืฉืžืฉ? ื—ืœืง 4: ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉื™ืขื•ืจื™ื ืžืฉืœื•

ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ืžื‘ื ื” ื”ื—ืคืฆื™ื ื”ืขื•ื‘ืจื™ื ื“ืจืš ื”ืžืกื•ืข:

Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}} | Get-Member

ืžื”ื• Windows PowerShell ื•ืœืžื” ื”ื•ื ืžืฉืžืฉ? ื—ืœืง 4: ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉื™ืขื•ืจื™ื ืžืฉืœื•

ForEach-Object, Group-Object ื•ืžื™ื“ื”-Object

ื™ืฉื ื cmdlets ืื—ืจื™ื ืœืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื. ื›ื“ื•ื’ืžื”, ื‘ื•ืื• ื ื“ื‘ืจ ืขืœ ืฉืœื•ืฉืช ื”ืฉื™ืžื•ืฉื™ื™ื ื‘ื™ื•ืชืจ:

ForEach-Object ืžืืคืฉืจ ืœืš ืœื”ืจื™ืฅ ืงื•ื“ PowerShell ืขื‘ื•ืจ ื›ืœ ืื•ื‘ื™ื™ืงื˜ ื‘ืฆื™ื ื•ืจ:

ForEach-Object { ะฑะปะพะบ ัั†ะตะฝะฐั€ะธั }

ืงื‘ื•ืฆื”-ืื•ื‘ื™ื™ืงื˜ ืžืงื‘ืฅ ืื•ื‘ื™ื™ืงื˜ื™ื ืœืคื™ ืขืจืš ืžืืคื™ื™ืŸ:

Group-Object PropertyName

ืื ืชืคืขื™ืœ ืื•ืชื• ืขื ื”ืคืจืžื˜ืจ -NoElement, ืชื•ื›ืœ ืœื’ืœื•ืช ืืช ืžืกืคืจ ื”ืืœืžื ื˜ื™ื ื‘ืงื‘ื•ืฆื•ืช.

ืžื™ื“ื”-ื—ืคืฅ ืื•ืกืฃ ืคืจืžื˜ืจื™ ืกื™ื›ื•ื ืฉื•ื ื™ื ืœืคื™ ืขืจื›ื™ ืฉื“ื•ืช ืื•ื‘ื™ื™ืงื˜ ื‘ืฆื ืจืช (ืžื—ืฉื‘ ืืช ื”ืกื›ื•ื, ื•ื’ื ืžื•ืฆื ืืช ื”ืขืจืš ื”ืžื™ื ื™ืžืœื™, ื”ืžืงืกื™ืžืœื™ ืื• ื”ืžืžื•ืฆืข):

Measure-Object -Property PropertyName -Minimum -Maximum -Average -Sum

ื‘ื“ืจืš ื›ืœืœ, ื”-cmdlets ื”ื ื™ื“ื•ื ื™ื ืžืฉืžืฉื™ื ื‘ืื•ืคืŸ ืื™ื ื˜ืจืืงื˜ื™ื‘ื™, ื•ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื ื•ืฆืจื™ื ื‘ืกืงืจื™ืคื˜ื™ื. ืคื•ื ืงืฆื™ื•ืช ืขื ื‘ืœื•ืงื™ื Begin, Process ื•-End.

ื™ืฆื™ืจืช ืื•ื‘ื™ื™ืงื˜ื™ NET ื•-COM (New-Object)

ื™ืฉื ื ืจื›ื™ื‘ื™ ืชื•ื›ื ื” ืจื‘ื™ื ืขื ืžืžืฉืงื™ .NET Core ื•-COM ืฉื™ืžื•ืฉื™ื™ื ืœืžื ื”ืœื™ ืžืขืจื›ืช. ื‘ืืžืฆืขื•ืช ื”ืžื—ืœืงื” System.Diagnostics.EventLog, ืืชื” ื™ื›ื•ืœ ืœื ื”ืœ ื™ื•ืžื ื™ ืžืขืจื›ืช ื™ืฉื™ืจื•ืช ืž-Windows PowerShell. ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ื“ื•ื’ืžื” ืœื™ืฆื™ืจืช ืžื•ืคืข ืฉืœ ืžื—ืœืงื” ื–ื• ื‘ืืžืฆืขื•ืช ื”-cmdlet New-Object ืขื ื”ืคืจืžื˜ืจ -TypeName:

New-Object -TypeName System.Diagnostics.EventLog

ืžื”ื• Windows PowerShell ื•ืœืžื” ื”ื•ื ืžืฉืžืฉ? ื—ืœืง 4: ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉื™ืขื•ืจื™ื ืžืฉืœื•

ืžื›ื™ื•ื•ืŸ ืฉืœื ืฆื™ื™ื ื• ื™ื•ืžืŸ ืื™ืจื•ืขื™ื ืกืคืฆื™ืคื™, ื”ืžื•ืคืข ื”ืžืชืงื‘ืœ ืฉืœ ื”ืžื—ืœืงื” ืื™ื ื• ืžื›ื™ืœ ื ืชื•ื ื™ื. ื›ื“ื™ ืœืฉื ื•ืช ื–ืืช, ืขืœื™ืš ืœืงืจื•ื ืœืฉื™ื˜ืช ื‘ื ืื™ ืžื™ื•ื—ื“ืช ื‘ืžื”ืœืš ื™ืฆื™ืจืชื” ื‘ืืžืฆืขื•ืช ื”ืคืจืžื˜ืจ -ArgumentList. ืื ื‘ืจืฆื•ื ื ื• ืœื’ืฉืช ืœื™ื•ืžืŸ ื”ื™ื™ืฉื•ื, ืขืœื™ื ื• ืœื”ืขื‘ื™ืจ ืืช ื”ืžื—ืจื•ื–ืช "Application" ื›ืืจื’ื•ืžื ื˜ ืœื‘ื ืื™:

$AppLog = New-Object -TypeName System.Diagnostics.EventLog -ArgumentList Application
$AppLog

ืžื”ื• Windows PowerShell ื•ืœืžื” ื”ื•ื ืžืฉืžืฉ? ื—ืœืง 4: ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉื™ืขื•ืจื™ื ืžืฉืœื•

ืฉื™ืžื• ืœื‘ ืฉืฉืžืจื ื• ืืช ื”ืคืœื˜ ืฉืœ ื”ืคืงื•ื“ื” ื‘ืžืฉืชื ื” $AppLog. ืœืžืจื•ืช ืฉื‘ื“ืจืš ื›ืœืœ ืžืฉืชืžืฉื™ื ื‘ืฆื™ื ื•ืจื•ืช ื‘ืžืฆื‘ ืื™ื ื˜ืจืืงื˜ื™ื‘ื™, ื›ืชื™ื‘ืช ืกืงืจื™ืคื˜ื™ื ื“ื•ืจืฉืช ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืฉืžื™ืจื” ืขืœ ื”ืคื ื™ื” ืœืื•ื‘ื™ื™ืงื˜. ื‘ื ื•ืกืฃ, ืžื—ืœืงื•ืช ื”ืœื™ื‘ื” .NET Core ื›ืœื•ืœื•ืช ื‘ืžืจื—ื‘ ื”ืฉืžื•ืช ืฉืœ ื”ืžืขืจื›ืช: PowerShell ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ืžื—ืคืฉืช ืกื•ื’ื™ื ืฉืฆื•ื™ื ื• ื‘ื•, ื›ืš ืฉื›ืชื™ื‘ืช Diagnostics.EventLog ื‘ืžืงื•ื System.Diagnostics.EventLog ื”ื™ื ื“ื™ ื ื›ื•ื ื”.

ื›ื“ื™ ืœืขื‘ื•ื“ ืขื ื”ื™ื•ืžืŸ, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืฉื™ื˜ื•ืช ื”ืžืชืื™ืžื•ืช:

$AppLog | Get-Member -MemberType Method

ืžื”ื• Windows PowerShell ื•ืœืžื” ื”ื•ื ืžืฉืžืฉ? ื—ืœืง 4: ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉื™ืขื•ืจื™ื ืžืฉืœื•

ื ื ื™ื— ืฉื”ื•ื ืžื ื•ืงื” ืขืœ ื™ื“ื™ ืฉื™ื˜ืช Clear() ืื ื™ืฉ ื–ื›ื•ื™ื•ืช ื’ื™ืฉื”:

$AppLog.Clear()

ื”-cmdlet New-Object ืžืฉืžืฉ ื’ื ืœืขื‘ื•ื“ื” ืขื ืจื›ื™ื‘ื™ COM. ื™ืฉ ื“ื™ ื”ืจื‘ื” ืžื”ื - ืžื”ืกืคืจื™ื•ืช ื”ืžืกื•ืคืงื•ืช ืขื ืฉืจืช ื”ืกืงืจื™ืคื˜ื™ื ืฉืœ Windows ื•ืขื“ ืœื™ื™ืฉื•ืžื™ ActiveX, ื›ืžื• Internet Explorer. ื›ื“ื™ ืœื™ืฆื•ืจ ืื•ื‘ื™ื™ืงื˜ COM, ืขืœื™ืš ืœื”ื’ื“ื™ืจ ืืช ื”ืคืจืžื˜ืจ -ComObject ืขื ื”-ProgId ื”ืชื•ื›ื ื•ืชื™ ืฉืœ ื”ืžื—ืœืงื” ื”ืจืฆื•ื™ื”:

New-Object -ComObject WScript.Shell
New-Object -ComObject WScript.Network
New-Object -ComObject Scripting.Dictionary
New-Object -ComObject Scripting.FileSystemObject

ื›ื“ื™ ืœื™ืฆื•ืจ ืื•ื‘ื™ื™ืงื˜ื™ื ืžืฉืœืš ืขื ืžื‘ื ื” ืฉืจื™ืจื•ืชื™, ื”ืฉื™ืžื•ืฉ ื‘-New-Object ื ืจืื” ืืจื›ืื™ ื•ืžืกื•ืจื‘ืœ ืžื“ื™; ื”-cmdlet ื”ื–ื” ืžืฉืžืฉ ืœืขื‘ื•ื“ื” ืขื ืจื›ื™ื‘ื™ ืชื•ื›ื ื” ื—ื™ืฆื•ื ื™ื™ื ืœ-PowerShell. ื‘ืžืืžืจื™ื ืขืชื™ื“ื™ื™ื ื ื•ืฉื ื–ื” ื™ื™ื“ื•ืŸ ื‘ื™ืชืจ ืคื™ืจื•ื˜. ื‘ื ื•ืกืฃ ืœืื•ื‘ื™ื™ืงื˜ื™ .NET ื•-COM, ื ื—ืงื•ืจ ื’ื ืื•ื‘ื™ื™ืงื˜ื™ CIM (WMI) ื•-ADSI.

ืงืจื™ืื” ืœืฉื™ื˜ื•ืช ืกื˜ื˜ื™ื•ืช

ื—ืœืง ืžืฉื™ืขื•ืจื™ .NET Core ืื™ื ื ื ื™ืชื ื™ื ืœืžื•ืคืข, ื›ื•ืœืœ System.Environment ื•-System.Math. ื”ื ืกื˜ึธื˜ึดื™ ื•ืžื›ื™ืœื™ื ืจืง ืžืืคื™ื™ื ื™ื ื•ืฉื™ื˜ื•ืช ืกื˜ื˜ื™ื•ืช. ืืœื• ื”ืŸ ื‘ืขืฆื ืกืคืจื™ื•ืช ื”ืชื™ื™ื—ืกื•ืช ื”ืžืฉืžืฉื•ืช ืœืœื ื™ืฆื™ืจืช ืื•ื‘ื™ื™ืงื˜ื™ื. ืืชื” ื™ื›ื•ืœ ืœื”ืชื™ื™ื—ืก ืœืžื—ืœืงื” ืกื˜ื˜ื™ืช ื“ืจืš ืžื™ืœื•ืœื™ืช ืขืœ ื™ื“ื™ ืฆื™ืจื•ืฃ ืฉื ื”ืกื•ื’ ื‘ืกื•ื’ืจื™ื™ื ืžืจื•ื‘ืขื™ื. ืขื ื–ืืช, ืื ื ืกืชื›ืœ ืขืœ ืžื‘ื ื” ื”ืื•ื‘ื™ื™ืงื˜ ื‘ืืžืฆืขื•ืช Get-Member, ื ืจืื” ืืช ื”ืกื•ื’ System.RuntimeType ื‘ืžืงื•ื System.Environment:

[System.Environment] | Get-Member

ืžื”ื• Windows PowerShell ื•ืœืžื” ื”ื•ื ืžืฉืžืฉ? ื—ืœืง 4: ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉื™ืขื•ืจื™ื ืžืฉืœื•

ื›ื“ื™ ืœื”ืฆื™ื’ ืจืง ื—ื‘ืจื™ื ืกื˜ื˜ื™ื™ื, ื”ืชืงืฉืจ ืœ-Get-Member ืขื ื”ืคืจืžื˜ืจ -Static (ืฉื™ื ืœื‘ ืœืกื•ื’ ื”ืื•ื‘ื™ื™ืงื˜):

[System.Environment] | Get-Member -Static

ืžื”ื• Windows PowerShell ื•ืœืžื” ื”ื•ื ืžืฉืžืฉ? ื—ืœืง 4: ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉื™ืขื•ืจื™ื ืžืฉืœื•

ื›ื“ื™ ืœื’ืฉืช ืœืžืืคื™ื™ื ื™ื ื•ืœืฉื™ื˜ื•ืช ืกื˜ื˜ื™ื•ืช, ื”ืฉืชืžืฉ ื‘ืฉื ื™ ื ืงื•ื“ืชื™ื™ื ืขื•ืงื‘ื™ื ื‘ืžืงื•ื ื ืงื•ื“ื” ืื—ืจื™ ื”ืžื™ืœื” ื”ืžื™ืœื•ืœื™:

[System.Environment]::OSVersion

ืื•

$test=[System.Math]::Sqrt(25) 
$test
$test.GetType()

ืžื”ื• Windows PowerShell ื•ืœืžื” ื”ื•ื ืžืฉืžืฉ? ื—ืœืง 4: ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉื™ืขื•ืจื™ื ืžืฉืœื•

ื”ืงืœื“ PSCustomObject

ื‘ื™ืŸ ืกื•ื’ื™ ื”ื ืชื•ื ื™ื ื”ืจื‘ื™ื ื”ื–ืžื™ื ื™ื ื‘- PowerShell, ืจืื•ื™ ืœื”ื–ื›ื™ืจ ืืช PSCustomObject, ื”ืžื™ื•ืขื“ ืœืื—ืกื•ืŸ ืื•ื‘ื™ื™ืงื˜ื™ื ื‘ืขืœื™ ืžื‘ื ื” ืฉืจื™ืจื•ืชื™. ื™ืฆื™ืจืช ืื•ื‘ื™ื™ืงื˜ ื›ื–ื” ื‘ืืžืฆืขื•ืช ื”-cmdlet New-Object ื ื—ืฉื‘ืช ืœื“ืจืš ืงืœืืกื™ืช, ืืš ืžืกื•ืจื‘ืœืช ื•ืžื™ื•ืฉื ืช:

$object = New-Object  โ€“TypeName PSCustomObject -Property @{Name = 'Ivan Danko'; 
                                          City = 'Moscow';
                                          Country = 'Russia'}

ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ืžื‘ื ื” ื”ืื•ื‘ื™ื™ืงื˜:

$object | Get-Member

ืžื”ื• Windows PowerShell ื•ืœืžื” ื”ื•ื ืžืฉืžืฉ? ื—ืœืง 4: ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉื™ืขื•ืจื™ื ืžืฉืœื•

ื”ื—ืœ ืž-PowerShell 3.0, ืชื—ื‘ื™ืจ ื ื•ืกืฃ ื–ืžื™ืŸ:

$object = [PSCustomObject]@{Name = 'Ivan Danko'; 
                                          City = 'Moscow';
                                          Country = 'Russia'
}

ืืชื” ื™ื›ื•ืœ ืœื’ืฉืช ืœื ืชื•ื ื™ื ื‘ืื—ืช ืžื”ื“ืจื›ื™ื ื”ืžืงื‘ื™ืœื•ืช:

$object.Name

$object.'Name'

$value = 'Name'
$object.$value

ื”ื ื” ื“ื•ื’ืžื” ืœื”ืžืจืช hashable ืงื™ื™ื ืœืื•ื‘ื™ื™ืงื˜:

$hash = @{'Name'='Ivan Danko'; 'City'='Moscow'; 'Country'='Russia'}
$hash.GetType()
$object = [pscustomobject]$hash
$object.GetType()

ืžื”ื• Windows PowerShell ื•ืœืžื” ื”ื•ื ืžืฉืžืฉ? ื—ืœืง 4: ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉื™ืขื•ืจื™ื ืžืฉืœื•

ืื—ื“ ื”ื—ืกืจื•ื ื•ืช ืฉืœ ื—ืคืฆื™ื ืžืกื•ื’ ื–ื” ื”ื•ื ืฉืกื“ืจ ื”ืžืืคื™ื™ื ื™ื ืฉืœื”ื ื™ื›ื•ืœ ืœื”ืฉืชื ื•ืช. ื›ื“ื™ ืœื”ื™ืžื ืข ืžื›ืš, ืขืœื™ืš ืœื”ืฉืชืžืฉ ื‘ืชื›ื•ื ื” [ordered]:

$object = [PSCustomObject][ordered]@{Name = 'Ivan Danko'; 
                                          City = 'Moscow';
                                          Country = 'Russia'
}

ื™ืฉื ืŸ ืืคืฉืจื•ื™ื•ืช ื ื•ืกืคื•ืช ืœื™ืฆื™ืจืช ืื•ื‘ื™ื™ืงื˜: ืœืžืขืœื” ื”ืกืชื›ืœื ื• ืขืœ ื”ืฉื™ืžื•ืฉ ื‘-cmdlet ื‘ื—ืจ-ืื•ื‘ื™ื™ืงื˜. ื›ืœ ืžื” ืฉื ื•ืชืจ ื”ื•ื ืœื”ื‘ื™ืŸ ืœื”ื•ืกื™ืฃ ื•ืœื”ืกื™ืจ ืืœืžื ื˜ื™ื. ืœืขืฉื•ืช ื–ืืช ืขื‘ื•ืจ ื”ืื•ื‘ื™ื™ืงื˜ ืžื”ื“ื•ื’ืžื” ื”ืงื•ื“ืžืช ื”ื•ื ื“ื™ ืคืฉื•ื˜:

$object | Add-Member โ€“MemberType NoteProperty โ€“Name Age  โ€“Value 33
$object | Get-Member

ืžื”ื• Windows PowerShell ื•ืœืžื” ื”ื•ื ืžืฉืžืฉ? ื—ืœืง 4: ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉื™ืขื•ืจื™ื ืžืฉืœื•

ื”-cmdlet Add-Member ืžืืคืฉืจ ืœืš ืœื”ื•ืกื™ืฃ ืœื ืจืง ืžืืคื™ื™ื ื™ื, ืืœื ื’ื ืฉื™ื˜ื•ืช ืœ-$object ืฉื ื•ืฆืจ ื‘ืขื‘ืจ ืขืœ ื™ื“ื™ ืฉื™ืžื•ืฉ ื‘ืžื‘ื ื” "-MemberType ScriptMethod":

$ScriptBlock = {
    # ะบะพะด 
}
$object | Add-Member -Name "MyMethod" -MemberType ScriptMethod -Value $ScriptBlock
$object | Get-Member

ืฉื™ืžื• ืœื‘ ืฉื”ืฉืชืžืฉื ื• ื‘ืžืฉืชื ื” $ScriptBlock ืžืกื•ื’ ScriptBlock ื›ื“ื™ ืœืื—ืกืŸ ืืช ื”ืงื•ื“ ืขื‘ื•ืจ ื”ืฉื™ื˜ื” ื”ื—ื“ืฉื”.

ืžื”ื• Windows PowerShell ื•ืœืžื” ื”ื•ื ืžืฉืžืฉ? ื—ืœืง 4: ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉื™ืขื•ืจื™ื ืžืฉืœื•

ื›ื“ื™ ืœื”ืกื™ืจ ืžืืคื™ื™ื ื™ื, ื”ืฉืชืžืฉ ื‘ืฉื™ื˜ื” ื”ืžืชืื™ืžื”:

$object.psobject.properties.remove('Name')

ื™ืฆื™ืจืช ืฉื™ืขื•ืจื™ื ืžืฉืœืš

PowerShell 5.0 ื”ืฆื™ื’ ืืช ื”ื™ื›ื•ืœืช ืœื”ื’ื“ื™ืจ ืฆื™ื•ื ื™ื ืฉื™ืžื•ืฉ ื‘ืชื—ื‘ื™ืจ ื”ืื•ืคื™ื™ื ื™ ืœืฉืคื•ืช ืชื›ื ื•ืช ืžื•ื ื—ื” ืขืฆืžื™ื. ืžื™ืœืช ื”ืฉื™ืจื•ืช Class ืžื™ื•ืขื“ืช ืœื›ืš, ื•ืœืื—ืจื™ื” ื™ืฉ ืœืฆื™ื™ืŸ ืืช ืฉื ื”ืžื—ืœืงื” ื•ืœืชืืจ ืืช ื’ื•ืคื” ื‘ืกื•ื’ืจื™ื™ื ืฉืœ ืžืคืขื™ืœ:

class MyClass
{
    # ั‚ะตะปะพ ะบะปะฐััะฐ
}

ื–ื”ื• ืกื•ื’ .NET Core ืืžื™ืชื™, ืขื ื’ื•ืฃ ืฉืžืชืืจ ืืช ื”ืžืืคื™ื™ื ื™ื, ื”ืฉื™ื˜ื•ืช ื•ืืœืžื ื˜ื™ื ืื—ืจื™ื ืฉืœื•. ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ื“ื•ื’ืžื” ืœื”ื’ื“ืจืช ื”ืžื—ืœืงื” ื”ืคืฉื•ื˜ื” ื‘ื™ื•ืชืจ:

class MyClass 
{
     [string]$Name
     [string]$City
     [string]$Country
}

ื›ื“ื™ ืœื™ืฆื•ืจ ืื•ื‘ื™ื™ืงื˜ (ืžื•ืคืข ืžื—ืœืงื”), ื”ืฉืชืžืฉ ื‘-cmdlet ื—ื“ืฉ-ืื•ื‘ื™ื™ืงื˜, ืื• ืžื™ืœื•ืœื™ืช ืžืกื•ื’ [MyClass] ื• ืฉื™ื˜ื” ืคืกืื•ื“ื•ืกื˜ื˜ื™ืช ื—ื“ืฉ (ื‘ื ืื™ ื‘ืจื™ืจืช ืžื—ื“ืœ):

$object = New-Object -TypeName MyClass

ืื•

$object = [MyClass]::new()

ื‘ื•ืื• ื ื ืชื— ืืช ืžื‘ื ื” ื”ืื•ื‘ื™ื™ืงื˜:

$object | Get-Member

ืžื”ื• Windows PowerShell ื•ืœืžื” ื”ื•ื ืžืฉืžืฉ? ื—ืœืง 4: ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉื™ืขื•ืจื™ื ืžืฉืœื•

ืืœ ืชืฉื›ื— ืœื’ื‘ื™ scope: ืืชื” ืœื ื™ื›ื•ืœ ืœื”ืชื™ื™ื—ืก ืœืฉื ื˜ื™ืคื•ืก ื›ืžื—ืจื•ื–ืช ืื• ืœื”ืฉืชืžืฉ ื‘ืกื•ื’ ืžื™ืœื•ืœื™ ืžื—ื•ืฅ ืœืกืงืจื™ืคื˜ ืื• ื”ืžื•ื“ื•ืœ ืฉื‘ื• ืžื•ื’ื“ืจืช ื”ืžื—ืœืงื”. ื‘ืžืงืจื” ื–ื”, ืคื•ื ืงืฆื™ื•ืช ื™ื›ื•ืœื•ืช ืœื”ื—ื–ื™ืจ ืžื•ืคืขื™ ืžื—ืœืงื” (ืื•ื‘ื™ื™ืงื˜ื™ื) ืฉื™ื”ื™ื• ื ื’ื™ืฉื™ื ืžื—ื•ืฅ ืœืžื•ื“ื•ืœ ืื• ืœืกืงืจื™ืคื˜.

ืœืื—ืจ ื™ืฆื™ืจืช ื”ืื•ื‘ื™ื™ืงื˜, ืžืœื ืืช ื”ืžืืคื™ื™ื ื™ื ืฉืœื•:

$object.Name = 'Ivan Danko'
$object.City = 'Moscow'
$object.Country = 'Russia'
$object

ืžื”ื• Windows PowerShell ื•ืœืžื” ื”ื•ื ืžืฉืžืฉ? ื—ืœืง 4: ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉื™ืขื•ืจื™ื ืžืฉืœื•

ืฉื™ืžื• ืœื‘ ืฉืชื™ืื•ืจ ื”ืžื—ืœืงื” ืžืฆื™ื™ืŸ ืœื ืจืง ืืช ืกื•ื’ื™ ื”ืžืืคื™ื™ื ื™ื, ืืœื ื’ื ืืช ืขืจื›ื™ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœื”ื:

class Example
{
     [string]$Name = 'John Doe'
}

ื”ืชื™ืื•ืจ ืฉืœ ืฉื™ื˜ืช ืžื—ืœืงื” ื“ื•ืžื” ืœืชื™ืื•ืจ ืฉืœ ืคื•ื ืงืฆื™ื”, ืืš ืœืœื ืฉื™ืžื•ืฉ ื‘ืžื™ืœืช ื”ืคื•ื ืงืฆื™ื”. ื›ืžื• ื‘ืคื•ื ืงืฆื™ื”, ืคืจืžื˜ืจื™ื ืžื•ืขื‘ืจื™ื ืœืฉื™ื˜ื•ืช ื‘ืžื™ื“ืช ื”ืฆื•ืจืš:

class MyClass 
{
     [string]$Name
     [string]$City
     [string]$Country
     
     #ะพะฟะธัะฐะฝะธะต ะผะตั‚ะพะดะฐ
     Smile([bool]$param1)
     {
         If($param1) {
            Write-Host ':)'
         }
     }
}

ืขื›ืฉื™ื• ื ืฆื™ื’ ื”ื›ื™ืชื” ืฉืœื ื• ื™ื›ื•ืœ ืœื—ื™ื™ืš:

$object = [MyClass]::new()
$object.Smile($true)

ื ื™ืชืŸ ืœื”ืขืžื™ืก ืขืœ ืฉื™ื˜ื•ืช; ื‘ื ื•ืกืฃ, ืœื›ื™ืชื” ื™ืฉ ืชื›ื•ื ื•ืช ื•ืฉื™ื˜ื•ืช ืกื˜ื˜ื™ื•ืช, ื›ืžื• ื’ื ื‘ื ืื™ื ืฉืฉืžื•ืชื™ื”ื ืชื•ืืžื™ื ืืช ืฉื ื”ืžื—ืœืงื” ืขืฆืžื”. ืžื—ืœืงื” ื”ืžื•ื’ื“ืจืช ื‘ืกืงืจื™ืคื˜ ืื• ื‘ืžื•ื“ื•ืœ PowerShell ื™ื›ื•ืœื” ืœืฉืžืฉ ื‘ืกื™ืก ืœืื—ืจ - ื›ืš ืžื™ื•ืฉืžืช ื™ืจื•ืฉื”. ื‘ืžืงืจื” ื–ื”, ืžื•ืชืจ ืœื”ืฉืชืžืฉ ื‘ืžื—ืœืงื•ืช NET ืงื™ื™ืžื•ืช ื›ื‘ืกื™ืก:

class MyClass2 : MyClass
{
      #ั‚ะตะปะพ ะฝะพะฒะพะณะพ ะบะปะฐััะฐ, ะฑะฐะทะพะฒั‹ะผ ะดะปั ะบะพั‚ะพั€ะพะณะพ ัะฒะปัะตั‚ัั MyClass
}
[MyClass2]::new().Smile($true)

ื”ืชื™ืื•ืจ ืฉืœื ื• ืฉืœ ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื ื‘- PowerShell ืื™ื ื• ืžืžืฆื” ื›ืžืขื˜. ื‘ืคืจืกื•ืžื™ื ื”ื‘ืื™ื ื ื ืกื” ืœื”ืขืžื™ืง ื‘ื“ื•ื’ืžืื•ืช ืžืขืฉื™ื•ืช: ื”ืžืืžืจ ื”ื—ืžื™ืฉื™ ื‘ืกื“ืจื” ื™ื•ืงื“ืฉ ืœื ื•ืฉืื™ื ืฉืœ ืฉื™ืœื•ื‘ PowerShell ืขื ืจื›ื™ื‘ื™ ืชื•ื›ื ื” ืฉืœ ืฆื“ ืฉืœื™ืฉื™. ื ื™ืชืŸ ืœืžืฆื•ื ื—ืœืงื™ื ืงื•ื“ืžื™ื ื‘ืงื™ืฉื•ืจื™ื ืœืžื˜ื”.

ื—ืœืง 1: ืชื›ื•ื ื•ืช ื‘ืกื™ืกื™ื•ืช ืฉืœ Windows PowerShell
ื—ืœืง 2: ืžื‘ื•ื ืœืฉืคืช ื”ืชื›ื ื•ืช Windows PowerShell
ื—ืœืง 3: ื”ืขื‘ืจืช ืคืจืžื˜ืจื™ื ืœืกืงืจื™ืคื˜ื™ื ื•ืคื•ื ืงืฆื™ื•ืช, ื™ืฆื™ืจืช cmdlets

ืžื”ื• Windows PowerShell ื•ืœืžื” ื”ื•ื ืžืฉืžืฉ? ื—ืœืง 4: ืขื‘ื•ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉื™ืขื•ืจื™ื ืžืฉืœื•

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”