pátek 17. dubna 2009

Hej, mistře Šelíku!

Při pročítání posledního CZ TechNet zpravodaje mě napadlo zpracovat téma z komiksu Hej, mistře Skriptíku! v PowerShellu. TechNet Flash zpravodaj je dostupný na www.technetflash.cz (včetně starších čísel). Rozhodně jej doporučuji všem IT odborníkům.


Tentokrát budeme potřebovat PowerShell v2 (CTP3). Tato verze již obsahuje cmdlety pro práci s Windows Event Logy:

PS C:\Users\beta> Get-Command -noun EventLog | Select-Object Name
Clear-EventLog
Get-EventLog
Limit-EventLog
New-EventLog
Remove-EventLog
Show-EventLog
Write-EventLog

Mrkneme se na Write-EventLog. Ten má čtyři povinné parametry: LogName, Source, EventID, Message. Zkusme tedy něco zapsat do aplikačního logu:

Write-EventLog -LogName Application -source "Windows Error Reporting" -eventID 007 -Message "James Bond is cool!"

Výborně, stále tomu ale něco chybí. Většinou budete chtít zapisovat data z vašich programů. Pokud zkusite zápis ve tvaru:

Write-EventLog -LogName Application -source "Moje Aplikace" -eventID 007 -Message "James Bond is cool!"

PowerShell vám vrátí chybu jejíž část The source was not found vám oznámí, že toto nelze. Je to způsobené tím, že každý zdroj (Source), který zapisuje do Event Logu musí být předem zaregistrován (viz MSDN). Naštěstí exituje v PowerShellu cmdlet New-EventLog, který tuto službu udělá za vás. Následující seznam příkazů již tedy povede ke zdárnému konci (pro registraci zdroje musíte příkaz pustit s právy administrátora):

PS C:\> New-EventLog -LogName Application -Source "Moje Aplikace"
PS C:\> Write-EventLog -LogName Application -source "Moje Aplikace" -eventID 001 -Message "Ale ja jsem jednicka."

Žádné komentáře: