Essayez ce qui suit :
$servers= 'GT544', 'HT54765', 'J4356', 'SW5654', 'JY67432'
$servers | ConvertTo-Html -Property @{ l='Name'; e={ $_ } }
Note : Comme EBGreen observe, le $servers
ne devrait pas être soumise à des contraintes de type comme la variable [string] $servers = ...
car cela permet de convertir le tableau de chaînes de caractères en un fichier simple chaîne. Il n'est pas strictement nécessaire d'appliquer une contrainte de type dans ce cas, mais vous pouvez utiliser la méthode suivante [string[]] $servers = ...
ConvertTo-Html
par défaut énumère tous les propriétés des objets d'entrée, et dans le cas de [string]
instances qui ne sont que les .Length
propriété.
Vous devez donc utiliser un propriété calculée que enveloppes vos cordes, ce qui est ce que
@{ l='Name'; e={ $_ } }
fait ; le l
L'entrée donne à votre propriété une nom (sera utilisé dans l'en-tête du tableau), et e
L'entrée définit son valeur via un bloc script ( { ... }
), qui dans ce cas est simplement la chaîne d'entrée elle-même ( $_
).
Pour en savoir plus sur les propriétés calculées, voir cette réponse de la mienne, mais notez que ConvertTo-Html
ne prend curieusement en charge que le l
/ label
pour nommer la propriété (pas également n
/ name
).
De même, la transmission des propriétés calculées est actuellement cassé complètement dans PowerShell Core à partir de la version 6.1.0-preview.2
Ce qui précède donne :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>HTML TABLE</title>
</head><body>
<table>
<colgroup><col/></colgroup>
<tr><th>Name</th></tr>
<tr><td>GT544</td></tr>
<tr><td>HT54765</td></tr>
<tr><td>J4356</td></tr>
<tr><td>SW5654</td></tr>
<tr><td>JY67432</td></tr>
</table>
</body></html>
Pour mettre tout ça ensemble :
$servers = 'GT544', 'HT54765', 'J4356', 'SW5654', 'JY67432'
$file = "C:\Users\karljoey.chami\Desktop\Htmltesting\Result.html"
$servers | ConvertTo-Html -Property @{ l='Name'; e={ $_ } } -Title "Servers in a table" `
-CssUri "C:\Users\karljoey.chami\Desktop\Htmltesting\Red.css" `
-pre "<h>The servers are</h>" | Out-file $file
Invoke-Item $file