2014-08-31 105 views
0

我正在自动执行Office365邮箱。我在PowerShell中运行以下命令在PowerShell中显示管道命令的输出

Get-Mailbox -Filter {Name -like "T1-*"} | Get-MailboxStatistics | 
select Displayname, LastLogonTime | Export-Csv "lastlogon-all.csv" 

该命令在启动会话后工作。 Get-Mailbox结果也有一个PrimarySmtpAddress字段。我想将它包括在输出中,但是由于管道系统,它会丢失。

如何在输出中获得该字段?

回答

2
Get-Mailbox -Filter {Name -like "T1-*"} | 
    foreach { 
    $address = $_.PrimarySmtpAddress; 
    $_ | Get-MailboxStatistics | 
    select Displayname, LastLogonTime, @{ Name = "PrimarySmtpAddress"; Expression = { $address } } 
    } | 
    Export-Csv "lastlogon-all.csv" 

也有可能通过统计对象访问邮箱对象,但文档没有提到各个命令返回哪些对象。

+0

结果:“管道不能因为管道运行已经在运行,管道不能同时运行。“ 任何想法? – 2014-08-31 17:17:58

+0

好的,我解决了它。获取邮箱结果需要存储在一个变量中。谢谢您的帮助。 – 2014-08-31 17:27:33

1

感谢Markus Jarderot我得到了解决:

$boxes = Get-Mailbox -Filter {Name -like "T1-*"} 
$boxes | foreach { 
    $address = $_.PrimarySmtpAddress; 
    $_ | Get-MailboxStatistics | 
     select Displayname, LastLogonTime, @{ Name = "PrimarySmtpAddress"; Expression = { $address } } 
    } | 
    Export-Csv "lastlogon-all.csv" 

可能的地址没有被格式化,所以你可以用select $地址足够