我有一个脚本,它创建两个数组(每个数组都有1列,行数可变)。 我想格式化这两个数组并将其通过电子邮件发送到Outlook帐户。 下面的代码和示例数据。

$Values2 = @(Get-Content *\IdealOutput.csv) 

$OutputLookUp2 = @()
foreach ($Value in $Values2) {
    $OutputLookUp2 += $Excel.WorksheetFunction.VLookup($Value,$range4,3,$false)
}

$Excel.Workbooks.Close()
$Excel.Quit()

$EmailFrom = "sample@sample.com"  
$EmailTo = "sample@sample.com"
$EmailBody = "$Values2 $OutputLookup2" 
$EmailSubject = "Test"
$Username = "sample"
$Password = "sample"

$Message = New-Object Net.Mail.MailMessage `
    ($EmailFrom, $EmailTo, $EmailSubject, $EmailBody)
$SMTPClient = New-Object Net.Mail.SmtpClient `
    ("smtp.outlook.com", portnumber) #Port can be changed
$SMTPClient.EnableSsl = $true 
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential `
    ($Username, $Password);
$SMTPClient.Send($Message)

$OutputLookUp2$Values2都是一列,行数可变。

例:

$Outputlookup2 = 
X1 
X2

$Values2 = 
Y1 
Y2

我希望电子邮件正文的输出为:

X1 Y1
X2 Y2

而且我想避免HTML,因为HTML也将通过文本发送。

===============>>#1 票数:2 已采纳

假设我的解释是正确的,这似乎很简单。 对于每个$Values2 (仅是文本文件中的一行),在打开的电子表格中找到其相似的值。 您将拥有所需的循环。 问题是您要构建彼此独立的项目列表。

$Values2 = @(Get-Content *\IdealOutput.csv) 

$OutputLookUp2 = @()
foreach ($Value in $Values2){
    $OutputLookUp2 += "$Value $($Excel.WorksheetFunction.VLookup($Value,$range4,3,$false))"
}

现在$OutputLookUp2应该包含数组形式的预期输出。

如果数组不起作用,您也可以将其声明为字符串,并在构建它时添加换行符。 您会在字符串末尾看到"`r`n"

$Values2 = @(Get-Content *\IdealOutput.csv) 

$OutputLookUp2 = ""
foreach ($Value in $Values2){
    $OutputLookUp2 += "$Value $($Excel.WorksheetFunction.VLookup($Value,$range4,3,$false))`r`n"
}

在这两个示例中,您只需翻转$value的顺序和查找即可。 如果需要标题,则可以在声明$OutputLookUp2时添加。

总有改进的余地

如果您想按Ansgar Wiechers所不愿提及的方向做进一步的介绍...

$OutputLookUp2 = Get-Content *\IdealOutput.csv | ForEach-Object{
    "$_ $($Excel.WorksheetFunction.VLookup($_,$range4,3,$false))"
} | Out-String

  ask by Casousadc translate from so

未解决问题?本站智能推荐:

2回复

使用powershell格式化数组并包含在电子邮件中

我正在尝试构建一个Powershell脚本,该脚本从多个系统收集系统正常运行时间信息,然后通过电子邮件将其发送出去。 我想格式化电子邮件,以便我可以以一种明智的方式来构造它,并在以后添加有关系统的更多信息。 今天,我在下面有了此脚本,该脚本收集有关系统列表的正常运行时间信息,然后将这些信
1回复

PowerShell通过电子邮件发送数组

在Outlook 2013中通过电子邮件发送和查看时,我遇到了阵列丢失格式的问题 格式化的数组在PowerShell中看起来像这样 这就是我格式化数组的方式(我试图通过电子邮件发送未格式化的数组,但它仍然是错误的) 但是,通过电子邮件发送时(不完全像这样,但其格式不正确)。
1回复

PowerShell从ForEach创建数组并将其传递到电子邮件正文中

我正在遍历计算机列表并检查光盘空间。 我想将此信息格式化为可以添加为电子邮件正文的数组。 我希望将整个输出合并为一封电子邮件,我知道如何发送每封电子邮件的单独电子邮件。 这是代码:
2回复

使用Send-MailMessage时,我不断收到错误消息“指定的字符串不是电子邮件地址所需的格式”

前几行运行正常,但是,当foreach启动时,它会出错并说 指定的字符串不是电子邮件地址所需的格式。 我不确定为什么会收到此错误,因为我已经使用Out-String将$element转换为Out-String 。
1回复

Powershell 2.0 Ping计算机列表并在发生故障时发送电子邮件

我是PowerShell的新手,我一直在研究此问题,但仍无法找到所需的内容。 该站点仍在使用PowerShell 2,并且无法升级。 我有一个服务器列表,我想对其进行ping操作以验证它们是否已启动,并且正在使用文本文件填充名称。 我的脚本的ping部分工作正常,而电子邮件的一部分工作
1回复

电子邮件正文格式和修改

我在Powershell中使用以下代码从纯文本文件output.txt中获取正确的表格格式的电子邮件: code.ps1 我想在接收电子邮件结构时进行以下更改: CHANGE1: 电子邮件在表格中以下列格式出现: 但是,我如何才能将第2列和第3列的值仅在下方对齐
1回复

从Powershell脚本向发送的电子邮件添加格式

我正在寻找使用Powershell发送电子邮件,如下所示 数据审核至少有一个问题。 以下是审核 15行太大 37行太小 没有空的asOfDates 有55行的asofDates过期 此审核将在15分钟后再次运行
2回复

Powershell电子邮件输出未正确格式化

我花了最后几个小时尝试各种方法来解决我的问题,从我在其他工作脚本中添加部分并在这里进行研究,但是我已经达到了需要一双新鲜眼睛向我指出明显问题的地步。 。 这是我的脚本,它执行以下操作: 列出特定位置的所有文件夹,将文件夹路径放在文本文件中 在循环中,使用文本文件检查每个文
1回复

Shell脚本:在数组内时发送html格式的电子邮件

我正在尝试通过shell脚本发送html格式的电子邮件,同时读取数组中的制表符分隔的文本文件,并且需要一些帮助。 我可以在论坛上看到多个类似的问题,并且我还有多个可以发送html电子邮件的工作脚本,但是当我位于数组中时,我无法容纳该代码。 除此以外,我还需要使用一个变量,然后再使用它,但
2回复

Powershell:如何为电子邮件格式化Get-Childitem?

简而言之,我正在尝试从Powershell脚本发送一封电子邮件,其中列出了目录的内容。 为此,我将文本存储在变量中,然后将此变量插入Send-MailMessage 。 我的问题是这个。 当我按如下方式将对象传递给Out-String ,它不会插入换行符: 显然,当在提示符