我希望输出结果
Get-Mailbox –Server MYserverName | Get-MailboxPermission | FL
输送到个人每个单独的邮箱的文本文件,并以邮箱命名的文本文件-例如,我想要一个包含以下内容的文件夹:
- C:\示例\MailboxUser1.txt
- C:\示例\MailboxUser2.txt
- C:\示例\MailboxUser3.txt
每个都包含邮箱权限结果。
我知道我可以按照如下方式执行 foreach 循环:
ForEach-Object {Out-file $_.name}
生成输出文件,但我不太确定如何一步完成此操作以将所有邮箱的权限放入单独的文件中(我知道这会给我很多文本文件!)?
答案1
您快完成了。像这样组合它们:
Get-Mailbox –Server MYserverName | % { Get-MailboxPermission $_ | FL | Out-file $_.name }
我在我的 Exchange 2013 实验室服务器上尝试了此操作,它似乎可以满足您的需求。对于此功能,2010 和 2013 之间几乎没有区别。
如果您希望输出文件带有“.txt”扩展名,请执行以下操作:
Get-Mailbox –Server MYserverName | % { Get-MailboxPermission $_ | FL | Out-file "$_.txt" }
答案2
谢谢大家 - 这非常接近 - 但是当我在几个不同的 2010 服务器上运行它时,我收到一个错误:
管道未执行,因为管道已在执行。管道无法同时执行。+ CategoryInfo : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) [],PSInvalidOperationException + FullyQualifiedErrorId : RemotePipelineExecutionFailed
管道未执行,因为管道已在执行。管道无法同时执行。+ CategoryInfo : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) [],PSInvalidOperationException + FullyQualifiedErrorId : RemotePipelineExecutionFailed
这让我http://mikepfeiffer.net/2010/02/exchange-management-shell-error-pipelines-cannot-be-executed-concurrently/这建议我使用一个变量-所以我的最终结果是:
$mailbox = Get-Mailbox
$mailbox | % { Get-MailboxPermission $_ | FL | Out-file "$_.txt" }
效果非常好!再次感谢!