PowerShell á
áá¬ážááŒááºáááºážááá¯ážááŸá á¡áááá·áºá
á¬áá»á¬ážá á
á¬áá¬ážá¡ááœááºááẠáá°áá¬ážááá¶áá°áá»ááºá¡ááœáẠááá·áºáá»á±á¬áºáá±á¬áá¯á¶á
á¶ááŒáá·áº á¡áá»ááºá¡áááºáá»á¬ážááᯠááŒááááºáááºážáááºážáá
áºáá¯áá»áŸáá¬ááŒá
áºáááºá ááááºáá±á¬á· áá¯áá¹ááá°ážáá±á·
áá¬áááá¬:
PowerShell ááŸá á¡áá¬ááá¹áá¯áá»á¬áž
á¡áá¬ááá¹áá¯áá
áºáá¯ááẠáá±áá¬á¡ááœááºáá»á¬áž (Properties, Events, etc.) ááŸáá·áº áááºážááá¯á·ááᯠáá¯ááºáá±á¬ááºááẠáááºážáááºážáá»á¬áž (methods) áá»á¬áž á¡á
á¯á¡áá±ážáá
áºáá¯ááŒá
áºááŒá±á¬ááºáž ááááááŒáá«á
áá¯á·á áááºážáááœá²á·á
ááºážáá¯á¶á¡á¬áž á¡áá»áá¯ážá¡á
á¬ážáá
áºáá¯á¡á¬ážááŒáá·áº áááºááŸááºáá¬ážáááºá áááºážááẠá¡áá»á¬ážá¡á¬ážááŒáá·áº áá
áºá
á¯áá
áºá
ááºážáááºáž .NET Core ááááºáá±á¬ááºážááœáẠá¡áá¯á¶ážááŒá¯ááá·áº á¡áááºážáá»á¬ážáá±á«áºááœáẠá¡ááŒá±áá¶áááºá COMá CIM (WMI) ááŸáá·áº ADSI á¡áá¬ááá¹áá¯áá»á¬ážááŸáá·áºáááºáž áá¯ááºáá±á¬ááºááá¯ááºáááºá áá±áá¬áá»á¬ážáá±á«áºááœáẠá¡áá»áá¯ážáá»áá¯ážáá±á¬ áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºáááºá¡ááœáẠProperties ááŸáá·áº Method áá»á¬áž ááá¯á¡ááºáááºá ááá¯á·á¡ááŒáẠPowerShell ááœáẠá¡áá¬ááá¹áá¯áá»á¬ážááᯠáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááŸáá·áº cmdlets áá»á¬ážááá¯á· á¡ááŒá±á¬ááºážááŒáá»ááºáá»á¬ážá¡ááŒá
Ạáá±ážááá¯á·ááá¯ááºááŒá®ážá áááºážááá¯á·á áááºááá¯ážáá»á¬ážááᯠááááºážááŸááºáá»á¬ážááá¯á· áááºááŸááºáá±ážáᬠáááºážááŸááá«áááºá
á¡áá¬ááá¹áá¯áá»á¬ážáááœá²á·á ááºážáá¯á¶ááá¯ááŒáá·áºááŸá¯ááŒááºážá
á¥ááá¬á¡á¬ážááŒáá·áºá áááºááẠá áá áºááœáẠáá¯ááºáá±á¬ááºáá±ááá·áº áá¯ááºáááºážá ááºáá»á¬ážá¡ááŒá±á¬ááºáž á¡áá»ááºá¡áááºáá»á¬ážááᯠááá°ááẠááœáá·áºááŒá¯ááá·áº Get-Process cmdlet ááᯠááœáá·áºááŒáá«á áá¯á·á
ááŒááºáá±ážáá¬ážáá±á¬ á¡áá¬ááá¹áá¯áá»á¬ážá áá¯ááºááá¹áááá»á¬ážááŸáá·áº áááºážááá¯á·á áááºážáááºážáá»á¬ážá¡ááŒá±á¬ááºáž áá
áºá
á¯á¶áá
áºáᬠá¡ááŒá¶á¥á¬ááºááá±ážáá±á¬ áá±á¬áºáááºáá¯ááºáá¬ážáá±á¬ á
á¬áá¬ážáá±áá¬á¡áá»áá¯á·ááᯠááŒááá«áááºá á¡ááœááºá¡á¬áž áá»áááºááŸááááºá áá»áœááºá¯ááºááá¯á·ááẠá¡áá¬ááá¹áá¯áá»á¬ážá ááœá²á·á
ááºážáá¯á¶ááᯠáááºážá
á
áºáááºážááᯠáá±á·áá¬ááẠááá¯á¡ááºááŒá®áž Get-Member cmdlet ááẠáááºážááᯠáá°áá®áá±ážáá«áááº-
Get-Process | Get-Member
á€áá±áá¬ááœáẠáá»áœááºá¯ááºááá¯á·ááẠá¡áá»áá¯ážá¡á
á¬ážááŸáá·áº ááœá²á·á
ááºážáá¯á¶ááᯠááŒááºáá¬ážááŒá®ážáá¬ážááŒá
áºááŒá®ážá á¡ááá¯áá±á¬ááºáá±á¬ááºáá»á¬ážáá¡áá°á¡áá®ááŒáá·áº á¥ááá¬á¡á¬ážááŒáá·áºá ááá·áºááœááºážááŸá¯ááœááºáá«áááºáá±á¬ á¡áá¬ááá¹áá¯áá»á¬ážá áá¯ááºááá¹áááá»á¬ážááá¯áᬠááŒáááá¯ááºáááº-
Get-Process | Get-Member -MemberType Property
á á®áá¶ááá·áºááœá²áá±ážááá¯ááºáá¬ááŒá¿áá¬áá»á¬ážááᯠá¡ááŒááºá¡ááŸááºáá¯á¶á·ááŒááºááŒá±ááŸááºážááẠááá¯á·ááá¯áẠááá·áºááá¯ááºááá¯áẠscript áá»á¬ážáá±ážáá¬ážááẠá€á¡ááááá¬ááá¯á¡ááºáá«áááº- á¥ááá¬á áá¯á¶á·ááŒááºááŒááºážááá¯ááºáá¬ááá¯ááºááá¯ááºááŸá¯ááᯠá¡áá¯á¶ážááŒá¯á áá»áááºááœá²áá¬ážááá·áºáá¯ááºáááºážá ááºáá»á¬ážá¡ááŒá±á¬ááºáž á¡áá»ááºá¡áááºááá°áááºá
á¡áá¬ááá¹áá¯áá»á¬ážááᯠá á áºáá¯ááºááŒááºážá
PowerShell ááẠáááºááŸááºáá¬ážáá±á¬ á¡ááŒá±á¡áá±ááŸáá·áº ááá¯ááºáá®ááá·áº á¡áá¬ááá¹áá¯áá»á¬ážááᯠááá¯ááºááá¯ááºážááŸáááá·áº ááŒááºáááºážááœáá·áºááŒá¯áááº-
Where-Object { блПк ÑÑеМаÑÐžÑ }
ááœááºážá¡ááœááºáž script block ááᯠáá¯ááºáá±á¬ááºááŒááºážáááááºááẠboolean áááºááá¯ážááŒá áºááá«áááºá á¡ááŸáẠ($true)á Where-Object cmdlet ááœáẠááá·áºááœááºážáá¬ážáá±á¬ á¡áá¬á¡á¬áž ááá¯ááºááá¯ááºážáá áºáá»áŸá±á¬áẠááŒááºááœá¬ážáááºááŒá áºááŒá®ážá ááá¯á·ááá¯ááºáá«á ($false) áááºážááᯠáá»ááºááœá¬ážáá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá áááºááá·áºáá¬ážáá±á¬ Windows Server áááºáá±á¬ááºááŸá¯áá»á¬ážá á¬áááºážááᯠáá±á¬áºááŒááŒáá«á áá¯á·á á¡ááá·áºá¡áááºáž ááá¯ááºááá¯ááºááŸá¯ááᯠâáááºááá¯ááºáááºâ áᯠáááºááŸááºáá¶ááá°áá»á¬áž-
Get-Service | Where-Object {$_.Status -eq "Stopped"}
á€áá±áá¬ááœáẠáá»áœááºá¯ááºááá¯á·ááẠá
á¬áá¬ážááá¯ááºá
á¬ážááŒá¯ááŸá¯ááᯠáááºáá¶ááœá±á·ááŒááºááá±á¬áºáááºážá ááá¯ááºááá¯ááºážááŸáá
áºááá·áº ááŒááºáááºážááœá¬ážáá±á¬ á¡áá¬ááá¹áá¯áá»á¬ážá á¡áá»áá¯ážá¡á
á¬ážááŸáá·áº á¡ááœááºážááá¯ááºážááœá²á·á
ááºážáá¯á¶ááᯠáá¬ážáááºááá¯áá«á áááºážááẠááááºáá«áá±á
Get-Service | Where-Object {$_.Status -eq "Stopped"} | Get-Member
á¡áá¬ááá¹áá¯áá»á¬ážááᯠá á®ááŒááºážá
á¡áá¬ááá¹áá¯áá»á¬ážááᯠááá¯ááºááá¯ááºážááŒáá·áº á á®áá¶áá±á¬ááºááœááºááá·áºá¡áá« áááºážááá¯á·ááᯠá á®ááẠááá¯á¡ááºáááºá Sort-Object cmdlet ááẠáá¯ááºááá¹áááá»á¬áž (sorting keys) áá»á¬ážá á¡áááºáá»á¬ážááᯠáá»á±á¬áºááŒááºááŒá®áž áááºážááá¯á·á áááºááá¯ážáá»á¬ážááŒáá·áº á á®áá¬ážáá±á¬ á¡áá¬áá»á¬ážááᯠááŒááºáá±ážáááºá CPU á¡áá»ááẠ(cpu ááá¯ááºááá¯ááºááŸá¯) ááŒáá·áº áá¯ááºáá±á¬ááºáá±áá±á¬ áá¯ááºáááºážá ááºáá»á¬ážá output ááᯠá á®ááẠááœááºáá°ááẠá
Get-Process | Sort-Object âProperty cpu
Sort-Object cmdlet ááá¯áá±á«áºáá±á¬á¡áá« -Property parameter ááᯠáá»ááºááŸááºáá¬ážááá¯ááºáááºá áááºážááᯠáá°áááºážá¡ááá¯ááºážá¡áá¯á¶ážááŒá¯áá«áááºá ááŒá±á¬ááºážááŒááºá á®ááŒááºážá¡ááœáẠ-Descending parameter ááá¯áá¯á¶ážáá«-
Get-Process | Sort-Object cpu -Descending
á¡áá¬ááá¹áá¯áá»á¬ážááŸáá·áº áááºážááá¯á·á á¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠááœá±ážáá»ááºááŒááºážá
Select-Object cmdlet ááẠ-First ááá¯á·ááá¯áẠ-Last parameters áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á ááá¯ááºááá¯ááºážáá áºáá¯áá¡á ááá¯á·ááá¯áẠá¡áá¯á¶ážááœáẠáá®ážááŒá¬ážá¡áá¬ááá¹áá¯á¡áá±á¡ááœááºááᯠááœá±ážáá»ááºááá¯ááºá á±áá«áááºá áááºážáá¡áá°á¡áá®ááŒáá·áº áááºááẠá¡áá¬ááá¹áá¯áá áºáá¯áááºáž ááá¯á·ááá¯áẠá¡áá»áá¯á·áá±á¬áá¯ááºááá¹áááá»á¬ážááᯠááœá±ážáá»ááºááá¯ááºááŒá®áž áááºážááá¯á·á¡áá±á«áºá¡ááŒá±áá¶á á¡áá¬ááá¹áá¯á¡áá áºáá»á¬ážááá¯áááºáž áááºáá®ážááá¯ááºáááºá ááá¯ážááŸááºážáá±á¬ááá°áá¬áá»á¬ážááá¯á¡áá¯á¶ážááŒá¯á cmdlet áááºáá²á·ááá¯á·á¡áá¯ááºáá¯ááºáááºááá¯ááŒáá·áºááŒáá«á áá¯á·á
á¡á±á¬ááºáá« command ááẠRAM (WS ááá¯ááºááá¯ááºááŸá¯) á¡áá»á¬ážáá¯á¶ážá¡áá¯á¶ážááŒá¯ááá·áº áá¯ááºáááºážá áẠ10 áá¯á¡ááŒá±á¬ááºáž á¡áá»ááºá¡áááºááᯠááŒááááº-
Get-Process | Sort-Object WS -Descending | Select-Object -First 10
áááºááẠááá¯ááºááá¯ááºážááŒááºáááºážááœá¬ážáá±á¬ á¡áá¬ááá¹áá¯áá»á¬ážá á¡áá»áá¯á·áá±á¬ áá¯ááºááá¹áááá»á¬ážááá¯áᬠááœá±ážáá»ááºááá¯ááºááŒá®áž áááºážááá¯á·á¡áá±á«áº á¡ááŒá±áá¶á á¡áá
áºáá»á¬ážááᯠáááºáá®ážááá¯ááºáááº-
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 á០ááá¯ááºááá¯ááºážáá²ááá¯á· ááŒááºááœá¬ážáá±á¬ áááá¡áá¬ááá¹áá¯á០áááºážááá¯á·ááááºááá¯ážáá»á¬ážááᯠáá°ážáá°áá¬ážáááºá PowerShell scripts áá»á¬ážááœáẠá¡áá¬ááá¹áá¯áá»á¬áž áááºáá®ážááẠáááºážáááºážáá»á¬ážáá²á០áá
áºáá¯ááẠSelect-Object ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážá¡áá±á«áº á¡ááŒá±áá¶áááº-
$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 áá»á¬áž ááŸááá«áááºá á¥ááá¬á¡áá±áá²á·á á¡áá¯á¶ážáááºáá¯á¶áž áá¯á¶ážáá»áá¯ážá¡ááŒá±á¬ááºáž ááŒá±á¬ááŒáá·áºáá¡á±á¬ááºá
áá áºáá¯á á®á¡ááœááºáááºááœááºááẠááá¯ááºááá¯ááºážááŸá á¡áá¬ááá¹áá¯áá áºáá¯á á®á¡ááœáẠPowerShell áá¯ááºááᯠáááºáá¯ááºáá±á¬ááºááá¯ááºáááº-
ForEach-Object { блПк ÑÑеМаÑÐžÑ }
á¡á¯ááºá á¯-á¡áá¬ááá¹áᯠáá á¹á ááºážáááºááá¯ážá¡ááá¯áẠá¡áá¬ááá¹áá¯áá»á¬ážááᯠá¡á¯ááºá á¯ááœá²á·áá«-
Group-Object PropertyName
áááºážááᯠ-NoElement parameter ááŒáá·áº run áá«áá á¡á¯ááºá á¯áá»á¬ážááŸá element á¡áá±á¡ááœááºááᯠáááºááŸá¬ááœá±ááá¯ááºáááºá
á¡ááá¯ááºážá¡áá¬-á¡áá¬ááá¹áᯠááá¯ááºááá¯ááºážááŸá á¡áá¬ááá¹áá¯á¡ááœááºáááºááá¯ážáá»á¬ážá¡ááá¯áẠá¡áá»áá¯ážáá»áá¯ážáá±á¬ á¡áá»ááºážáá»á¯áẠáá±á¬ááºáá»á¬ážááᯠáá±á«ááºážá ááºážááẠ(áá±á«ááºážáááºááᯠááœááºáá»ááºááŒá®áž á¡áááá·áºáá¯á¶ážá á¡ááŒáá·áºáá¯á¶áž ááá¯á·ááá¯áẠáá»ááºážáá»áŸáááºááá¯ážááá¯áááºáž ááŸá¬ááœá±áááº)á
Measure-Object -Property PropertyName -Minimum -Maximum -Average -Sum
áá¯á¶ááŸááºá¡á¬ážááŒáá·áºá ááœá±ážááœá±ážáá¬ážáá±á¬ cmdlets áá»á¬ážááᯠá¡ááŒááºá¡ááŸááºá¡áá»áá¯ážáááºáá±á¬ááºá
áœá¬ á¡áá¯á¶ážááŒá¯ááŒááŒá®áž scripts áá»á¬ážááœáẠáááºáá®ážáá±á·ááŸááá«áááºá
.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 áá«áá¬áá®áá¬ááᯠá¡áá¯á¶ážááŒá¯á áááºážááááºáá®ážááŸá¯á¡ááœááºáž á¡áá°ážáááºáá±á¬ááºáá±ážáááºážáááºážááᯠáááºáá±á«áºááá¯ááẠááá¯á¡ááºáááºá áá»áœááºá¯ááºááá¯á·ááẠá¡ááá®áá±ážááŸááºážááŸááºáááºážááᯠáááºáá±á¬ááºááá¯áá«áá áá»áœááºá¯ááºááá¯á·ááẠáááºáá±á¬ááºáá°á¡á¬áž á¡ááŒá±á¬ááºážááŒáá»ááºá¡ááŒá
Ạ"Application" á
á¬ááŒá±á¬ááºážááᯠáá±ážááá¯á·ááá·áºáááº-
$AppLog = New-Object -TypeName System.Diagnostics.EventLog -ArgumentList Application
$AppLog
$AppLog variable ááœáẠcommand á output ááᯠááááºážáááºážáá¬ážááŒá±á¬ááºáž áá»á±ážáá°ážááŒá¯á áááááŒá¯áá«á ááá¯ááºááá¯ááºážáá»á¬ážááᯠá¡ááŒááºá¡ááŸááºá¡áá»áá¯ážáááºáá±á¬ááºááŸá¯áá¯ááºááœáẠá¡áá¯á¶ážáá»á¬ážáá±á¬áºáááºážá script áá»á¬ážáá±ážáá¬ážáá¬ááœáẠá¡áá¬ááá¹áá¯áá
áºáá¯á¡á¬áž á¡ááá¯ážá¡áá¬ážáá¬ážááŸáááẠááá¯á¡ááºáá«áááºá ááá¯á·á¡ááŒááºá core .NET Core á¡áááºážáá»á¬ážááẠSystem namespace ááœááºáá«áááºáááº- PowerShell ááẠáááºážááœáẠáááºááŸááºáá¬ážáá±á¬á¡áá»áá¯ážá¡á
á¬ážáá»á¬ážááᯠááŸá¬ááœá±áááºá ááá¯á·ááŒá±á¬áá·áº System.Diagnostics.EventLog á¡á
á¬áž System.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.FileSystemObject
ááá·áºááá¯ááºááá¯ááºá¡áá¬ááá¹áá¯áá»á¬ážááᯠáááá¬ážááœá²á·á ááºážáá¯á¶ááŒáá·áºáááºáá®ážáááºá New-Object ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááẠááŸá±ážááá¯ážáááºááŒá®áž áááºáá²ááœááºážáá¯á¶áá±á«áºáááºá ဠcmdlet ááᯠPowerShell ááŒááºááá±á¬á·ááºáá²ááºá¡á áááºá¡ááá¯ááºážáá»á¬ážááŸáá·áºá¡áá¯ááºáá¯ááºáááºá¡áá¯á¶ážááŒá¯áááºá áá±á¬ááºáá±á¬ááºážáá«ážáá»á¬ážááœáẠá€ááŒá¿áá¬ááᯠááá¯ááá¯á¡áá±ážá áááºááœá±ážááœá±ážáá«áááºá .NET ááŸáá·áº COM á¡áá¬ááá¹áá¯áá»á¬ážá¡ááŒááºá áá»áœááºá¯ááºááá¯á·ááẠCIM (WMI) ááŸáá·áº ADSI á¡áá¬ááá¹áá¯áá»á¬ážááᯠá á°ážá ááºážáá±á·áá¬áá«áááºá
Static Methods áá»á¬áž áá±á«áºááá¯ááŒááºážá
System.Environment ááŸáá·áº System.Math á¡áá«á¡ááẠá¡áá»áá¯á·áá±á¬ .NET Core á¡áááºážáá»á¬ážááẠáá»ááºáá»ááºážáá¯ááºáá±á¬ááºááááá«á áá°ááá¯á·á
[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 ááẠáááºááŸááºááẠá
áœááºážáááºááᯠááááºáááºáá±ážáá²á·áááºá
class MyClass
{
# ÑелП клаÑÑа
}
áááºážááẠáááºážááá¯ááºááá¹áááá»á¬ážá áááºážáááºážáá»á¬ážááŸáá·áº á¡ááŒá¬ážááŒááºá ááºáá»á¬ážááᯠáá±á¬áºááŒáá±á¬ ááá¯ááºáááºáá áºáá¯áá«ááŸááá±á¬ á á áºááŸááºáá±á¬ .NET Core á¡áá»áá¯ážá¡á á¬ážááŒá áºáááºá á¡ááá¯ážááŸááºážáá¯á¶ážá¡áááºážááᯠáááºááŸááºááŒááºážá á¥ááá¬ááᯠááŒáá·áºááŒáá«á áá¯á·á
class MyClass
{
[string]$Name
[string]$City
[string]$Country
}
á¡áá¬ááá¹áᯠ(class instance áá
áºáá¯áááºáá®ážáááº) cmdlet ááá¯áá¯á¶ážáá«á
$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 MyClass
{
[string]$Name
[string]$City
[string]$Country
#ПпОÑаМОе ЌеÑПЎа
Smile([bool]$param1)
{
If($param1) {
Write-Host ':)'
}
}
}
ááá¯áá»áœááºá¯ááºááá¯á·á¡áááºážá ááá¯ááºá á¬ážááŸááºááẠááŒá¯á¶ážááá¯ááºááẠá
$object = [MyClass]::new()
$object.Smile($true)
Methods áá»á¬ážááẠoverload áá¯ááºááá¯ááºáááºá ááá¯á·á¡ááŒáẠclass áá
áºáá¯ááŸááááºá
class MyClass2 : MyClass
{
#ÑелП МПвПгП клаÑÑа, базПвÑÐŒ ÐŽÐ»Ñ ÐºÐŸÑПÑПгП ÑвлÑеÑÑÑ MyClass
}
[MyClass2]::new().Smile($true)
PowerShell ááœáẠá¡áá¬ááá¹áá¯áá»á¬ážááŸáá·áº áá¯ááºáá±á¬ááºááŒááºážááá¯ááºáᬠáá»áœááºá¯ááºááá¯á·ááá±á¬áºááŒáá»ááºááẠááŒá®ážááŒáá·áºá á¯á¶áááºááá¯ááºáá«á á¡á±á¬ááºáá«áá¯ááºáá±ááŸá¯áá»á¬ážááœááºá áááºááœá±á·ááá°áá¬áá»á¬ážááŒáá·áº áááºážááᯠáááºááŸáá¯ááºážá¡á±á¬ááºááŒáá¯ážá á¬ážáá«áááº- á á®ážáá®ážááŸá ááá¹á ááá±á¬ááºážáá«ážááẠPowerShell á¡á¬áž ááŒááºááá¯áá¹ááá®áá±á¬á·ááºáá²á¡á áááºá¡ááá¯ááºážáá»á¬ážááŸáá·áº áá±á«ááºážá ááºááŒááºážááá¯ááºáá¬ááá á¹á áááºáá»á¬ážá¡ááœáẠá¡á¬áá¯á¶á áá¯ááºáá«áááºá ááááºá¡ááá¯ááºážáá»á¬ážááᯠá¡á±á¬ááºáá«ááá·áºááºáá»á¬ážááœáẠááŒáá·áºááŸá¯ááá¯ááºáá«áááºá
source: www.habr.com