从管道中的上一个 Cmdlet 获取值

Ref*_*Ref 3 powershell pipeline

我得到以下命令: Get-Mailbox | Get-MailboxPermission | Select-Object Identity,User,AccessRights | Format-Table -AutoSize. 我希望能够PrimarySMTPAddress从我获得Get-Mailbox. 在我添加属性的那一刻,我PrimarySMTPAddress在列中什么也没有收到。

最终结果应该是这样的:

Identity                       User     AccessRights     PrimarySMTPAddress
--------                       ------   ------------     ------------------
Domain.local/Users/Mailbox1    User1    {FullAccess}     Mailbox1@Domain.local
Domain.local/Users/Mailbox2    User2    {FullAccess}     Mailbox2@Domain.local
Domain.local/Users/Mailbox3    User3    {FullAccess}     Mailbox3@Domain.local
Run Code Online (Sandbox Code Playgroud)

dug*_*gas 5

您可以使用 ForEach-Object cmdlet,将值分配给变量,然后使用 Write-Output 将管道值发送到下一个 cmdlet。使用 Select-Object 时,您可以使用计算属性访问变量值。

Get-Mailbox | 
ForEach-Object { $primarySmtpAddress = $_.PrimarySMTPAddress; Write-Output $_; } |
Get-MailboxPermission | 
Select-Object Identity,User,AccessRights, @{n='PrimarySMTPAddress';e={$primarySmtpAddress}} | Format-Table -AutoSize
Run Code Online (Sandbox Code Playgroud)