ConvertTo-Html из хэш-таблицы содержимого HTML в документ HTML - PullRequest
0 голосов
/ 28 декабря 2018

Я пытаюсь отобразить некоторую информацию в кодировке html в документе, сгенерированном в результате запланированного выполнения сценария powershell.

Следующая проблема MVP иллюстрирует мою проблему:

@{ a="<div style=""color:red;"">Hello</div>"; b="Hi"}.GetEnumerator() | Select Key, Value | ConvertTo-Html | Out-File -Encoding utf8 -FilePath C:\Scripts\Test.html

Какойвыходные данные:

<!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/><col/></colgroup>
<tr><th>Key</th><th>Value</th></tr>
<tr><td>a</td><td>&lt;div style=&quot;color:red;&quot;&gt;Hello&lt;/div&gt;</td></tr>
<tr><td>b</td><td>Hi</td></tr>
</table>
</body></html>

Который при открытии выглядит следующим образом:

Ouptut of command when opened

Но я хочу, чтобы мой Hello был красными не видеть экранированный код html div.

Можно ли как-нибудь сказать ConvertTo-Html не выходить из моих входов?

Примечание. Этот MVP только иллюстрирует проблему I 'м лицом.На самом деле у меня есть очень сложный отчет, который я хотел бы оформить для более удобного просмотра (цветовое кодирование, символы и т. Д.).

Это отчет, который я пытаюсь настроить: Badly formatted report output

1 Ответ

0 голосов
/ 28 декабря 2018

Основное назначение командлета ConvertTo-Html - предоставить простой в использовании инструмент для преобразования списков объектов в табличные отчеты HTML.Ожидается, что входные данные для этого преобразования будут не-HTML-данными, а символы, которые имеют особое значение в HTML, автоматически экранируются.Это нельзя отключить.

Неэкранированные фрагменты HTML могут быть вставлены в отчет HTML через параметры -Body, -PreContent и -PostContent до или после табличных данных.Однако для более сложных отчетов это, вероятно, недостаточно универсально.Наилучший подход в подобных ситуациях - генерировать отдельные части отчета в виде фрагментов, например

$ps = Get-Process | ConvertTo-Html -PreContext '<p>Process list</p>' -Fragment

, а затем объединять все фрагменты с помощью строки здесь:

$html = @"
<html>
<head>
...
</head>
<body>
${ps}
<hr>
${other_fragment}
...
</body>
</html>
"@

Asдля индивидуального форматирования отдельных частей сгенерированных фрагментов: это не поддерживается.Вам нужно изменить полученный HTML-код самостоятельно, либо с помощью поиска и замены (во фрагментах или в полном HTML-содержимом), либо путем анализа и изменения полного HTML-содержимого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...