Какво Π΅ Windows PowerShell ΠΈ с ΠΊΠ°ΠΊΠ²ΠΎ сС Ρ…Ρ€Π°Π½ΠΈ? Част 4: Π Π°Π±ΠΎΡ‚Π° с ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, собствСни класовС

Какво Π΅ Windows PowerShell ΠΈ с ΠΊΠ°ΠΊΠ²ΠΎ сС Ρ…Ρ€Π°Π½ΠΈ? Част 4: Π Π°Π±ΠΎΡ‚Π° с ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, собствСни класовС

ВСкстовият ΠΈΠ·Ρ…ΠΎΠ΄ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ‚Π΅ Π² ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π° Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° PowerShell Π΅ просто Π½Π°Ρ‡ΠΈΠ½ Π·Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° информация Π² ΡƒΠ΄ΠΎΠ±Π΅Π½ Π·Π° Ρ‡ΠΎΠ²Π΅ΡˆΠΊΠΎΡ‚ΠΎ Π²ΡŠΠ·ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ Π²ΠΈΠ΄. Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚, срСдата Π΅ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½Π° към Ρ€Π°Π±ΠΎΡ‚Π° с ΠΎΠ±Π΅ΠΊΡ‚ΠΈ: ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ΠΈ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚ Π²Ρ…ΠΎΠ΄Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈ Π²Ρ€ΡŠΡ‰Π°Ρ‚ Π½Π° ΠΈΠ·Ρ…ΠΎΠ΄Π°, Π° Π½Π°Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ ΠΈ Π² сцСнарии Ρ‚ΠΈΠΏΠΎΠ²Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ сС основават Π½Π° класовСтС .NET. Π’ Ρ‡Π΅Ρ‚Π²ΡŠΡ€Ρ‚Π°Ρ‚Π° статия ΠΎΡ‚ Ρ†ΠΈΠΊΡŠΠ»Π° Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° с ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅ ΠΏΠΎ-ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ.

Π‘ΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅:

ΠžΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅ Π² PowerShell
ΠŸΡ€Π΅Π³Π»Π΅Π΄ Π½Π° структурата Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅
Π€ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅
Π‘ΠΎΡ€Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅
Π˜Π·Π±ΠΎΡ€ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ части
ForEach-Object, Group-Object ΠΈ Measure-Object
БъздаванС Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ .NET ΠΈ COM (New-Object)
ИзвикванС Π½Π° статични ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ
Π’ΠΈΠΏ PSCustomObject
БъздаванС Π½Π° собствСни класовС

ΠžΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅ Π² PowerShell

