sobota 19. septembra 2015

Keď niečo nefunguje v SharePointe - Get-SPLogEvent

Utilita Get-SPLogEvent je užitočná pre SharePoint Administrátorov, ale aj programátorov. Štandardne je zabudovaná v SharePoint-e ako súčasť SharePoint snappin. Slúži na zobrazovanie a vyhľadávanie v diagnostických logoch, čo vytvorí SharePoint. Na jej použitie ju treba zaviesť do PowerShell sessiony ako snappin. Dá sa to dvoma spôsobmi, a to automaticky, keď spustíme z Ponuky Štart>All Programs>Microsoft SharePoint 2013 Products>SharePoint 2013 Management Shell, čo je najjednoduchšia varianta viď. obr.1.
Obr.1 Ponuka Štart pre výber SharePoint 2013 Management Shell

Alebo snappin zavedieme manuálne, ale najprv musíme vedieť, ako máme zaregistrovaný snappin v systéme, na to pomôže riadok v PoweSshell-y, jeho výpis vidieť na obr.2:

get-pssnapping -registered

Obr. 2 get-pssnappin
Po obhliadnutí zaregistrovaných snappinov vidieť, že máme SharePoint snappin pod menom Microsoft.SharePoint.PowerShell  v systéme ho môžme zaviesť do sessionu pomocou cmdletu:

add-spsnappin -name Microsoft.SharePoint.PowerShell

Keďže používam na serveri PowerShell v spojení so SharePoint-om, tak som si pridal do profilu PowerShell-u predchádzajúci cmdlet, aby sa mi zaviedol SharePoint snappin vždy po otvorení PowerShell-u. Po zavedení snappinu môžme používať všetky cmdlety určené pre SharePoint. Nás ale zaujíma Get-SPLogEvent. Samotný cmdlet bez parametrov zobrazí všetky logy. Ok, ale výhoda utility nespočíva v tom, že môžme si zobraziť všetky logy, ale v tom, že môžme filtrovať na základe určitých parametrov v logoch.  Pozrime sa na nápovedu od cmdletu, obr.3.

get-help get-splogevent

alebo skrátená verzia

help get-splogevent

Obr.3 Nápoveda alebo manuálová stránka pre get-splogevent
Vidieť je niekoľko užitočných parametrov ako Directory, EndTime, StartTime, MinimumLevel. Príklady použitia si môžme pozrieť aj v nápovede, aby sme videli len priklady stačí uviesť cmdlet:

help get-splogevent -examples

Výstup príkazu je vidieť na obr.4.
Obr.4 Príklady použitia get-splogevent
Ok, to sú už menšie možnosti filtrovania, ale stále to nie je všetko a ani postačujúce. Čo tak filtrácia na základe Correlation, Category alebo Area, resp. iných v logu obsiahnutých informácií. Tým, že je PowerShell objektovo orientované skriptovacie prostredie, tak máme širšie možnosti práce s údajmi z príslušných cmdlet-ov. Pozrime na členov get-splogevent cez príkaz, viď. obr.5:

get-splogevent | get-members

Obr.5 Členovia cmdlet-u Get-SPLogEvent

Na základe určitého Correlation vieme získať potrebný výstup:

get-splogevent | where-object {$_.Correlation -eq '79012b9d-692f-f014-a228-52715da5e838'}

alebo získať všetky chyby úrovne Critical:

get-splogevent | where {$_.Level -eq 'Critical'}

Čo tak zobraziť ako výstup iba potrebné informácie ako message, category všetkých chýb úrovne critical:

get-splogevent | where {$_.Level -eq 'Critical'} | select-object Message,Category

Môžme kombinovať vlastnosti a vytvárať tak zložitejšie filtre. Za pomoci ďalších cmdlet-ov ako Where-Object, Select-Object, Format-List, Format-Table a ďalších vieme pekne dolovať informácie z logov a následne si ich zobraziť v PowerShell-y. 
SharePoint obsahuje veľké množstvo cmdlet-ov a v priebehu následujúcich článkov ich bližšie predstavím. Koľko ich je a ktoré to sú, si môžme pozrieť pomocou:


get-command -module Microsoft.SharePoint.PowerShell