По аналогии с командлетом 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
