ConvertTo-Html将对象属性转换为列表或表中的值。字符串只有一个属性Length - 这就是您在输出中看到的值。
使用$LineData作为属性值创建一个新对象,您将获得有意义的输出
function TextToHtml
{
$SourceFile = "C:\sample.txt"
$TargetFile = "C:\TestOutput.htm"
$TextData = Get-Content $SourceFile
Foreach ($Line in $TextData) {
$LineData = $LineData + $Line
}
New-Object psobject -Property @{Text = $LineData} | ConvertTo-HTML -Property Text | Out-File $TargetFile
}
要使您的函数更具可重用性,请将源文件路径和目标文件路径转换为参数。
您也不需要遍历$TextData中的每个字符串以将它们相互追加,只需使用-join运算符:
function TextToHtml
{
param(
[string]$SourceFile = "C:\sample.txt",
[string]$TargetFile = "C:\TestOutput.htm"
)
$TextData = Get-Content $SourceFile
$LineData = $TextData -join ''
New-Object psobject -Property @{Text = $LineData} | ConvertTo-HTML | Out-File $TargetFile
}
如果要避免只有一个属性的对象的*标头,请使用-Property参数和ConvertTo-Html明确选择Text属性:
ConvertTo-Html -Property Text
如果要在其自己的表行中显示每一行,请跳过串联并将字符串直接传送到ConvertTo-Html:
function TextToHtml
{
param(
[string]$SourceFile = "C:\sample.txt",
[string]$TargetFile = "C:\TestOutput.htm"
)
Get-Content $SourceFile | ConvertTo-HTML -Property @{Label='Text';Expression={$_}} | Out-File $TargetFile
}