Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ 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):

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 примСняСтся ΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с БОМ-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ. Π˜Ρ… довольно ΠΌΠ½ΠΎΠ³ΠΎ β€” ΠΎΡ‚ поставляСмых с сСрвСром сцСнариСв Windows Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π΄ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ActiveX, Ρ‚Π°ΠΊΠΈΡ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ Internet Explorer. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ БОМ-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, трСбуСтся Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -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