НСка ΠΏΡ€ΠΈΠΏΠΎΠΌΠ½ΠΈΠΌ, Ρ‡Π΅ ΠΎΠ±Π΅ΠΊΡ‚ΡŠΡ‚ Π΅ ΡΡŠΠ²ΠΊΡƒΠΏΠ½ΠΎΡΡ‚ ΠΎΡ‚ ΠΏΠΎΠ»Π΅Ρ‚Π° с Π΄Π°Π½Π½ΠΈ (свойства, ΡΡŠΠ±ΠΈΡ‚ΠΈΡ ΠΈ Ρ‚.Π½.) ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° тяхната ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°. НСговата структура сС Π·Π°Π΄Π°Π²Π° ΠΎΡ‚ Ρ‚ΠΈΠΏΠ°, ΠΊΠΎΠΉΡ‚ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ сС основава Π½Π° класовСтС, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π°Ρ‚Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° .NET Core. Π‘ΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с ΠΎΠ±Π΅ΠΊΡ‚ΠΈ COM, CIM (WMI) ΠΈ ADSI. Бвойствата ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ са Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ дСйствия с Π΄Π°Π½Π½ΠΈΡ‚Π΅, освСн Ρ‚ΠΎΠ²Π° Π² PowerShell ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚ ΠΊΠ°Ρ‚ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ΠΈ, Π΄Π° ΠΈΠΌ сС присвояват стойности Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅, Π° ΡΡŠΡ‰ΠΎ ΠΈ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° композиция Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ (ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ ΠΈΠ»ΠΈ pipeline). Всяка ΠΊΠΎΠΌΠ°Π½Π΄Π° Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° ΠΏΡ€Π΅Π΄Π°Π²Π° своя ΠΈΠ·Ρ…ΠΎΠ΄ Π½Π° слСдващата послСдоватСлно β€” ΠΎΠ±Π΅ΠΊΡ‚ ΠΏΠΎ ΠΎΠ±Π΅ΠΊΡ‚. Π—Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ΠΈ ΠΈΠ»ΠΈ Π΄Π° сС ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ собствСни Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π·Π° Π΄Π° сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ†ΠΈΠΈ с ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅ Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°: Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅, сортиранС, Π³Ρ€ΡƒΠΏΠΈΡ€Π°Π½Π΅ ΠΈ Π΄ΠΎΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π° тяхната структура. ΠŸΡ€Π΅Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ ΠΈΠΌΠ° сСриозно прСдимство: ΠΏΡ€ΠΈΠ΅ΠΌΠ½Π°Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ трябва Π΄Π° сС Π·Π°Π½ΠΈΠΌΠ°Π²Π° със синтактичСн Π°Π½Π°Π»ΠΈΠ· Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΎΡ‚ Π±Π°ΠΉΡ‚ΠΎΠ²Π΅ (тСкст), Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°Ρ‚Π° информация лСсно сС ΠΈΠ·Π²Π»ΠΈΡ‡Π° Ρ‡Ρ€Π΅Π· Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ.

ΠŸΡ€Π΅Π³Π»Π΅Π΄ Π½Π° структурата Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅

Π—Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅ΠΊΠ° стартирамС ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ Get-Process, ΠΊΠΎΠΉΡ‚ΠΎ позволява ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° информация Π·Π° Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈΡ‚Π΅ Π² систСмата процСси:

Какво Π΅ Windows PowerShell ΠΈ с ΠΊΠ°ΠΊΠ²ΠΎ сС Ρ…Ρ€Π°Π½ΠΈ? Част 4: Π Π°Π±ΠΎΡ‚Π° с ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, собствСни класовС

Π’ΠΎΠΉ Ρ‰Π΅ ΠΈΠ·Π²Π΅Π΄Π΅ Π½Π° Π΅ΠΊΡ€Π°Π½ някои Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°Π½ΠΈ тСкстови Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ Π΄Π°Π²Π°Ρ‚ прСдстава Π·Π° свойствата Π½Π° Π²Ρ€ΡŠΡ‰Π°Π½ΠΈΡ‚Π΅ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ. Π—Π° Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»Π½ΠΎ Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΈΠ·Ρ…ΠΎΠ΄Π° трябва Π΄Π° сС Π½Π°ΡƒΡ‡ΠΈΠΌ Π΄Π° изслСдвамС структурата Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅ ΠΈ Π½Π° Ρ‚ΠΎΠ²Π° Ρ‰Π΅ Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ Get-Member:

Get-Process | Get-Member

Какво Π΅ Windows PowerShell ΠΈ с ΠΊΠ°ΠΊΠ²ΠΎ сС Ρ…Ρ€Π°Π½ΠΈ? Част 4: Π Π°Π±ΠΎΡ‚Π° с ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, собствСни класовС

Π’ΡƒΠΊ Π²Π΅Ρ‡Π΅ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ Ρ‚ΠΈΠΏΠ° ΠΈ структурата, Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π° ΠΈΠ·Π²Π΅Π΄Π΅ΠΌ само свойствата Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π°, ΠΏΠΎΠΏΠ°Π΄Π½Π°Π» Π½Π° Π²Ρ…ΠΎΠ΄Π°:

Get-Process | Get-Member -MemberType Property

