ConvertTo-HTML İpuçları ve Püf Noktaları

Herkes güzel bir HTML raporu sever. Haklı mıyım Bu raporları PowerShell’de oluşturmak o kadar da zor değildir. Farkında olmayabileceğiniz bazı ipuçları ve püf noktaları sunacağımı düşünüyorum, bunlardan birkaçı da dâhil olmak üzere, raporlar oluştururken hep kullanıyorum. Bunların bazıları ConvertTo-HTML yardımında belgelenmiştir. Yardım okudun değil mi? Unutmayın ki ConvertTo-HTML gerçek bir dosya oluşturmaz, sadece HTML kodu. Bu bizim için iyi. Bu, HTML‘yi anında değiştirebileceğimiz ve bittiğinde dosyayı kaydedeceğimiz anlamına geliyor.

 Seçici olun

İlk ve belki de en önemli ipucu seçici olmaktır. Bu gibi basit bir komut ve çıktı alalım.

Bunun bir HTML sürümünü oluşturmak istiyorsunuz, böylece böyle bir komutu çalıştırıyorsunuz:

PowerShell
1 Get-EventLog -list | convertto-html | out-file d:\temp\a.htm

Dosyayı tarayıcınızda açtığınızda, beklediğiniz şeyler değildir.

Bunun nedeni, Export-CSV ve Export-Clixml gibi Convertto-Html’in tüm nesneyi almasıdır. Bu sadece ekranda gördüğünüz varsayılan sonuç değildir. Unutmayın, her şey bir dize olarak ele alınacaktır. Benim örneğimde, benzer bir HTML dosyası istiyorsanız, Select-Object ile çıktıyı yeniden oluşturmam gerekecek. Bu, Get- Member’e “gerçek” mülk adlarını keşfetmek için orijinal sonucun borulamasını gerektirebilir.

PowerShell

1

2

3

4

Get-Eventlog -List | Select @{Name=”Max(K)”;Expression = {$_.MaximumKilobytes }},

@{Name=”Retain”;Expression = {$_.MinimumRetentionDays }},

OverFlowAction,@{Name=”Entries”;Expression = {$_.entries.count}},

@{Name=”Log”;Expression = {$_.LogDisplayname}}

Ben her zaman önce dönüştürmeden test ederim.

Tablo yerine bir liste alıyorum, ancak en azından özellikleri doğru. HTML dosyasını Convert-HTML’ye ve daha sonra Out-File’aorijinal ve işe yaramaz dosyanın üzerine yazacak şekilde pipetleyerek yeniden oluşturalım.

Bu, başlangıçta sahip olduğumla karşılaştırıldığında çok daha iyi Her şey bir dize gibi ele alınmasına rağmen, daha orijinal PowerShell çıktısına benzemek için sayısal değerleri biçimlendirebilirim.

PowerShell

1

2

3

4

Get-Eventlog -List | Select @{Name=”Max(K)”;Expression = {“{0:n0}” -f $_.MaximumKilobytes }},

@{Name=”Retain”;Expression = {$_.MinimumRetentionDays }},

OverFlowAction,@{Name=”Entries”;Expression = {“{0:n0}” -f $_.entries.count}},

@{Name=”Log”;Expression = {$_.LogDisplayname}} | convertto-html -Title “Event Log Report” | out-file d:\temp\a.htm

Ayrıca gidip bir başlık ekledim, bu yüzden HTML TABLO’dan daha kullanışlı bir şey elde ettim.

Öncesi / Sonrası İçerik Kullan

Biraz daha görsel çekiciliğe sahip bir şey inşa etmeye başlıyoruz. Bu, beni başka bir öneriye yönlendiriyor; içerik öncesi ve sonrası parametrelerden yararlanıyor.

ConvertTo-HTML’ye bir şey türettiğinizde, cmdlet genellikle bir tablo oluşturur. Ancak, ana koddan önce ve sonrasında konulacak şeyler için ek HTML yönergeleri ekleyebilirsiniz. İstediğiniz kadar çok html kodu kullanabilirsiniz.

PowerShell

1

2

3

4

5

6

Get-Eventlog -List | Select @{Name=”Max(K)”;Expression = {“{0:n0}” -f $_.MaximumKilobytes }},

@{Name=”Retain”;Expression = {$_.MinimumRetentionDays }},

OverFlowAction,@{Name=”Entries”;Expression = {“{0:n0}” -f $_.entries.count}},

@{Name=”Log”;Expression = {$_.LogDisplayname}} |

convertto-html -Title “Event Log Report” -PreContent “<H1>$($env:COMPUTERNAME)</H1>” -PostContent “<H5><i>$(get-date)</i></H5>” |

out-file d:\temp\a.htm

Bilgisayar adını görüntülemek için H1 etiketini kullanarak bir intro öğesi ekledim. İçeriği takiben, H5 başlıklı ve italik etiketleriyle biçimlendirilmiş geçerli tarih ve saati ekliyorum.

Elbette, bir CSS dosyasının yolunu her zaman belirtebilirsiniz.

PowerShell

1

2

3

4

5

6

Get-Eventlog -List | Select @{Name=”Max(K)”;Expression = {“{0:n0}” -f $_.MaximumKilobytes }},

@{Name=”Retain”;Expression = {$_.MinimumRetentionDays }},

OverFlowAction,@{Name=”Entries”;Expression = {“{0:n0}” -f $_.entries.count}},

@{Name=”Log”;Expression = {$_.LogDisplayname}} |

convertto-html -Title “Event Log Report” -PreContent “<H1>$($env:COMPUTERNAME)</H1>” -PostContent “<H5><i>$(get-date)</i></H5>” -CssUri C:\scripts\text.css |

out-file d:\temp\a.htm

 

Evde oynamak isterseniz, kullandığım CSS kodu budur:

CSS

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

body { background-color:#E5E4E2;

font-family:Monospace;

font-size:10pt; }

td, th { border:0px solid black;

border-collapse:collapse;

white-space:pre; }

th { color:white;

background-color:black; }

table, tr, td, th { padding: 0px; margin: 0px ;white-space:pre; }

table { margin-left:25px; }

h2 {

font-family:Tahoma;

color:#6D7B8D;

}

.footer

{ color:green;

margin-left:25px;

font-family:Tahoma;

font-size:8pt;

}

 

Sabit disk sürücüsünde bir dosya kullanıyorum. Bu, başka birinin dosyaya bakması halinde aynı biçimlendirmeyi yapamayacağı anlamına gelir. Çözüm, herkesin ulaşabileceği bir CSS dosya yolu kullanmaktır. Bu dizinin bir sonraki makalesi için tekrar kontrol edin.

Bu yardımcı oldu mu?

0 / 0

Bir yanıt yazın 0

E-posta adresiniz yayımlanmayacaktır. Required fields are marked *