从管道中的先前 Cmdlet 获取值
Get value from previous Cmdlet in the pipeline
我得到以下命令:
Get-Mailbox | Get-MailboxPermission | Select-Object Identity,User,AccessRights | Format-Table -AutoSize
。
我希望能够从我获得 Get-Mailbox
结果的前一个管道中获取 PrimarySMTPAddress
值。
在我添加 属性 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
您可以使用 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
为此目的有一个通用参数“pipelinevariable”。
Get-Mailbox -pipelinevariable mail | Get-MailboxPermission |
Select-Object Identity,User,AccessRights,
@{n='PrimarySMTPAddress';e={$mail.PrimarySMTPAddress}} |
Format-Table -AutoSize
我得到以下命令:
Get-Mailbox | Get-MailboxPermission | Select-Object Identity,User,AccessRights | Format-Table -AutoSize
。
我希望能够从我获得 Get-Mailbox
结果的前一个管道中获取 PrimarySMTPAddress
值。
在我添加 属性 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
您可以使用 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
为此目的有一个通用参数“pipelinevariable”。
Get-Mailbox -pipelinevariable mail | Get-MailboxPermission |
Select-Object Identity,User,AccessRights,
@{n='PrimarySMTPAddress';e={$mail.PrimarySMTPAddress}} |
Format-Table -AutoSize