Π’Π΅Π·ΠΈ знания Ρ‰Π΅ са Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° администраторски Π·Π°Π΄Π°Ρ‡ΠΈ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ ΠΈΠ»ΠΈ Π·Π° написванСто Π½Π° собствСни скриптовС: Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ, Π·Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ информация Π·Π° Π·Π°Π΄ΡŠΡ€ΠΆΠ°Π½ΠΈ процСси ΠΏΠΎ свойството Responding.

Π€ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅

PowerShell позволява Π΄Π° ΠΏΡ€Π΅Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΠΎ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, отговарящи Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ условиС:

Where-Object { Π±Π»ΠΎΠΊ сцСнария }

Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ ΠΎΡ‚ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π±Π»ΠΎΠΊΠ° сцСнария Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π½ΠΈΡ‚Π΅ скобки трябва Π΄Π° Π΅ логичСска стойност. Ако тя Π΅ вярна ($true), ΠΎΠ±Π΅ΠΊΡ‚ΡŠΡ‚, ΠΏΠΎΠΏΠ°Π΄Π½Π°Π» Π½Π° Π²Ρ…ΠΎΠ΄Π° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Π° Where-Object, Ρ‰Π΅ бъдС ΠΏΡ€Π΅Π΄Π°Π΄Π΅Π½ ΠΏΠΎ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° Π½Π°Ρ‚Π°Ρ‚ΡŠΠΊ, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай (стойност $false) Ρ‚ΠΎΠΉ Ρ‰Π΅ бъдС ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚. Π—Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅ΠΊΠ° ΠΈΠ·Π²Π΅Π΄Π΅ΠΌ списък Π½Π° спрСнитС услуги Π½Π° Windows Server, Ρ‚.Π΅. Ρ‚Π°ΠΊΠΈΠ²Π°, ΠΏΡ€ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ свойството Status ΠΈΠΌΠ° стойност "Stopped":

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

Какво Π΅ Windows PowerShell ΠΈ с ΠΊΠ°ΠΊΠ²ΠΎ сС Ρ…Ρ€Π°Π½ΠΈ? Част 4: Π Π°Π±ΠΎΡ‚Π° с ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, собствСни класовС

Π’ΡƒΠΊ ΠΎΡ‚Π½ΠΎΠ²ΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ тСкстово прСдставянС, Π½ΠΎ Π°ΠΊΠΎ ΠΆΠ΅Π»Π°Π΅ΠΌ, Π½Π΅ Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Ρ‚ΠΈΠΏΠ° ΠΈ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° структура Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅, ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Ρ‰ΠΈ ΠΏΡ€Π΅Π· ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°:

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

Какво Π΅ Windows PowerShell ΠΈ с ΠΊΠ°ΠΊΠ²ΠΎ сС Ρ…Ρ€Π°Π½ΠΈ? Част 4: Π Π°Π±ΠΎΡ‚Π° с ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, собствСни класовС

Π‘ΠΎΡ€Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅

ΠŸΡ€ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ чСсто възниква нСобходимост ΠΎΡ‚ тяхната сортировка. На ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Π° Sort-Object сС ΠΏΠΎΠ΄Π°Π²Π°Ρ‚ ΠΈΠΌΠ΅Π½Π° Π½Π° свойства (ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ Π·Π° сортиранС), Π° Ρ‚ΠΎΠΉ Π²Ρ€ΡŠΡ‰Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅, ΠΏΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ΠΈ ΠΏΠΎ Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ стойности. Π˜Π·Ρ…ΠΎΠ΄ΡŠΡ‚ Π½Π° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈΡ‚Π΅ процСси Π½Π΅ Π΅ Ρ‚Ρ€ΡƒΠ΄Π΅Π½ Π·Π° сортиранС ΠΏΠΎ ΠΈΠ·Ρ€Π°Π·Ρ…ΠΎΠ΄Π²Π°Π½ΠΎ CPU Π²Ρ€Π΅ΠΌΠ΅ (свойство cpu):

