2017-09-10 36 views
-1

我有三个数组,如发件人,收件人和主题;我需要以表格形式安排他们,如下所示。如何以表格形式排列不同数组的值?

Sender    Recipient    Subject 
[email protected]  [email protected]   xxx 

这里是我的代码

dir|ForEach-Object { 
    $Name=$_.Name 
    foreach ($N in $Name) { Import-Csv $N|` 
    Foreach { 
     $Sender+=$_.SenderAddress 
     $Recipient+=$_.RecipientAddress 
     $Subject+=$_.Subject 
    } 
    } 
} 

任何人都可以看这个?

问候, 基兰

+0

请加编程语言的标签,而你已经尝试 –

+0

样品,你能不能给我们这些阵列的代码示例? 我们如何匹配这3个数组,或者它们的顺序是否正确:$ Sender [0],$ Recipient [0],$ Subject [0]? – SteloNLD

+0

PS C:\用户\公共\文件\网络钓鱼> DIR |的ForEach-对象{ $名称= $ _(在$名称$ N)命名 的foreach { 导入-CSV $ N |' FOREACH { $发件人+ = $ _。SenderAddress $收件人+ = $ _。RecipientAddress $主题+ = $ _。主题 } } } – LittleBuddha

回答

2

如果您有多个完全对齐阵列,您可以轻松地连同for循环压缩他们:

$Sender = @('[email protected]','[email protected]') 
$Recipient = @('[email protected]','[email protected]') 
$Subject = @('Overdue invoices','Receipts') 

$mailObjects = for($i = 0; $i -lt $Sender.Count; $i++){ 
    New-Object psobject -Property @{ 
     Sender = $Sender[$i] 
     Recipient = $Recipient[$i] 
     Subject = $Subject[$i] 
    } 
} 

现在你可以使用Format-Table

PS C:\> $mailObjects |Format-Table 
Sender    Recipient    Subject 
------    ---------    ------- 
[email protected] [email protected] Overdue invoices 
[email protected] [email protected] Receipts 
+0

导入| ForEach-Object {0}搜索邮箱身份“$ _。RecipientAddress”-SearchQuery“From:$ _。SenderAddress”,“Subject: $ _。Subject“-targetmailbox”XXXXX“-targetfolder”Test“-deletecontent -Force -loglevel full -WhatIf } – LittleBuddha

+0

现在,我有另一个问题;上面的脚本不起作用;导入是我为导入CSV文件而创建的功能。它运行,但给我下面的错误。 – LittleBuddha

+0

@LittleBuddha请描述您尝试解决的实际问题。听起来不像输出格式是你的实际问题 –

0

如果我正确地解释你的代码,你指的是csv文件列而不是数组。导入后,希望选择的属性应该足够了,新的较短的属性名称可以通过[pscustomobject]来实现。

假设有:

> Get-Content first.csv 
"othercol","SenderAddress","RecipientAddress","Subject" 
"","[email protected]","[email protected]","Overdue invoices" 
"","[email protected]","[email protected]","Receipts" 

和:

>Get-Content second.csv: 
"SenderAddress","RecipientAddress","Subject","othercol" 
"[email protected]","[email protected]","Overdue deliveries","xyz" 
"[email protected]","[email protected]","Orders","abc" 

这一个班轮:

foreach ($File in (gci *.csv)){Import-Csv $File|Select SenderAddress,Recipientaddress,Subject} 

将输出:

SenderAddress  RecipientAddress  Subject 
-------------  ----------------  ------- 
[email protected] [email protected] Overdue invoices 
[email protected] [email protected] Receipts 
[email protected] [email protected] Overdue deliveries 
[email protected] [email protected] Orders 

这个更详细的版本:

ForEach ($File in (Get-ChildItem *.csv)){ 
    Import-Csv $File | Select-Object SenderAddress,Recipientaddress,Subject | 
     ForEach-Object{[pscustomobject] @{Sender = $_.SenderAddress 
              Recipient = $_.Recipientaddress 
              Subject = $_.Subject} 
     } 
} 

产生这样的输出:

Sender    Recipient    Subject 
------    ---------    ------- 
[email protected] [email protected] Overdue invoices 
[email protected] [email protected] Receipts 
[email protected] [email protected] Overdue deliveries 
[email protected] [email protected] Orders