gpt4 book ai didi

powershell - 如何在Powershell中基于多个匹配字段值创建数据子集?

转载 作者:行者123 更新时间:2023-12-02 23:47:34 24 4
gpt4 key购买 nike

我有一个Powershell脚本,该脚本使用EWS托管API提取电子邮件,从地址到地址以及Internetmessageheader读取其主题。在电子邮件读取循环中,它将所有这些信息加载到数据表中。

我需要获取每条消息的所有上述信息,并根据发件人地址填充一个数组或数据表。然后,我将检查中继信息,并根据从地址到目标地址发送整个列表。

我似乎无法全神贯注于如何构建发件人地址列表。我试过将数据表数据转换为哈希表,然后使用sort|get-unique从地址获取唯一列表,但无法使用此信息正确地构建地址数组。我已经尝试过使用select-string $_ -allmatches循环,但是还没到任何地方。

这是我的代码的一部分,它创建数据表并使用每封电子邮件中的信息填充它。

$msgTable = New-Object system.Data.DataTable “Messages”
$col1 = New-Object system.Data.DataColumn Subject,([string])
$col2 = New-Object system.Data.DataColumn From,([string])
$col3 = New-Object system.Data.DataColumn To,([string])
$col4 = New-Object system.Data.DataColumn Relay,([string])
$msgTable.columns.add($col1)
$msgTable.columns.add($col2)
$msgTable.columns.add($col3)
$msgTable.columns.add($col4)

$frItemResult = $PublicFolder.FindItems($sfCollection,$view)
# Loop through view results and mark read
$frItemResult | ForEach-object{
if($_.HasAttachments ) {
$_.Load()
"Report Subject: $($_.Subject)"
# Loop through attachments, extract info
$_.Attachments | ForEach-object {
if($_.Name -notmatch "ATT00001"){
$_.Load($attPropset)

$row = $msgTable.NewRow();$row.Subject = $($_.item.Subject); $row.From = ($_.item.From.address); $row.To = $($_.item.ToRecipients.address); $row.Relay = "$($_.Item.InternetMessageHeaders | Where-Object {$_.name -like "*received*"})";$msgTable.Rows.Add($row)

这是填充数据后的 $msgTable的样子。
Subject                          From                             To                               Relay                           
------- ---- -- -----
Message1 user1@company.com recipient1@yahoo.com Received-SPF=pass (domain of ...
Message2 user2@company.com recipient2@comcast.net Received=from imta27.mailguys...
Message2 user2@company.com recipient3@yahoo.com Received-SPF=pass (domain of ...
Message3 user3@company.com recipient4@sbcglobal.net Received-SPF=pass (domain of ...

我需要能够将user2@company.com的所有信息grep到另一个变量,并对从地址开始的任意数量的其他重复或不重复做同样的事情。

然后,我将获取每个from地址变量,并将其发送给目标收件人。

任何帮助是极大的赞赏。

最佳答案

尝试使用Group-Object,然后可以针对每个分组运行一个foreach循环:

$Grouping = $msgTable | Group-Object -Property From
foreach ($Group in $Grouping)
{
Write-Host $Group.Name -ForegroundColor "Green"
$Group.Group | ft -Auto
}

关于powershell - 如何在Powershell中基于多个匹配字段值创建数据子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14362365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com