A InfoWiki wikiből
Tartalomjegyzék |
ConvertTo-Html
Segítségével html alapú táblázatokba rendezhetjük a kimenő eredményeket. Komplett html fájlt állít elő. Tartalmazza a <!DOCTYPE>, <head> és <body> tageket. A bemenő adatok mezői (Property) adják a táblázat oszlopait, ezek értékei pedig a táblázat sorait.
Használata
Egy parancs kimenő adatait átirányítjuk a ConvertTo-Html be.
Get-Service | ConvertTo-Html
"alma","körte","banán" |ConvertTo-Html
Az eredmény így kiíródik a konzolba. Ha azt szeretnénk, hogy a táblázatunk böngészőből is elérhető legyen, az eredményt egy html fájlban kell tárolni.
Get-Service | ConvertTo-Html > "proba.htm"
Get-Service | ConvertTo-Html | Out-File "proba.htm"
Kapcsolók
A ConvertTo-Html cmdlet rendelkezik pár hasznos kapcsolóval.
A -Property kapcsolóval megadhatjuk azoknak a mezőknek a nevét amiket meg szeretnénk jeleníteni a táblázatunkban. Így kiválogathatjuk a számunkra szükséges mezőket.
Get-Service | ConvertTo-Html -Property Name, Type
A -Title kapcsoló segítségével szerkeszthetjük a html fájlunk <titel> tagjét.
Get-Service | ConvertTo-Html -Title "MyConvertPage"
A -Head kapcsoló után írt szöveg bekerül a html fájl <head> tagjébe. Ide írhatunk például stílusokat.
Get-Service | ConvertTo-Html -Head "<style>...</style>"
A -Body kapcsoló használatával közvtlenül a <body> tagbe írhatunk.
Get-Service | ConvertTo-Html -Body "<h2>Running and stopped services</h2>"
Script, konzolból futtatva
get-service | ConvertTo-Html -Title "Get-Service" -Body "<H2>The result of get-service</H2> " -Property Name,Status | foreach {if($_ -like "*<td>Running</td>*"){$_ -replace "<tr>", "<tr bgcolor=green>"}elseif($_ -like "*<td>Stopped</td>*"){$_ -replace "<tr>", "<tr bgcolor=red>"}else{$_}} > get-service.html
Lássuk, mit is csinál a fenti kód. Lekérdezi a futó vagy éppen álló szolgáltatásokat majd az eredményt átadja a ConvertTo-Html cmdletnek. Így kapunk egy html forráskódot aminek a <title> tagjébe beleíratjuk, hogy "Get-Service", a <body> tagjébe pedig, hogy "The result of get-service" kiemelve. A -Property kapcsoló segítségével kiválasztjuk a megjelenítendő mezőket, jelen esetben ez a Name és a Status.
Mindezen vegigszaladunk egy ciklussal, soronként vizsgálva a forrásunkat, és futó szolgáltatások sorait zöldre, az álló szolgáltatások sorait pedig pirosra szinezzük. Ha esetleg se ne mfut, se nem áll (?) akkor nem csinálunk vele semmit.
Ezután a némíleg módosított forráskódunkat beleírjuk a get-service.html fájlba.
Script, fájlba mentve
A fenti script elég összetett ahhoz, hogy konzolba beírva eltévedjünk benne. Sokkal tisztább ha mindezt egy fájlba mentve próbáljuk meg elkövetni. Átláthatóbb, letisztult kóddal.
A következő script ugyanazt csinálja, mint a fentebbi, annyi különbséggel, hogy ebben adtunk némi stílus formázást a html fájlunknak.
$Style = "<style>BODY {color: white; background-color: grey} TABLE {margin: 2px}</style>" $Name = "<center><h2>Formatted Service List</h2></center>" $procList = Get-Service | ConvertTo-html -Title "Services" -Head $Style -Body $Name -Property Status, Name, DisplayName, ServiceType; $i = 0; while (-not ($procList[$i] -like "*</body>*")) { if ($procList[$i] -like "*<td>Running</td>*") { $procList[$i] = $procList[$i] -Replace "<tr>","<tr bgcolor=green>"; } elseif ($procList[$i] -like "*<td>Stopped</td>*") { $procList[$i] = $procList[$i] -Replace "<tr>","<tr bgcolor=red>"; } $i++; } $procList | Out-File "FormattedServiceList.htm"
A kódot egy .ps1 kiterjesztésű szöveges állományban elmenthetjük, majd a PS konzolból bármikor meghívhatjuk.
Az eredmény pedig: