Személyes eszközök
Keresés

 

A InfoWiki wikiből


Tartalomjegyzék

Bevezető

A ConvertTo-Html cmdlet 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.

Az eredmény pedig: Kép:ps_convertto-html-result1.jpeg

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:

Kép:ps_convertto-html-result2.jpg


Források

Hung Yuwu blogja

PowerShellPro


Kis Balázs

Nézetek
nincs sb_3.146.152.99 cikk