我在自动电子邮件正文中注销CSV行时遇到了一些困难。 我想这样做:
我有import-csv。 其中包含以逗号分隔的多行。每行有10个行值(每个值用逗号分隔)。 在for each子句的每个循环中,我想要注销这10个值。然后它应该转到下一行并再次检查10个值,直到它注销了电子邮件正文中的所有行。
正如您在下面所见,我仍然在想办法如何做到这一点。 shell调试器没有给我任何信息。
$lines = import-csv $RESULT
#${lines}
If ($lines -ne $null )
{
foreach ($line in $lines)
{
$QUERY = $line.v1
$DB_NAME = $line.v2
$AGENT_ID = $line.v3
$body =
"QUERY :" + $QUERY + "`n" +
"DB_NAME :" + $DB_NAME + "`n" +
"AGENT_ID :" + $AGENT_ID + "`n"
# "AUTHID :" + $lines[4] + "`n" +
# "ELAPSED_TIME_MIN :" + $lines[5] + "`n" +
# "APPL_NAME :" + $lines[6] + "`n" +
# "APPL_STATUS :" + $lines[7] + "`n" +
# "SNAPSHOT_TIMESTAMP :" + $lines[9] + "`n" +
# "CLIENT_PID :" + $lines[10] + "`n" +
# "CLIENT_NNAME :" + $lines[11] + "`r`n"
#"Email Body set"
#"${body}"
}
$subject = "WARNING - LONG RUNNING QUERIES on Database *****"
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($emailFrom, $MAILTO, $subject, $body)
sleep 10
}

答案 0 :(得分:0)
详细说明我的第二条评论,代码可能类似于:
$header = @("Query","Database","Agent ID","Authentication ID",
"Elapsed time (min)","Application Name","Snapshot Timestamp",
"Client PID", "Client Name")
$lines = import-csv $RESULT -Header $header
$body = $lines | Format-Table -AutoSize | Out-String -Width ([Int32]::MaxValue)
$subject = "WARNING - LONG RUNNING QUERIES on Database *****"
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($emailFrom, $MAILTO, $subject, $body)
我希望这会有所帮助。所以诀窍就是尽可能多地使用PowerShell的强大功能。