По аналогии с командлетом ConvertTo-HTML, хотелось бы видеть в Powershell командлет ConvertFrom-HTML, для конвертирования текста с тегами в обычный форматированный текст. Давайте посмотрим на один простой метод обхода отсутствия такого командлета
На момент выпуска Powershell 7 такую функцию еще не реализовали, но есть достаточно простое решение.
Смысл метода заключается в:
- создании пустого объекта HTMLFile, аналогичного тому, что мы получаем с помощью Invoke-WebRequest
- последующего обращения к его параметру innerText для получения текста без тегов
Пример того что мы имеем на входе:
$Text = @" <div style="font-family:Arial; color:#000000; font-size:10pt">С уважением,<br /> <strong>Иван Иванов</strong><br /> Системный администратор<br /> <br /> <a href="mailto:email@domain.ru">email@domain.ru</a> | <a href="http://www.website.ru">www.website.ru</a></div> "@
Сам код для извлечения текста достаточно компактный:
$HTML = New-Object -ComObject "HTMLFile" $src = [System.Text.Encoding]::Unicode.GetBytes($text) try{ # Вариант для PowerShell 4 $HTML.IHTMLDocument2_write($src) } catch{ # Вариант для PowerShell 5 $HTML.write($src) } ( $HTML.all | ? { $_.tagname -eq 'body' } ).innerText