0

Powershell ile HTML Rapor Oluşturma Bölüm 1. Yine bir PowerShell serisi ile karşınızdayım :) Tabi bu sefer ki çok uzun bir seri olmayacak :) Uzun zamandan beri makalesini yazmak istiyordum, kısmet bu güneymiş.

HTML bir ITpro olarak yazdığım script’lerin sonuçlarını gösterme kısmında oldukça işime yaran bir teknoloji olmuştur. Çok öncelerde ilkel metodlar kullanarak oluşturduğum bu HTML dosyaları daha sonralarda daha kolay ve özelleştirilebilir hale geldi diyebilirim.

PowerShell mimarisinde komut yada scriptlere ait çıktıların HTML formatında olması kolay şekilde mail olarak gönderilmelerine, esnek olmalarına ve plain-text çıktılara göre daha güzel görünmelerine neden olur.

HTML ile daha önceden çalışmamışsanız çok basit olarak bir HTML dosyası içerisindeki tag’ların ne anlama geldiğini öğrenmenizi öneririm. Çok zor değil. Ben basit olarak bir kaç temel tag’dan bahsetmeye çalışacağım.

Bir HTML dökümanının temelde bir <html> tagı ile başlayıp </html> tagı ile sonlanması gerekir. Bu amaçla oluşturulacak dökümanda dikkat edilecek ilk nokta bu olmalıdır.

HTML dökümanı içerisinde <table>,<td>,<head>,<body> vb bir çok tag barındırır. Bunların anlamları da karmaşık değildir. Örneğin <table> tabloyu ifade ederken <td> tabloya ait hücreleri ifade eder.

HTML dosyalarında önemli olan bölümlerden birisi <head></head> tagları arasında kalan bölümdür. Bu bölümün içerdikleri browser’da görünmezler, browser üzerinde görüntülenecek bölüm <body></body> tagları arasındaki bölümdür. <head> bölümü genelda sayfaya ait meta-data’yı içerir. Bu metadata browser tabındaki başlığı, sayfaya attach edilmiş style yada scriptleri içerir. Kısacası sayfanın güzel görünmesini sağlayan bileşenlerin tanımlandığı bölüm burasıdır.

Temel olarak ele aldığımız bu HTML bilgisinin ardından PowerShell ile birlikte gelen ConvertTo-Html cmdlet’ini kullanmaya başlayabiliriz. Daha önceden ele aldığım makalelerde bu cmdlet’I anlatmıştım. Bu seride biraz daha derinlemesine ele alacağım.

Basit bir komut ile HTML çıktı oluşturup yapısını inceleyelim.

System loglarını görüntülemek için aşağıdaki komutu kullanalım. Komutun powershell konsolu üzerindeki çıktısı aşağıdaki gibidir.

Get-EventLog -LogName “System” -EntryType Error -Newest 10


Resim-1

Şimdi ConvertTo-HTML cmdlet’ini kullanarak çıktıyı HTML formatında kaydedelim.

Get-EventLog -LogName “System” -EntryType Error -Newest 10| ConvertTo-Html > WULogs.html

Komut çalıştırılıp çıktı kayıt edildikten sonra HTML dosyayı herhangi bir browser ile açtığımızda aşağıdaki gibi bir tablo görünecektir. Plaintext çıktılara göre oldukça okunabilir bir formattadır.


Resim-2

Oluşturduğumuz HTML dosyasının içeriğini kontrol ettiğimizde HTML için gerekli olan tüm bileşenlerin powershell tarafından oluşturulduğunu görebilirsiniz.


Resim-3

ConvertTo-HTML komutu ile oluşturduğumuz HTML tabloya ait verileri özelleştirmeniz de mümkündür. Şimdi aşağıdaki komutu çalıştırıp farka göz atalım.

Get-EventLog -LogName “System” -EntryType Error -Newest 10 | ConvertTo-Html –Property MachineName ,EventID, TimeGenerated –Title “Windows PowerShell Log Information” > WULogs2.html

Komut ile HTML convert işlemi yapılırken belirli property’lerin gelmesini sağlayıp, HTML’e ail title property’sini de komutu çalıştırırken atamış olduk. (Bir önceki örnekte bu kısmı kontrol etmediğimiz için default olarak “HTML TABLE” başlığı title olarak atanmıştı.)

