Powershell为每个循环输出来自import-csv的数据

时间:2014-12-04 10:04:44

标签: database powershell csv

我在自动电子邮件正文中注销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
}




1 个答案:

答案 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的强大功能。