Get-Process | Sort-Object –Property cpu

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ΡŠΡ‚ -Property ΠΏΡ€ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Π° Sort-Object ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ сС ΡƒΠΊΠ°Π·Ρ‹Π²Π°, Ρ‚ΠΎΠΉ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅. Π—Π° ΠΎΠ±Ρ€Π°Ρ‚Π½Π° сортировка сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ΡŠΡ‚ -Descending:

Get-Process | Sort-Object cpu -Descending

Какво Π΅ Windows PowerShell ΠΈ с ΠΊΠ°ΠΊΠ²ΠΎ сС Ρ…Ρ€Π°Π½ΠΈ? Част 4: Π Π°Π±ΠΎΡ‚Π° с ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, собствСни класовС

Π˜Π·Π±ΠΎΡ€ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ части

ΠšΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ΡŠΡ‚ Select-Object позволява Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ количСство ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π² Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ ΠΈΠ»ΠΈ Π² края Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ -First ΠΈΠ»ΠΈ -Last. Π‘ Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅ΠΌ ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΈΠ»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ свойства, Π° ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΄Π° създадСм Π½ΠΎΠ²ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π½Π° тяхна Π±Π°Π·Π°. НСка Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Π° с прости ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ.

Π‘Π»Π΅Π΄Π²Π°Ρ‰Π°Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π° информация Π·Π° 10 процСса, консумиращи максимално количСство ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ (свойство WS):

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

Какво Π΅ Windows PowerShell ΠΈ с ΠΊΠ°ΠΊΠ²ΠΎ сС Ρ…Ρ€Π°Π½ΠΈ? Част 4: Π Π°Π±ΠΎΡ‚Π° с ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, собствСни класовС

МоТСм Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅ΠΌ само ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ свойства Π½Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Ρ‰ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π· ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΈ Π΄Π° създадСм Π½ΠΎΠ²ΠΈ Π½Π° тяхна основа:

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

Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π½ΠΎΠ² ΠΎΠ±Π΅ΠΊΡ‚, структурата Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π° ΠΎΡ‚ структурата Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅, Π²Ρ€ΡŠΡ‰Π°Π½ΠΈ ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Π° Get-Process. НСка Π΄Π° сС ΡƒΠ²Π΅Ρ€ΠΈΠΌ Π² Ρ‚ΠΎΠ²Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Get-Member:

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

Какво Π΅ Windows PowerShell ΠΈ с ΠΊΠ°ΠΊΠ²ΠΎ сС Ρ…Ρ€Π°Π½ΠΈ? Част 4: Π Π°Π±ΠΎΡ‚Π° с ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, собствСни класовС

ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ Select-Object Π²Ρ€ΡŠΡ‰Π° Π΅Π΄ΠΈΠ½ΠΈΡ‡Π΅Π½ ΠΎΠ±Π΅ΠΊΡ‚ (-First 1), ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠΌΠ° само Π΄Π²Π΅ ΠΏΠΎΠ»Π΅Ρ‚Π°, посочСни ΠΎΡ‚ нас: Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ стойности бяха ΠΊΠΎΠΏΠΈΡ€Π°Π½ΠΈ ΠΎΡ‚ ΠΏΡŠΡ€Π²ΠΈΡ ΠΏΡ€Π΅Π΄Π°Π΄Π΅Π½ Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° ΠΎΠ±Π΅ΠΊΡ‚ ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Π° Get-Process. На ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Select-Object сС основава Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Π½Π°Ρ‡ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° създаванС Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π² PowerShell сцСнарии:

$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 ΠΈ Measure-Object

Π—Π° Ρ€Π°Π±ΠΎΡ‚Π° с ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ΠΈ. НапримСр, Ρ‰Π΅ обсъдим Ρ‚Ρ€ΠΈ ΠΎΡ‚ Π½Π°ΠΉ-ΠΏΠΎΠ»Π΅Π·Π½ΠΈΡ‚Π΅:

