2
정렬되지 않은 HTML 목록을 생성하는 함수를 만들려고합니다. 이것은 ConvertTo-HTMLlist $MyArray
처럼 사용할 때 잘 작동하지만, 정보를 파이프에 넣으면 $MyArray | ConvertTo-HTMLlist
을 좋아하지 않습니다.PowerShell 정렬되지 않은 HTML 목록
내 기능 :
Function ConvertTo-HTMLlist {
[CmdletBinding(SupportsShouldProcess=$True)]
Param (
[parameter(Mandatory=$true,Position=0,ValueFromPipeline=$true)]
[ValidateNotNullOrEmpty()]
$Array
)
Process {
$Array = @(foreach ($_ in $Array) {"<li>" + $_ + "<br><br></li>"}) # Add extra space
$Array = ,"<ul>$($Array | Sort-Object)</ul>"
$Array = $Array.Replace("<br><br></li></ul>", "</li></ul>") # Remove last double breaks
$Array += "<p><i><font size=`"2`">* Native PowerShell errors are displayed in <font color=`"red`">red</font>.</font></i></p>"
Write-Output $Array
}
}
결과 :
$MyArray = 'Apples', 'Peers', 'Bananas'
ConvertTo-HTMLlist $MyArray
# Correct result:
<ul><li>Apples<br><br></li> <li>Bananas<br><br></li> <li>Peers</li></ul><p><i><font size="2">* Native PowerShell errors are displayed in <font color="red">red</font>.</f
ont></i></p>
$MyArray | ConvertTo-HTMLlist
# Incorrect result:
<ul><li>Apples</li></ul><p><i><font size="2">* Native PowerShell errors are displayed in <font color="red">red</font>.</font></i></p>
<ul><li>Peers</li></ul><p><i><font size="2">* Native PowerShell errors are displayed in <font color="red">red</font>.</font></i></p>
<ul><li>Bananas</li></ul><p><i><font size="2">* Native PowerShell errors are displayed in <font color="red">red</font>.</font></i></p>
이 먼저 파이프 라인에 이르기까지 모든 것을 수집하는 방법, 그리고 후 처리를 시작해야합니다.
IMHO 파이프 라인은 한 번에 하나의 요소 만 처리하기 때문에이 방법은 없습니다. 여기서 모든 요소 (전체 배열)를 한 번에 처리합니다. @mjolinor가 말한 것과 같은 방식으로 다음을 사용할 수 있습니다 :', $ myarray | ConvertTo-HTMLlist'를 사용하십시오. –
피드백에 대해 CB에 감사드립니다. 그동안 해결책을 찾았으니 아래에서 내 대답을 확인하십시오. – DarkLite1