Попробуйте выполнить следующее:
$servers= 'GT544', 'HT54765', 'J4356', 'SW5654', 'JY67432'
$servers | ConvertTo-Html -Property @{ l='Name'; e={ $_ } }
Примечание. Как отмечает EBGreen , переменная $servers
не должна быть ограничена по типу как [string] $servers = ...
, посколькупреобразует массив строк в одну строку.В этом случае нет строгой необходимости ограничивать тип, но вы можете использовать [string[]] $servers = ...
ConvertTo-Html
по умолчанию перечисляет все свойства входных объектов, и вслучай [string]
экземпляров, который является только свойством .Length
.
Поэтому вам нужно использовать вычисляемое свойство , которое обернет ваши строки, что и является
@{ l='Name'; e={ $_ } }
делает;запись l
дает вашему свойству имя (будет использоваться в заголовке таблицы), а запись e
определяет его значение через блок скрипта ({ ... }
),которая в данном случае является просто самой строкой ввода ($_
).
Подробнее о вычисляемых свойствах см. этого ответа моего, но обратите внимание, что ConvertTo-Html
с любопытствомподдерживает только ключ l
/ label
для присвоения имени свойству (не также n
/ name
).
Кроме того, передача вычисленных свойств в настоящее время не поддерживается в PowerShell Core , по состоянию на v6.1.0-preview.2
Выше приведено:
<!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>
Чтобы сложить все вместе:
$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