A PowerShell programozási nyelv

Objektum-orientált programozás

new-Object

A Windows PowerShellben új objektumokat a new-object cmdlet segítségével hozhatunk létre. A C#-nak megfelelő new utasítás jelenleg nem szerepel a nyelvben. Ha a C#-nak megfelelő new System.DateTime(2008,12,25)-nek megfelelő objektumot akarjuk létrehozni, akkor ezt az alábbi módon tehetjük meg:

PS C:\Users\Administrator> $x = New-Object System.DateTime 2008,12,25

Ennek oka az, hogy a későbbi verziókban megjelenő new kulcsszó használata megegyezzen a C#-ból ismert new kulcsszó használatával.

Osztályok definiálása

Windows PowerShell V2-ben az alábbi módon lehet új osztályt írni:

PS C:\Users\Administrator> add-type @" public class X{ public void f(){} } "@

A @" ... "@ közé tetszőleges érvényes C# kód írható.

.NET

A Windows Powershell egyik nagy előnye az, hogy képes felhasználni a .NET keretrendszer nyújtotta szolgáltatásokat, vagyis használhatunk .NET osztályokat Powershell alkalmazások fejlesztésekor.

Amikor például leírjuk Powershell-ben, hogy (40+2), akkor egy .NET objektumot, nevezetesen egy System.Int32 -t deklaráltunk.

Erről meggyőződhetünk a C#-os módon:

PS D:\Example> (40+2).getType()

Vagy használhatjuk a beépített get-member cmdlet-et is:

PS D:\Example> (40+2) | get-member

A Powershell kifejezőerejét jól szemlélteti a példaprogramok között található RSS-olvasó példaprogram, mely mindössze 1 soros.

Névterek

A Powershellben a névterek használatának a szintaxisa a következő: [névtér]::<Valami a névtérből>.

Például ha a System.DateTime NOW property-jét szeretnénk lekérdezni Powershellből:

PS D:\Example> [system.datetime]::now

Megjegyzés: rendelkezésünkre áll a get-date cmdlet, ami ezt megteszi helyettünk.

GUI

A Powershell egyik leglátványosabb képessége, hogy a .NET keretrendszerre épülő grafikus felhasználói felületek elkészítése nagyon gyorsan elvégezhető a segítségével.

A grafikus felületi osztályok nem részei a .NET core-nak, ezért nem meglepő módon kénytelenek leszünk kézzel betölteni őket. Ez nem a Powershell hiányossága, ezt akkor, amikor C#-ban készítünk egy grafikus alkalmazást, a Visual Studio megteszi helyettünk a projekt elkészítésekor.

Egy tetszőleges .NET dll betöltésének szintaxisa: [Reflection.Assembly]::LoadWithPartialName(<NÉV>)

Ha grafikus alkalmazást szeretnénk Powershell-ben készíteni, akkor a System.Windows.Forms-ra lesz biztosan szükségünk:

PS D:\Example>[reflection.assembly]::LoadWithPartialName("System.Windows.Forms")

A példaprogramok között megtalálható az előző RSS-olvasó grafikus változata is.