在PowerShell中显示管道命令的输出

时间:2014-08-31 15:23:00

标签: powershell office365 piping

我正在自动化Office365邮箱。我在PowerShell中运行以下命令

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

启动会话后,该命令有效。 Get-Mailbox结果还具有PrimarySmtpAddress字段。我想把它包括在输出中,但由于管道,它会丢失。

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

2 个答案:

答案 0 :(得分:2)

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

也可以通过statistics-object访问mailbox-object,但文档中没有提到相应命令返回的对象。

答案 1 :(得分: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"

地址可能不需要格式化,所以你可以选择$ address