ForEach-Object позволява Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚Π΅ ΠΊΠΎΠ΄ Π½Π° PowerShell Π·Π° всСки ΠΎΠ±Π΅ΠΊΡ‚ Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°:

ForEach-Object { Π±Π»ΠΎΠΊ сцСнария }

Group-Object Π³Ρ€ΡƒΠΏΠΈΡ€Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅ ΠΏΠΎ стойност Π½Π° свойството:

Group-Object PropertyName

Ако Π³ΠΎ стартиратС с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° -NoElement, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ броя Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π² Π³Ρ€ΡƒΠΏΠΈΡ‚Π΅.

Measure-Object Π°Π³Ρ€Π΅Π³ΠΈΡ€Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ ΠΏΠΎ стойноститС Π½Π° ΠΏΠΎΠ»Π΅Ρ‚Π°Ρ‚Π° Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅ Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° (изчислява сумата, Π° ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π½Π°ΠΌΠΈΡ€Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π°Ρ‚Π°, максималната ΠΈΠ»ΠΈ срСдната стойност):

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

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ рассмотрСнныС ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Ρ‹ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ, Π° Π² скриптовС ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ сС ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с Π±Π»ΠΎΠΊΠΎΠ²Π΅Ρ‚Π΅ Begin, Process ΠΈ End.

БъздаванС Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ .NET ΠΈ COM (New-Object)

Има мноТСство софтуСрни ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ с интСрфСйси .NET Core ΠΈ COM, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Π½Π° систСмнитС администратори. Π‘ ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° класа System.Diagnostics.EventLog ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° управляватС систСмнитС Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΡ‚ Windows PowerShell. НСка Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° създаванС Π½Π° СкзСмпляр Π½Π° Ρ‚ΠΎΠ·ΠΈ клас с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Π° 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 сС ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ Π² пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° System: PowerShell ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Ρ‚ΡŠΡ€ΡΠΈ Π² Π½Π΅Π³ΠΎ посочСнитС Ρ‚ΠΈΠΏΠΎΠ²Π΅, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ написванСто Π½Π° Diagnostics.EventLog вмСсто System.Diagnostics.EventLog Π΅ напълно ΠΊΠΎΡ€Π΅ΠΊΡ‚Π½ΠΎ.

Π—Π° Ρ€Π°Π±ΠΎΡ‚Π° с ΠΆΡƒΡ€Π½Π°Π»Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΎΠ±Ρ€ΡŠΡ‰Π°Ρ‚Π΅ към ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ:

$AppLog | Get-Member -MemberType Method

Какво Π΅ Windows PowerShell ΠΈ с ΠΊΠ°ΠΊΠ²ΠΎ сС Ρ…Ρ€Π°Π½ΠΈ? Част 4: Π Π°Π±ΠΎΡ‚Π° с ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, собствСни класовС

Π”Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Π΅ Ρ‚ΠΎΠΉ сС изчиства с ΠΌΠ΅Ρ‚ΠΎΠ΄Π° 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 ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π²ΡŠΡ€Π΄Π΅ Π°Ρ€Ρ…Π°ΠΈΡ‡Π½ΠΎ ΠΈ обСмисто; Ρ‚ΠΎΠ·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с външни към 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, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π·Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½Π° структура. Π‘ΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π°ΠΊΡŠΠ² ΠΎΠ±Π΅ΠΊΡ‚ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Π° 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

Π”Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π² ΠΎΠ±Π΅ΠΊΡ‚ Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰Π° Ρ…Π΅Ρˆ Ρ‚Π°Π±Π»ΠΈΡ†Π°:

$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'
}

