Π’Π΅ΠΊΡΡΠΎΠ²ΠΈΡΡ ΠΈΠ·Ρ
ΠΎΠ΄ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ Π² ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ° Π½Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° Π½Π° PowerShell Π΅ ΠΏΡΠΎΡΡΠΎ Π½Π°ΡΠΈΠ½ Π·Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π²ΡΠ² ΡΠΎΡΠΌΠ°, ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠ° Π·Π° ΡΠΎΠ²Π΅ΡΠΊΠΎ Π²ΡΠ·ΠΏΡΠΈΠ΅ΠΌΠ°Π½Π΅. ΠΡΡΡΠ½ΠΎΡΡ ΡΡΡΠ΄Π°
Π‘ΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅:
ΠΠ±Π΅ΠΊΡΠΈ Π² PowerShell
ΠΠ΅ΠΊΠ° ΠΏΡΠΈΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΠ΅ ΠΎΠ±Π΅ΠΊΡΡΡ Π΅ ΡΡΠ²ΠΊΡΠΏΠ½ΠΎΡΡ ΠΎΡ ΠΏΠΎΠ»Π΅ΡΠ° Ρ Π΄Π°Π½Π½ΠΈ (ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΡΡΠ±ΠΈΡΠΈΡ ΠΈ Π΄Ρ.) ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΡΡΡ
Π½Π°ΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° (ΠΌΠ΅ΡΠΎΠ΄ΠΈ). Π‘ΡΡΡΠΊΡΡΡΠ°ΡΠ° ΠΌΡ ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΎΡ ΡΠΈΠΏ, ΠΊΠΎΠΉΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π° Π½Π° ΠΊΠ»Π°ΡΠΎΠ²Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² ΡΠ½ΠΈΡΠΈΡΠΈΡΠ°Π½Π°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° .NET Core. ΠΡΠ·ΠΌΠΎΠΆΠ½Π° Π΅ ΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ COM, CIM (WMI) ΠΈ ADSI ΠΎΠ±Π΅ΠΊΡΠΈ. Π‘Π²ΠΎΠΉΡΡΠ²Π°ΡΠ° ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ ΡΠ° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π΄Π°Π½Π½ΠΈ; ΠΎΡΠ²Π΅Π½ ΡΠΎΠ²Π° Π² PowerShell ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π°Ρ ΠΊΠ°ΡΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΊΡΠ°ΡΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, Π΄Π° ΡΠ΅ ΠΏΡΠΈΡΠ²ΠΎΡΠ²Π°Ρ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΈ ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈΠΌΠ°
ΠΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΠΊΠ° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ cmdlet Get-Process, ΠΊΠΎΠΉΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°:
Π’ΠΎΠΉ ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ Π½ΡΠΊΠΎΠΈ ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°Π½ΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ Π΄Π°Π²Π°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π° Π·Π° ΡΠ²ΠΎΠΉΡΡΠ²Π°ΡΠ° Π½Π° Π²ΡΡΠ½Π°ΡΠΈΡΠ΅ ΠΎΠ±Π΅ΠΊΡΠΈ ΠΈ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈ. ΠΠ° Π΄Π° Π½Π°ΡΡΡΠΎΠΈΠΌ ΡΠΈΠ½ΠΎ ΠΈΠ·Ρ
ΠΎΠ΄Π°, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π½Π°ΡΡΠΈΠΌ ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·ΡΠ»Π΅Π΄Π²Π°ΠΌΠ΅ ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ ΠΈ cmdlet Get-Member ΡΠ΅ Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π² ΡΠΎΠ²Π°:
Get-Process | Get-Member
Π’ΡΠΊ Π²Π΅ΡΠ΅ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΡΠΈΠΏΠ° ΠΈ ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΡΠ°ΠΌΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΡΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡΠ°, Π²ΠΊΠ»ΡΡΠ΅Π½ Π²ΡΠ² Π²Ρ
ΠΎΠ΄Π°:
Get-Process | Get-Member -MemberType Property
Π’Π΅Π·ΠΈ Π·Π½Π°Π½ΠΈΡ ΡΠ΅ ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΈΠ»ΠΈ Π·Π° ΠΏΠΈΡΠ°Π½Π΅ Π½Π° Π²Π°ΡΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠ²ΠΈΡΠ½Π°Π»ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΡΠΎ Responding.
Π€ΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ
PowerShell ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΎΡΠ³ΠΎΠ²Π°ΡΡΡ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅, Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠ΅ΠΊΠ°ΡΠ°Π½ΠΈ ΠΏΡΠ΅Π· ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ:
Where-Object { Π±Π»ΠΎΠΊ ΡΡΠ΅Π½Π°ΡΠΈΡ }
Π Π΅Π·ΡΠ»ΡΠ°ΡΡΡ ΠΎΡ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠΊΡΠΈΠΏΡΠΎΠ²ΠΈΡ Π±Π»ΠΎΠΊ Π² ΡΠΊΠΎΠ±ΠΈΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ Π±ΡΠ»Π΅Π²Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ. ΠΠΊΠΎ Π΅ true ($true), ΠΎΠ±Π΅ΠΊΡΡΡ, ΠΊΠΎΠΉΡΠΎ Π΅ Π²ΡΠ²Π΅Π΄Π΅Π½ Π² cmdlet Where-Object, ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠ΅Π΄Π°Π΄Π΅Π½ ΠΏΠΎ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ°, Π² ΠΏΡΠΎΡΠΈΠ²Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ ($false) ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΠ·ΡΡΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΠΊΠ° ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΡΠΏΠΈΡΡΠΊ ΡΡΡ ΡΠΏΡΠ΅Π½ΠΈ ΡΡΠ»ΡΠ³ΠΈ Π½Π° Windows Server, Ρ.Π΅. ΡΠ΅Π·ΠΈ, ΡΠΈΠ΅ΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Status Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ΠΎ Π½Π° βStoppedβ:
Get-Service | Where-Object {$_.Status -eq "Stopped"}
Π’ΡΠΊ ΠΎΡΠ½ΠΎΠ²ΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅, Π½ΠΎ Π°ΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ Π²ΠΈΠ΄Π° ΠΈ Π²ΡΡΡΠ΅ΡΠ½Π°ΡΠ° ΡΡΡΡΠΊΡΡΡΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅, ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°ΡΠΈ ΠΏΡΠ΅Π· ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄Π°, Π½Π΅ Π΅ ΡΡΡΠ΄Π½ΠΎ:
Get-Service | Where-Object {$_.Status -eq "Stopped"} | Get-Member
Π‘ΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ
ΠΡΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ ΡΠ΅ΡΡΠΎ ΠΈΠΌΠ° Π½ΡΠΆΠ΄Π° Π΄Π° Π³ΠΈ ΡΠΎΡΡΠΈΡΠ°ΡΠ΅. ΠΡΠ°ΡΠΊΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Sort-Object ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΡΠ²ΠΎΠΉΡΡΠ²Π°ΡΠ° (ΠΊΠ»ΡΡΠΎΠ²Π΅ Π·Π° ΡΠΎΡΡΠΈΡΠ°Π½Π΅) ΠΈ Π²ΡΡΡΠ° ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΏΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΈ ΠΏΠΎ ΡΠ΅Ρ Π½ΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ. ΠΠ΅ΡΠ½ΠΎ Π΅ Π΄Π° ΡΠΎΡΡΠΈΡΠ°ΡΠ΅ ΠΈΠ·Ρ ΠΎΠ΄Π° ΠΎΡ ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΏΠΎ ΠΈΠ·ΡΠ°Π·Ρ ΠΎΠ΄Π²Π°Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ° (ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ°):
Get-Process | Sort-Object βProperty cpu
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡΡΡ -Property ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΎΠΏΡΡΠ½Π°Ρ ΠΏΡΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΊΡΠ°ΡΠΊΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Sort-Object; ΡΠΎΠΉ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅. ΠΠ° ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΡΠΎΡΡΠΈΡΠ°Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° -Descending:
Get-Process | Sort-Object cpu -Descending
ΠΠ·Π±ΠΎΡ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ ΡΠ°ΡΡΠΈ
ΠΡΠ°ΡΠΊΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Select-Object Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π±ΡΠΎΠΉ ΠΎΠ±Π΅ΠΊΡΠΈ Π² Π½Π°ΡΠ°Π»ΠΎΡΠΎ ΠΈΠ»ΠΈ ΠΊΡΠ°Ρ Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ°, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ -First ΠΈΠ»ΠΈ -Last. Π‘ Π½Π΅Π³ΠΎΠ²Π° ΠΏΠΎΠΌΠΎΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·Π±ΠΈΡΠ°ΡΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ ΠΈΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ Π½ΠΎΠ²ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΡΡ . ΠΠ΅ΠΊΠ° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ cmdlet, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΏΡΠΎΡΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ.
Π‘Π»Π΅Π΄Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° 10-ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠ°, ΠΊΠΎΠΈΡΠΎ ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ°Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ RAM (WS ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ):
Get-Process | Sort-Object WS -Descending | Select-Object -First 10
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΡΠ°ΠΌΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°ΡΠΈ ΠΏΡΠ΅Π· ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄Π°, ΠΈ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ Π½ΠΎΠ²ΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΡΡ
:
Get-Process | Select-Object ProcessName, Id -First 1
Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π½ΠΎΠ² ΠΎΠ±Π΅ΠΊΡ, ΡΠΈΡΡΠΎ ΡΡΡΡΠΊΡΡΡΠ° ΡΠ΅ ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π° ΠΎΡ ΡΡΡΡΠΊΡΡΡΠ°ΡΠ°, Π²ΡΡΠ½Π°ΡΠ° ΠΎΡ cmdlet Get-Process. ΠΠ΅ΠΊΠ° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ ΡΠΎΠ²Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Get-Member:
Get-Process | Select-Object ProcessName, Id -First 1 | Get-Member
ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ Select-Object Π²ΡΡΡΠ° Π΅Π΄ΠΈΠ½ ΠΎΠ±Π΅ΠΊΡ (-First 1), ΠΊΠΎΠΉΡΠΎ ΠΈΠΌΠ° ΡΠ°ΠΌΠΎ Π΄Π²Π΅ ΠΎΡ ΠΏΠΎΠ»Π΅ΡΠ°ΡΠ°, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΡΠΎΡΠΈΡ
ΠΌΠ΅: ΡΠ΅Ρ
Π½ΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π±ΡΡ
Π° ΠΊΠΎΠΏΠΈΡΠ°Π½ΠΈ ΠΎΡ ΠΏΡΡΠ²ΠΈΡ ΠΎΠ±Π΅ΠΊΡ, ΠΏΡΠ΅Π΄Π°Π΄Π΅Π½ Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° ΠΎΡ cmdlet Get-Process. ΠΠ΄ΠΈΠ½ ΠΎΡ Π½Π°ΡΠΈΠ½ΠΈΡΠ΅ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ Π² ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π½Π° PowerShell ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° 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}}
ΠΠ΅ΠΊΠ° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅, ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°ΡΠΈ ΠΏΡΠ΅Π· ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ°:
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}} | Get-Member
ForEach-Object, Group-Object ΠΈ Measure-Object
ΠΠΌΠ° ΠΈ Π΄ΡΡΠ³ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅ΡΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΎΠ±Π΅ΠΊΡΠΈ. ΠΠ°ΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΠΊΠ° ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° ΡΡΠΈΡΠ΅ Π½Π°ΠΉ-ΠΏΠΎΠ»Π΅Π·Π½ΠΈ:
ΠΠ° Π²ΡΠ΅ΠΊΠΈ ΠΎΠ±Π΅ΠΊΡ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠ΅ ΠΊΠΎΠ΄ Π½Π° PowerShell Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΎΠ±Π΅ΠΊΡ Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ°:
ForEach-Object { Π±Π»ΠΎΠΊ ΡΡΠ΅Π½Π°ΡΠΈΡ }
ΠΡΡΠΏΠ°-ΠΎΠ±Π΅ΠΊΡ Π³ΡΡΠΏΠΈΡΠ° ΠΎΠ±Π΅ΠΊΡΠΈ ΠΏΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΡΠΎ:
Group-Object PropertyName
ΠΠΊΠΎ Π³ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° -NoElement, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ Π±ΡΠΎΡ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ Π² Π³ΡΡΠΏΠΈΡΠ΅.
ΠΡΡΠΊΠ°-ΠΎΠ±Π΅ΠΊΡ Π°Π³ΡΠ΅Π³ΠΈΡΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΠΏΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π½Π° ΠΏΠΎΠ»Π΅ΡΠΎ Π½Π° ΠΎΠ±Π΅ΠΊΡΠ° Π² ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄Π° (ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π° ΡΡΠΌΠ°ΡΠ° ΠΈ ΡΡΡΠΎ Π½Π°ΠΌΠΈΡΠ° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π°ΡΠ°, ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½Π°ΡΠ° ΠΈΠ»ΠΈ ΡΡΠ΅Π΄Π½Π°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ):
Measure-Object -Property PropertyName -Minimum -Maximum -Average -Sum
ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π°Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅ΡΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈ ΡΠ΅ΡΡΠΎ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Ρ Π² ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅.
Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° .NET ΠΈ COM ΠΎΠ±Π΅ΠΊΡΠΈ (ΠΠΎΠ² ΠΎΠ±Π΅ΠΊΡ)
ΠΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΎΡΡΡΠ΅ΡΠ½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Ρ .NET Core ΠΈ COM ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Π·Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΈ. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΊΠ»Π°ΡΠ° System.Diagnostics.EventLog, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡ Windows PowerShell. ΠΠ΅ΠΊΠ° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π½Π° ΡΠΎΠ·ΠΈ ΠΊΠ»Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° cmdlet New-Object Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° -TypeName:
New-Object -TypeName System.Diagnostics.EventLog
Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π½Π΅ ΡΠΌΠ΅ ΠΏΠΎΡΠΎΡΠΈΠ»ΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΡΠ΅Π³ΠΈΡΡΡΡ Π½Π° ΡΡΠ±ΠΈΡΠΈΡΡΠ°, ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡΡ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π½Π° ΠΊΠ»Π°ΡΠ° Π½Π΅ ΡΡΠ΄ΡΡΠΆΠ° Π΄Π°Π½Π½ΠΈ. ΠΠ° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠΎΠ²Π°, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΠΌΠ΅ΡΠΎΠ΄ Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ ΠΌΡ, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° -ArgumentList. ΠΠΊΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°ΠΉΠ» Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠ΅Π΄Π°Π΄Π΅ΠΌ Π½ΠΈΠ·Π° "ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅" ΠΊΠ°ΡΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°:
$AppLog = New-Object -TypeName System.Diagnostics.EventLog -ArgumentList Application
$AppLog
ΠΠΎΠ»Ρ, ΠΎΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ Π·Π°ΠΏΠΈΡΠ°Ρ
ΠΌΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Π² ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° $AppLog. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ, ΠΏΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ ΡΠ΅ΡΡΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π΅ Π½Π° ΠΏΡΠ΅ΠΏΡΠ°ΡΠΊΠ° ΠΊΡΠΌ ΠΎΠ±Π΅ΠΊΡ. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΊΠ»Π°ΡΠΎΠ²Π΅ Π½Π° .NET Core ΡΠ΅ ΡΡΠ΄ΡΡΠΆΠ°Ρ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° System: PowerShell ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΡΡΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ Π² Π½Π΅Π³ΠΎ, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΏΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Diagnostics.EventLog Π²ΠΌΠ΅ΡΡΠΎ System.Diagnostics.EventLog Π΅ ΡΡΠ²ΡΠ΅ΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ.
ΠΠ° Π΄Π° ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Ρ Π΄Π½Π΅Π²Π½ΠΈΠΊΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈ:
$AppLog | Get-Member -MemberType Method
ΠΠ° ΡΠ΅ΡΠ΅ΠΌ, ΡΠ΅ Π΅ ΠΈΠ·ΡΠΈΡΡΠ΅Π½ΠΎ ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄Π° Clear(), Π°ΠΊΠΎ ΠΈΠΌΠ° ΠΏΡΠ°Π²Π° Π·Π° Π΄ΠΎΡΡΡΠΏ:
$AppLog.Clear()
ΠΠΎΠΌΠ°Π½Π΄Π»Π΅ΡΡΡ 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. Π’Π΅ ΡΠ°
[System.Environment] | Get-Member
ΠΠ° Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠ°ΠΌΠΎ ΡΡΠ°ΡΠΈΡΠ½ΠΈ ΡΠ»Π΅Π½ΠΎΠ²Π΅, ΠΈΠ·Π²ΠΈΠΊΠ°ΠΉΡΠ΅ Get-Member Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° -Static (ΠΎΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΈΠΏΠ° ΠΎΠ±Π΅ΠΊΡ):
[System.Environment] | Get-Member -Static
ΠΠ° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΡΠ°ΡΠΈΡΠ½ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ Π΄Π²Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΈ Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΡΠΊΠ° ΡΠ»Π΅Π΄ Π»ΠΈΡΠ΅ΡΠ°Π»Π°:
[System.Environment]::OSVersion
ΠΠ»ΠΈ
$test=[System.Math]::Sqrt(25)
$test
$test.GetType()
ΠΡΠ²Π΅Π΄Π΅ΡΠ΅ PSCustomObject
Π‘ΡΠ΅Π΄ ΠΌΠ½ΠΎΠ³ΠΎΠ±ΡΠΎΠΉΠ½ΠΈΡΠ΅ ΡΠΈΠΏΠΎΠ²Π΅ Π΄Π°Π½Π½ΠΈ, Π½Π°Π»ΠΈΡΠ½ΠΈ Π² PowerShell, Π·Π°ΡΠ»ΡΠΆΠ°Π²Π° Π΄Π° ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π΅ PSCustomObject, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½Π° ΡΡΡΡΠΊΡΡΡΠ°. Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°ΠΊΡΠ² ΠΎΠ±Π΅ΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° cmdlet New-Object ΡΠ΅ ΡΡΠΈΡΠ° Π·Π° ΠΊΠ»Π°ΡΠΈΡΠ΅ΡΠΊΠΈ, Π½ΠΎ ΡΡΠΎΠΌΠ°Π² ΠΈ ΠΎΡΡΠ°ΡΡΠ» Π½Π°ΡΠΈΠ½:
$object = New-Object βTypeName PSCustomObject -Property @{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'}
ΠΠ΅ΠΊΠ° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡΠ°:
$object | Get-Member
ΠΠ°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ Ρ PowerShell 3.0, Π΅ Π½Π°Π»ΠΈΡΠ΅Π½ Π΄ΡΡΠ³ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
$object = [PSCustomObject]@{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'
}
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΏΠΎ Π΅Π΄ΠΈΠ½ ΠΎΡ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΈΡΠ΅ Π½Π°ΡΠΈΠ½ΠΈ:
$object.Name
$object.'Name'
$value = 'Name'
$object.$value
ΠΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠ° Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΠ° Π² ΠΎΠ±Π΅ΠΊΡ:
$hash = @{'Name'='Ivan Danko'; 'City'='Moscow'; 'Country'='Russia'}
$hash.GetType()
$object = [pscustomobject]$hash
$object.GetType()
ΠΠ΄ΠΈΠ½ ΠΎΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠΈΡΠ΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ ΠΎΡ ΡΠΎΠ·ΠΈ ΡΠΈΠΏ Π΅, ΡΠ΅ ΡΠ΅Π΄ΡΡ Π½Π° ΡΠ΅Ρ
Π½ΠΈΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ. ΠΠ° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΡΠ΅ ΡΠΎΠ²Π°, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΠ° [ordered]:
$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 Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π½Π΅ ΡΠ°ΠΌΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π°, Π½ΠΎ ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΊΡΠΌ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠ·Π΄Π°Π΄Π΅Π½ $object, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΡΠ° "-MemberType ScriptMethod":
$ScriptBlock = {
# ΠΊΠΎΠ΄
}
$object | Add-Member -Name "MyMethod" -MemberType ScriptMethod -Value $ScriptBlock
$object | Get-Member
ΠΠΎΠ»Ρ, ΠΎΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΌΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° $ScriptBlock ΠΎΡ ΡΠΈΠΏ ScriptBlock, Π·Π° Π΄Π° ΡΡΡ ΡΠ°Π½ΠΈΠΌ ΠΊΠΎΠ΄Π° Π·Π° Π½ΠΎΠ²ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄.
ΠΠ° Π΄Π° ΠΏΡΠ΅ΠΌΠ°Ρ
Π½Π΅ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄:
$object.psobject.properties.remove('Name')
Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π²Π°ΡΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΠΊΠ»Π°ΡΠΎΠ²Π΅
PowerShell 5.0 Π²ΡΠ²Π΅Π΄Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅
class MyClass
{
# ΡΠ΅Π»ΠΎ ΠΊΠ»Π°ΡΡΠ°
}
Π’ΠΎΠ²Π° Π΅ ΠΈΡΡΠΈΠ½ΡΠΊΠΈ ΡΠΈΠΏ .NET Core, Ρ ΡΡΠ»ΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΎΠΏΠΈΡΠ²Π° Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΈ Π΄ΡΡΠ³ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ. ΠΠ΅ΠΊΠ° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° Π½Π°ΠΉ-ΠΏΡΠΎΡΡΠΈΡ ΠΊΠ»Π°Ρ:
class MyClass
{
[string]$Name
[string]$City
[string]$Country
}
ΠΠ° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΎΠ±Π΅ΠΊΡ (Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π½Π° ΠΊΠ»Π°Ρ), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ cmdlet
$object = New-Object -TypeName MyClass
ΠΈΠ»ΠΈ
$object = [MyClass]::new()
ΠΠ΅ΠΊΠ° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡΠ°:
$object | Get-Member
ΠΠ΅ Π·Π°Π±ΡΠ°Π²ΡΠΉΡΠ΅ Π·Π° ΠΎΠ±Ρ
Π²Π°ΡΠ°: Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ ΠΈΠΌΠ΅ Π½Π° ΡΠΈΠΏ ΠΊΠ°ΡΠΎ Π½ΠΈΠ· ΠΈΠ»ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π»ΠΈΡΠ΅ΡΠ°Π» Π½Π° ΡΠΈΠΏ ΠΈΠ·Π²ΡΠ½ ΡΠΊΡΠΈΠΏΡΠ° ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡΠ»Π°, Π² ΠΊΠΎΠΉΡΠΎ Π΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ ΠΊΠ»Π°ΡΡΡ. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π²ΡΡΡΠ°Ρ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΈ Π½Π° ΠΊΠ»Π°Ρ (ΠΎΠ±Π΅ΠΊΡΠΈ), ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ Π΄ΠΎΡΡΡΠΏΠ½ΠΈ ΠΈΠ·Π²ΡΠ½ ΠΌΠΎΠ΄ΡΠ»Π° ΠΈΠ»ΠΈ ΡΠΊΡΠΈΠΏΡΠ°.
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΎΠ±Π΅ΠΊΡΠ°, ΠΏΠΎΠΏΡΠ»Π½Π΅ΡΠ΅ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°:
$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)
ΠΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠ΅ΡΠΎΠ²Π°ΡΠ΅Π½ΠΈ; Π² Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, ΠΊΠ»Π°ΡΡΡ ΠΈΠΌΠ°
class MyClass2 : MyClass
{
#ΡΠ΅Π»ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, Π±Π°Π·ΠΎΠ²ΡΠΌ Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ MyClass
}
[MyClass2]::new().Smile($true)
ΠΠ°ΡΠ΅ΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΎΠ±Π΅ΠΊΡΠΈ Π² PowerShell Π΅Π΄Π²Π° Π»ΠΈ Π΅ ΠΈΠ·ΡΠ΅ΡΠΏΠ°ΡΠ΅Π»Π½ΠΎ. Π ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΠΌΠ΅ Π΄Π° Π³ΠΎ Π·Π°Π΄ΡΠ»Π±ΠΎΡΠΈΠΌ Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ: ΠΏΠ΅ΡΠ°ΡΠ° ΡΡΠ°ΡΠΈΡ ΠΎΡ ΠΏΠΎΡΠ΅Π΄ΠΈΡΠ°ΡΠ° ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΠΎΡΠ²Π΅ΡΠ΅Π½Π° Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ Π½Π° ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° PowerShell ΡΡΡ ΡΠΎΡΡΡΠ΅ΡΠ½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° ΡΡΠ΅ΡΠΈ ΡΡΡΠ°Π½ΠΈ. ΠΠΈΠ½Π°Π»ΠΈ ΡΠ°ΡΡΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π½Π° Π²ΡΡΠ·ΠΊΠΈΡΠ΅ ΠΏΠΎ-Π΄ΠΎΠ»Ρ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com