Komutun ardından HTML çıktısı aşağıdaki gibidir.


Resim-4

Convert-ToHTML cmdlet’I ile HTML çıktılarını basit olarak bu şekilde filtrelemiş olduk.

Bir HTML dosyası birden fazla tablo içerdiği durumlarda konfigürasyon biraz daha farklı bir hal alır. Bu kofigürasyon yapılırken genel olarak yapılan bir yanlış vardır. Şimdi önce bu yanlış yapılandırmaya göz atalım. Ardından doğrusunun nasıl olması gerektiğini anlatalım.

Örneğin bir makinanın işletim sistemi ve bios bilgilerini HTML bir dosya olarak kaydetmek istediğimizde genel olarak aşağıdaki yanlış yapılır.

Aşağıdaki örneğe göre ilk önce ilk komut çalıştırılıp HTML bir dosya olarak çıktı kaydedildikten sonra, ikinci komut çalıştırılıp yine ConvertTo-HTML komutu ile aynı dosyaya ikinci komuta ait çıktılar kaydedilir. Yani çıktılar aynı dosya üzerine iki kez HTML olarak dönüştürülür.

Get-WmiObject -class Win32_OperatingSystem | ConvertTo-HTML | Out-File report.html

Get-WmiObject -class Win32_BIOS | ConvertTo-HTML | Out-File report.html -append

Bu işlem sonucunda çıktı aşağıdaki gibi görünür. İlk bakışta çıktı hatalı değil gibidir.


Resim-5

Ancak HTML dökümanına göz atıldığında dökümanın yapısının sıkıntılı olduğu anlaşılır. Dökümanın içerisinde iki ayrı <html> bölümü vardır ve bu daha önce bahsettiğimiz gibi yanlış bir konfigürasyondur.


Resim-6

Bu yanlış konfigürasyonu düzeltmek için yapmamız gereken birden çok bölüm içeren HTML dökümanlarını oluştururken, her bölümü fragment komutu ile oluşturup tek bir convertto-html komutu kullanmaktır.

Bu sebeple böyle bir durumda olması gereken aşağıdaki gibidir.

$OS = Get-WmiObject -class Win32_OperatingSystem | ConvertTo-HTML -Fragment

$Bios = Get-WmiObject -class Win32_BIOS | ConvertTo-HTML -Fragment

ConvertTo-HTML -Body “$OS $Bios” -Title “Report” | Out-File PCReport.html

Komut çalıştırıldığında farklı bölümler –Fragment parametresi ile kaydedilip toplu olarak HTML’e convert edilir.

Bu komutların ardından HTML dosya kontrol edildiğinde tek bir <html> tagına sahip olduğu görülecektir.

Resim-7

İlk bölümde basit olarak HTML yapılarını,convertto-html cmdlet’ini ve multisenction html komutlarının nasıl oluşturulması gerektiğini ele almış olduk.

Bir sonraki bölümde tabloları css dosyaları ile nasıl daha görsel hale getirebileceğinizi anlatacağım.

Bir sonraki makalede görüşmek üzere.

Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

TAGs: powershell, powershell ve HTML, powershell ile HTML tablo oluşturma, powershell convertto-html kullanımı, powershell ve css, powershell HTML report, powershell ile raporlama,powershell ile html rapor oluşturma, convertto-html ile fragment, powershell ile multi-senction html oluşturma, powershell v3

Bu İçeriğe Tepkin Ne Oldu?
  • 1
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Sakarya doğumludur. İstanbul Üniversitesi’nde Matematik/Fen ve Teknoloji öğretmenliğini bitirmiştir. Yüksek lisansını Sakarya Üniversitesi Bilgisayar Mühendisliği’nde yapmıştır. Bilişim sektöründe çeşitli firmalarda sistem ve network sorumlusu olarak çalışmıştır. Bazı kurumlarda sistem ve network üzerine uzmanlık eğitimleri vermiştir. Şu anda Netaş şirketinde kurumsal danışman olarak görev yapmaktadır. Microsoft System Center ürünleri, Powershell ve Azure teknolojileri ile ilgilenmektedir. 2016 yılında Microsoft tarafından Cloud and Datacenter alanında MVP unvanını almıştır.

Yazarın Profili
İlginizi Çekebilir

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir