powershell - 将 CSV 的内容通过电子邮件发送到表格
问题描述
我正在开发一个 powershell 脚本,该脚本从五列逗号分隔符 CSV 中获取数据,并将其加载到五列 HTML 表中以发送电子邮件。目前,该代码仅输出 1 行,而不是 CSV 文件中的 15 行。您能帮我将 CSV 中的 15 行打印到表格中吗?
$current_date = Get-Date
$current_date.ToUniversalTime()
$server_name = $env:COMPUTERNAME
$file = Get-Content .\data_file.csv
Write-Output "file length: " $file.Length
for ($i = 1; $i -lt $file.Length; $i++) {
$firstname = ([string]$file[$i]).Split(',')[0];
$lastname = ([string]$file[$i]).Split(',')[1];
$gender = ([string]$file[$i]).Split(',')[2];
$age = ([string]$file[$i]).Split(',')[3];
$dob = ([string]$file[$i]).Split(',')[4];
}
$mailsender = @{
Body = "<p style='font-family: Calibri;'>Audit Report as of: $current_date</p>
<table style='border-collapse: collapse; font-family: Calibri;'>
<tr style='border: 1px solid #dddddd;text-align: left;padding: 8px;background-color:#f7f7f7;'>
<th style='border: 1px solid #dddddd;text-align: left;padding: 8px;'>First Name</th>
<th style='border: 1px solid #dddddd;text-align: left;padding: 8px;'>Last Name</th>
<th style='border: 1px solid #dddddd;text-align: left;padding: 8px;'>Gender</th>
<th style='border: 1px solid #dddddd;text-align: left;padding: 8px;'>Age</th>
<th style='border: 1px solid #dddddd;text-align: left;padding: 8px;'>DoB</th>
</tr>
<tr style='border: 1px solid #dddddd;text-align: left;padding: 8px;'>
<th style='border: 1px solid #dddddd;text-align: left;padding: 8px;'>$firstname</td>
<th style='border: 1px solid #dddddd;text-align: left;padding: 8px;'>$lastname</td>
<th style='border: 1px solid #dddddd;text-align: left;padding: 8px;'>$gender</td>
<th style='border: 1px solid #dddddd;text-align: left;padding: 8px;'>$age</td>
<th style='border: 1px solid #dddddd;text-align: left;padding: 8px;'>$dob</td>
</tr>
</table>"
From = 'john.doe@email.com'
To = 'john.doe@email.com'
SmtpServer = 'mailhost.net'
BodyAsHtml = $true
Subject = "[$env:COMPUTERNAME] Audit Report"
}
Send-MailMessage @mailsender
解决方案
您必须在 for 循环中定义一个变量并将每组表行添加到其中,然后在 Body 声明中调用该变量:
$current_date = Get-Date
$current_date.ToUniversalTime()
$server_name = $env:COMPUTERNAME
$file = Get-Content .\data_file.csv
Write-Output "file length: " $file.Length
for ($i = 1; $i -lt $file.Length; $i++)
{
$firstname = ([string]$file[$i]).Split(',')[0] ;
$lastname = ([string]$file[$i]).Split(',')[1] ;
$gender = ([string]$file[$i]).Split(',')[2] ;
$age = ([string]$file[$i]).Split(',')[3] ;
$dob = ([string]$file[$i]).Split(',')[4] ;
$data += "<tr style='border: 1px solid #dddddd;text-align: left;padding: 8px;'>
<th style='border: 1px solid #dddddd;text-align: left;padding: 8px;'>$firstname</td>
<th style='border: 1px solid #dddddd;text-align: left;padding: 8px;'>$lastname</td>
<th style='border: 1px solid #dddddd;text-align: left;padding: 8px;'>$gender</td>
<th style='border: 1px solid #dddddd;text-align: left;padding: 8px;'>$age</td>
<th style='border: 1px solid #dddddd;text-align: left;padding: 8px;'>$dob</td>
</tr>"
}
$mailsender=@{
Body="<p style='font-family: Calibri;'>Audit Report as of: $current_date</p>
<table style='border-collapse: collapse; font-family: Calibri;'>
<tr style='border: 1px solid #dddddd;text-align: left;padding: 8px;background-color:#f7f7f7;'>
<th style='border: 1px solid #dddddd;text-align: left;padding: 8px;'>First Name</th>
<th style='border: 1px solid #dddddd;text-align: left;padding: 8px;'>Last Name</th>
<th style='border: 1px solid #dddddd;text-align: left;padding: 8px;'>Gender</th>
<th style='border: 1px solid #dddddd;text-align: left;padding: 8px;'>Age</th>
<th style='border: 1px solid #dddddd;text-align: left;padding: 8px;'>DoB</th>
</tr>
$data
</table>"
From='john.doe@email.com'
To='john.doe@email.com'
SmtpServer='mailhost.net'
BodyAsHtml=$true
Subject="[$env:COMPUTERNAME] Audit Report"
}
Send-MailMessage @mailsender
推荐阅读
- android - 如何获取或缓存主颤振引擎?
- xml - 基于“名称”属性使用 XSLT 重命名 XML 节点
- tensorflow - TensorsFlow/Keras 如何为 seq2seq 问题找到不可预测的训练示例?
- javascript - Javascript - 循环嵌套对象
- java - 预期的意外异常
但是是 - swift - iOS Metal Unknown 类型名称 'simd_half3'; 你的意思是“simd_char3”吗?
- python-3.x - 访问 netcdf 文件中嵌套组中的变量(文件格式 HDF5)
- spring-kafka - 如何在不从 kafka 生产者配置 bean 设置的情况下将应用程序属性设置为默认的 kafka 生产者模板
- javascript - 无法使用 Angular 和 peer js 安装 ng-boostrap
- html - 我的文档的位置是我的边距的负数(边距 100,位置 -100)