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

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

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

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

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

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

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

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

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

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

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

Get-Process | Get-Member

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

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

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"}

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

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

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

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

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

ΠŸΡ€ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ чСсто ΠΈΠΌΠ° Π½ΡƒΠΆΠ΄Π° Π΄Π° Π³ΠΈ сортиратС. ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Sort-Object ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° ΠΈΠΌΠ΅Π½Π°Ρ‚Π° Π½Π° свойствата (ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ Π·Π° сортиранС) ΠΈ Π²Ρ€ΡŠΡ‰Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, ΠΏΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ΠΈ ΠΏΠΎ Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ стойности. ЛСсно Π΅ Π΄Π° сортиратС ΠΈΠ·Ρ…ΠΎΠ΄Π° ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ процСси ΠΏΠΎ ΠΈΠ·Ρ€Π°Π·Ρ…ΠΎΠ΄Π²Π°Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° процСсора (свойство Π½Π° процСсора):

Get-Process | Sort-Object –Property cpu

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ΡŠΡ‚ -Property ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС пропуснат ΠΏΡ€ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΊΡ€Π°Ρ‚ΠΊΠ°Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Sort-Object; Ρ‚ΠΎΠΉ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅. Π—Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ сортиранС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° -Descending:

Get-Process | Sort-Object cpu -Descending

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

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

ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° 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 Π²Ρ€ΡŠΡ‰Π° Π΅Π΄ΠΈΠ½ ΠΎΠ±Π΅ΠΊΡ‚ (-First 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 ΠΈ Measure-Object

Има ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с ΠΎΠ±Π΅ΠΊΡ‚ΠΈ. ΠšΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅ΠΊΠ° ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° Ρ‚Ρ€ΠΈΡ‚Π΅ Π½Π°ΠΉ-ΠΏΠΎΠ»Π΅Π·Π½ΠΈ:

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

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

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

Group-Object PropertyName

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

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

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

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

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

Има ΠΌΠ½ΠΎΠ³ΠΎ софтуСрни ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ с .NET Core ΠΈ COM интСрфСйси, ΠΊΠΎΠΈΡ‚ΠΎ са ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Π·Π° систСмнитС администратори. Използвайки класа System.Diagnostics.EventLog, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° управляватС систСмни рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΡ‚ Windows PowerShell. НСка Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° създаванС Π½Π° СкзСмпляр Π½Π° Ρ‚ΠΎΠ·ΠΈ клас с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° cmdlet New-Object с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° -TypeName:

New-Object -TypeName System.Diagnostics.EventLog

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

Въй ΠΊΠ°Ρ‚ΠΎ Π½Π΅ смС посочили ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡΡ‚Π°, получСният СкзСмпляр Π½Π° класа Π½Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Π΄Π°Π½Π½ΠΈ. Π—Π° Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°, трябва Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°Ρ‚Π΅ спСциалСн ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° конструктор ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° -ArgumentList. Ако искамС Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ рСгистрационния Ρ„Π°ΠΉΠ» Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, трябва Π΄Π° ΠΏΡ€Π΅Π΄Π°Π΄Π΅ΠΌ Π½ΠΈΠ·Π° "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅" ΠΊΠ°Ρ‚ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π½Π° конструктора:

$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 ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π²ΡŠΡ€Π΄Π΅ Π°Ρ€Ρ…Π°ΠΈΡ‡Π½ΠΎ ΠΈ Ρ‚Ρ€ΠΎΠΌΠ°Π²ΠΎ; Ρ‚ΠΎΠ·ΠΈ 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

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

$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-. Всичко, ΠΊΠΎΠ΅Ρ‚ΠΎ остава, Π΅ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ добавянСто ΠΈ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ. Π”Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π° Π·Π° ΠΎΠ±Π΅ΠΊΡ‚Π° ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΅ доста просто:

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

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

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

ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° клас ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π° Π½Π° описаниСто Π½Π° функция, Π½ΠΎ Π±Π΅Π· Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½Π°Ρ‚Π° Π΄ΡƒΠΌΠ°. ΠšΠ°ΠΊΡ‚ΠΎ във функция, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ сС ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ, Π°ΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ:

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: Π Π°Π±ΠΎΡ‚Π° с ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, собствСни класовС

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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€