Etykiety

linux (14) php (14) Laravel (9) mysql (9) Hardware (8) Windows (6) sieci (5) PowerShell (4) software (4) MariaDB (3) apache (3) html (3) Microsoft (2) bezpieczeństwo LAN (2) cygwin (2) Akcesoria (1) CMS (1) Laptop (1) Open Office (1) drupal 7 (1) gpg (1) hosting (1) jquery (1) sieci LAN (1) xml (1) zabezpieczenie sieci LAN (1)

niedziela, 15 stycznia 2017

Wstęp do obiektów w PowerShell 5.0

Jak już miałem okazję wyjaśnić w artykule Wstęp do Windows PowerShell, Windows PowerShell 5.0 oparty jest na frameworku Microsoft .NET, co sprzyja ogromnym możliwościom programistycznym jeśli chodzi o pracę z obiektami. Dowiedzieliśmy się wówczas, między innymi, iż wynikami wykonywanych cmdletów nie są łańcuchy znaków, lecz obiekty.

Weźmy przykładowo cmdlet Get-ChildItem, który omówiłem wstępnie we wspomnianym wyżej artykule. Wywołując cmdlet Get-ChildItem, otrzymujemy listę elementów, które mogą być, w zależności od kontekstu, plikami i folderami, ale nie tylko. Te elementy są jednak zawsze obiektami, posiadającymi programistyczne właściwości i metody.

Zobaczmy, dla czystego przykładu, jakie właściwości i metody posiadają pliki zawarte w bieżącym katalogu oraz w jaki sposób można się do nich odwoływać:

PS C:\WINDOWS\system32> Get-ChildItem -File | gm -MemberType Property, Method | Format-Table Name, Membertype

W rezultacie wykonania powyższego polecenia, otrzymujemy listę obiektów, ich właściwości i metod:

Właściwości i metody obiektów w PowerShell 5.0
Właściwości i metody obiektów w PowerShell 5.0

Znając dostępne dla danego obiektu właściwości i metody, które zależne są od jego klasy, możemy z nich korzystać do konkretnych celów. Czysto przykładowo, korzystając z właściwości LastAccessTime, która jest dostępna dla obiektów klasy System.IO.FileInfo, możemy ograniczyć listę elementów zwracanych przez cmdlet Get-ChildItem do tych, których czas ostatniego dostępu jest późniejszy od daty 12/12/2016:

PS C:\Windows\system32> Get-ChildItem -File | where LastAccessTime -gt "12/12/2016"

W rezultacie wykonania powyższego polecenia, otrzymujemy:

Korzystanie z właściwości i metod obiektów w PowerShell 5.0
Korzystanie z właściwości i metod obiektów w PowerShell 5.0

Ten sam efekt można uzyskać korzystając z możliwości bezpośredniego odwoływania się do właściwości obiektów PowerShell. Jest na do sporo sposobów. Zademonstruję dwa z nich:

PS C:\WINDOWS\system32> ( gci -File ).where({$PSItem.LastAccessTime -gt "12/12/2016"});

PS C:\WINDOWS\system32> (gci).where( {!$_.psiscontainer -AND $_.LastAccessTime -gt "12/12/2016"} );

W Windows PowerShell 5.0 możemy jednak tworzyć własne obiekty i korzystać z ich specyficznych właściwości i metod. Zobaczmy teraz, prosty wstęp do pracy z własnymi obiektami:

Tworzenie obiektów w PowerShell 5.0
Tworzenie obiektów w PowerShell 5.0

Wyjaśniam zatem o co chodzi w powyższym przykładzie. Otóż utworzyłem obiekt klasy wscript.network, po czym przejrzałem jego metody i właściwości i zastosowałem jedną z nich aby zmapować przykładową lokalizację sieciową do litery dysku N:, po czym wyświetliłem zawartość dysku N:, a następnie zastosowałem odpowiednią metodę aby usunąć wcześniej utworzone mapowanie. Podobny efekt można uzyskać na wiele sposobów. Przykładowo, utworzenie obkiektu klasy wscript.network i mapowanie dysku sieciowego mogą być wykonane również w następujący sposób:
PS C:\Windows\System32> (New-Object -Com WScript.Network).MapNetworkDrive( "N:" , "\\SAMBA-SERVER1\Dom")

Innym prostym przykładem pracy z własnymi obiektami w PowerShell 5.0 może być obiekt klasy wscript.shell:

Tworzenie obiektów w PowerShell 5.0
Tworzenie obiektów w PowerShell 5.0

O co w tym chodzi? Otóż utworzyłem przykładowy obiekt klasy wscript, uzyskałem listę jego metod i właściwości, po czym zastosowałem metodę popup, co spowodowało pojawienie się okienka z uśmiechem.

Rzyczę miłej zabawy z obiektami w PowerShell 5.0 i zapraszam ponownie!

Brak komentarzy:

Prześlij komentarz

Dodaj komentarz