Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
230 views
in Technique[技术] by (71.8m points)

PowerShell: Appending Multiple Property Values to Array

I am trying to append the $date variable which should contain the ticket creation date to an existing array that contains open tickets:

$teamConfig = @(
    [pscustomobject]@{
        TeamName  = 'Team1'
        TeamEmail = '[email protected]'
    }
    [pscustomobject]@{
        TeamName  = 'Team2'
        TeamEmail = '[email protected]'
    }
)

$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
  $date = $results |Where-Object TeamName -eq $team.TeamName |Select -ExpandProperty createdDate

    # Create an empty array
    $ticketIdArray = @()

    foreach ($id in $ticketIds) {
        $thisId = "
            <tr>
            <td>$($id)</td>
            <td>$($date)</td>
            </tr>
        "
        $ticketIdArray += $thisId
    }


  $team |Select TeamName,TeamEmail,@{Name='HTML';Expression={$ticketIdArray}}
}

$teamTickets.HTML

However this is the output I get (example):

<tr>
<td>INC0001</td>
<td>10/12/20 10/12/20 10/12/20 10/12/20</td>
</tr>
        

<tr>
<td>INC0002</td>
<td>10/12/20 10/12/20 10/12/20 10/12/20</td>
</tr>
        
<tr>
<td>INC0003</td>
<td>10/12/20 10/12/20 10/12/20 10/12/20</td>
</tr>

This is my desired output:

<tr>
<td>INC0001</td>
<td>10/12/20</td>
</tr>
        

<tr>
<td>INC0002</td>
<td>10/12/20</td>
</tr>
        
<tr>
<td>INC0003</td>
<td>10/12/20</td>
</tr>

It seems like for whatever reason the date is being appended based on the total number of teams.

Any ideas? Thanks in advance


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

i can not see the result can you try this

$ticketIds = $results |Where-Object TeamName -eq $team.TeamName |Select TicketID,createdDate


# Create an empty array
$ticketIdArray = @()

foreach ($id in $ticketIds) {
    $thisId = "
        <tr>
        <td>$($id.TicketID)</td>
        <td>$($id.createdDate)</td>
        </tr>
    "
    $ticketIdArray += $thisId
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...