Database Powershell从每个循环的导入csv输出数据
我在自动电子邮件正文中注销CSV行时遇到一些困难。 我想这样做: 我有导入csv。 其中包含由逗号分隔的几行。每行有10个行值,每个值用逗号分隔。 在for each子句中的每个循环中,我想注销这10个值。然后,它应该转到下一行,再次检查10个值,直到它已注销电子邮件正文中的所有行 正如你在下面看到的,我仍然在想如何做到这一点。shell调试器没有给我任何信息 $lines=导入csv$RESULT ${lines} 如果$lines-ne$null { foreach$行在$行中 { $QUERY=$line.v1 $DB_NAME=$line.v2 $AGENT\u ID=$line.v3 $body= 查询:+$QUERY++`n+ DB_NAME:+$DB_NAME+`n+ AGENT_ID:+$AGENT_ID++`n AUTHID:+$lines[4]+`n+ 已用时间\u MIN:+$行[5]+`n+ 应用程序名称:+$lines[6]+`n+ 应用程序状态:+$lines[7]+`n+ 快照时间戳:+$lines[9]+`n+ 客户端PID:+$lines[10]+`n+ 客户端名称:+$line[11]+`r`n 电子邮件正文集 ${body} } $subject=警告-对数据库的长时间运行查询***** $smtp=新对象Net.Mail.SmtpClient$smtpServer $smtp.Send$emailFrom、$MAILTO、$subject、$body 睡眠10Database Powershell从每个循环的导入csv输出数据,database,powershell,csv,Database,Powershell,Csv,我在自动电子邮件正文中注销CSV行时遇到一些困难。 我想这样做: 我有导入csv。 其中包含由逗号分隔的几行。每行有10个行值,每个值用逗号分隔。 在for each子句中的每个循环中,我想注销这10个值。然后,它应该转到下一行,再次检查10个值,直到它已注销电子邮件正文中的所有行 正如你在下面看到的,我仍然在想如何做到这一点。shell调试器没有给我任何信息 $lines=导入csv$RESULT ${lines} 如果$lines-ne$null { foreach$行在$行中 { $Q
} 要详细说明我的第二条评论,代码可能如下所示:
$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)
我希望这有帮助。因此,tric需要尽可能多地使用PowerShell的功能。我不清楚您的问题到底是什么,但我想有一点是错误的,那就是在$body=语句中使用了$line。您应该在这里使用循环变量$line。我可能更容易使用import csv的-Header参数,并按照以下行操作:$body=$lines | Format Table-AutoSize | Out-String。是的,这是正确的,但这只是一个代码示例。我的问题是如何从数组中获取数据,并以正确的方式在整个CSV中循环。不幸的是,这并没有在我所寻找的电子邮件中提供所需的输出。请参阅电子邮件中的以下输出:我需要在左侧排序的输出,而不是像现在这样的列。这样,我可以存储查询文本的最大值,而不会弄乱其他列的格式。我试着用一个数组来完成这项工作,但不知何故它不起作用。