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 { блПк ÑÑеМаÑÐžÑ }
operator brackets á¡ááœááºážááŸá script block ááᯠexecute áá¯ááºááŒááºážá ááááºááẠBoolean value ááŒá áºááááºá áááºážááẠtrue ($true) ááŒá áºáá«áá Where-Object cmdlet ááá¯á· áá±ážááá¯á·áá±á¬ object ááẠpipeline áá áºáá»áŸá±á¬áẠáá±ážááá¯á·ááœá¬ážáááºááŒá áºááŒá®áž ááá¯ááºáá«á (áááºááá¯áž $false) áá»ááºáá áºáááºááŒá áºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá áááºááá·áºáá¬ážáá±á¬ service áá»á¬ážá á¬áááºážááᯠááŒáááŒáá«á áá¯á·á Windows Server, ááá¯ááá¯áááºááŸá¬ Status property ááœáẠâ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 cpu
Sort-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 interface áá»á¬ážáá«ááŸááá±á¬ áá±á¬á·ááºáá²á¡á áááºá¡ááá¯ááºážáá»á¬ážá áœá¬ááŸááá«áááºá System.Diagnostics.EventLog class ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº á áá áºááŸááºáááºážáá»á¬ážááᯠá¡á±á¬ááºáá«á០ááá¯ááºááá¯ááºá á®áá¶ááá·áºááœá²ááá¯ááºáááº- Windows PowerShellá -TypeName parameter áá«ááŸááá±á¬ New-Object cmdlet ááᯠá¡áá¯á¶ážááŒá¯á ဠclass á 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 components áá»á¬ážááŸáá·áºá¡áá¯ááºáá¯ááºáááºáááºáž á¡áá¯á¶ážááŒá¯áááºá server á០áá±á¬ááºáá¶á·áá±ážáá¬ážáá±á¬ scripts áá»á¬ážáá²á០áááºážááá¯á·áá²á០á¡áá±á¬áºáá»á¬ážáá»á¬ážááŸááááºá Windows libraries áá»á¬ážááᯠInternet Explorer áá²á·ááá¯á·áá±á¬ ActiveX applications áá»á¬ážááá¯á· ááŒá±á¬ááºážáá²ááá¯ááºáááºá COM object áá áºáᯠáááºáá®ážáááºá¡ááœááºá áááºááá¯áá»ááºáá±á¬ class á ProgId ááŒáá·áº -ComObject parameter ááᯠáááºááŸááºááẠááá¯á¡ááºáááº-
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 á¡áá¬ááá¹áá¯áá»á¬ážááá¯áááºáž áá±á·áá¬áá«áááºá
á¡ááŒáááºáááºážáááºážáá»á¬áž áá±á«áºááá¯ááŒááºážá
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