Има ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈ Π·Π° създаванС Π½Π° ΠΎΠ±Π΅ΠΊΡ‚: ΠΏΠΎ-Π³ΠΎΡ€Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°Ρ…ΠΌΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Π° Select-Object. ΠžΡΡ‚Π°Π²Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ добавянСто ΠΈ ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ. Π”Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Π·Π° ΠΎΠ±Π΅ΠΊΡ‚Π° ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΅ доста просто:

$object | Add-Member –MemberType NoteProperty –Name Age  –Value 33
$object | Get-Member

Какво Π΅ Windows PowerShell ΠΈ с ΠΊΠ°ΠΊΠ²ΠΎ сС Ρ…Ρ€Π°Π½ΠΈ? Част 4: Π Π°Π±ΠΎΡ‚Π° с ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, собствСни класовС

ΠšΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ΡŠΡ‚ 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
}

Π—Π° създаванС Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ (СкзСмпляр Π½Π° класа) сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ New-Object, ΠΈΠ»ΠΈ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŠΡ‚ ΠΎΡ‚ Ρ‚ΠΈΠΏ [MyClass] ΠΈ псСвдостатичният ΠΌΠ΅Ρ‚ΠΎΠ΄ new (конструктор ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΠ΅):

$object = New-Object -TypeName MyClass

ΠΈΠ»ΠΈ

$object = [MyClass]::new()

НСка Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ структурата Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π°:

$object | Get-Member

Какво Π΅ Windows PowerShell ΠΈ с ΠΊΠ°ΠΊΠ²ΠΎ сС Ρ…Ρ€Π°Π½ΠΈ? Част 4: Π Π°Π±ΠΎΡ‚Π° с ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, собствСни класовС

НС забравяйтС Π·Π° ΠΎΠ±Ρ…Π²Π°Ρ‚Π°: Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΠΎΠ·ΠΎΠ²Π°Π²Π°Ρ‚Π΅ Π½Π° ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Ρ‚ΠΈΠΏΠ° Π² Π²ΠΈΠ΄ Π½Π° Π½ΠΈΠ· ΠΈΠ»ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π» ΠΎΡ‚ Ρ‚ΠΈΠΏ извън скрипта ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π°, Π² ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΊΠ»Π°ΡΡŠΡ‚. Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π²Ρ€ΡŠΡ‰Π°Ρ‚ СкзСмпляри Π½Π° класа (ΠΎΠ±Π΅ΠΊΡ‚ΠΈ), ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ извън ΠΌΠΎΠ΄ΡƒΠ»Π° ΠΈΠ»ΠΈ скрипта.

Π‘Π»Π΅Π΄ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π° Π΄Π° запълним свойствата ΠΌΡƒ:

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

Какво Π΅ Windows PowerShell ΠΈ с ΠΊΠ°ΠΊΠ²ΠΎ сС Ρ…Ρ€Π°Π½ΠΈ? Част 4: Π Π°Π±ΠΎΡ‚Π° с ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, собствСни класовС

НСка ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈΠΌ, Ρ‡Π΅ Π² описаниСто Π½Π° класа сС Π·Π°Π΄Π°Π²Π°Ρ‚ Π½Π΅ само Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Π½Π° свойствата, Π½ΠΎ ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ стойности ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅:

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

ОписаниС Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π° класа напомня описаниСто Π½Π° функция, Π½ΠΎ Π±Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° слуТСбната Π΄ΡƒΠΌΠ° function. ΠšΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΏΡ€ΠΈ функцията, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€Π΅Π΄Π°Π΄Π΅Π½ΠΈ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ ΠΏΡ€ΠΈ нСобходимост:

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: ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π² скриптовС ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, създаванС Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ΠΈ

Какво Π΅ Windows PowerShell ΠΈ с ΠΊΠ°ΠΊΠ²ΠΎ сС Ρ…Ρ€Π°Π½ΠΈ? Част 4: Π Π°Π±ΠΎΡ‚Π° с ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, собствСни класовС

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster