PowerShell:为多值属性追加HTML标签的实现方法
解决PowerShell中为TicketID追加HTML
<td>标签的问题 很简单,你只需要在生成TicketID这个计算属性的时候,对每个TicketID值单独进行HTML标签包裹处理就可以了。原来的代码只是直接返回了原始的TicketID数组,我们只需要在Expression里加上一个ForEach-Object循环,给每个ID套上<td>和</td>。
修改后的完整代码
$teamConfig = @( [pscustomobject]@{ TeamName = 'Team1' TeamEmail = 'team1@domain.tld' } [pscustomobject]@{ TeamName = 'Team2' TeamEmail = 'team2@domain.tld' } ) $query = "select * from INCAutomation" $results = Invoke-Sqlcmd -query $query -ServerInstance 'localhost' -Database 'AyushTest' $teamTickets = foreach($team in $teamConfig){ # Filter tickets based on team name $ticketIds = $results | Where-Object TeamName -eq $team.TeamName | Select -ExpandProperty TicketID # Output a single object per team, with all ticket IDs wrapped in <td> tags $team | Select TeamName,TeamEmail,@{ Name='TicketID'; Expression={ $ticketIds | ForEach-Object { "<td>$_</td>" } } } } $teamTickets
关键修改点
在计算属性的Expression中,我们把原来的直接返回$ticketIds改成了:
$ticketIds | ForEach-Object { "<td>$_</td>" }
这会遍历每个TicketID值,将其拼接成<td>INCXXXX</td>的格式,最终返回一个包含所有处理后字符串的数组。
运行后的输出
TeamName TeamEmail TicketID -------- --------- -------- Team1 team1@domain.tld {<td>INC0001</td>, <td>INC0002</td>, <td>INC0003</td>, <td>INC0004</td>} Team2 team2@domain.tld {<td>INC0005</td>, <td>INC0006</td>, <td>INC0007</td>}
完全符合你期望的结果。
内容的提问来源于stack exchange,提问作者yush
相关产品推荐
相关产品推荐

