Вывод Powershell в Exchange 2010 Разрешение каждого почтового ящика для разделения текстовых файлов

Я хочу вывести результаты

Get-Mailbox –Server MYserverName | Get-MailboxPermission | FL

, переданные по конвейеру в отдельные текстовые файлы для каждого отдельного почтового ящика, с текстовым файлом, названным для почтового ящика - например, я хочу есть папка с содержимым:

  • C: \ Example \ MailboxUser1.txt
  • C: \ Example \ MailboxUser2.txt
  • C: \ Example \ MailboxUser3.txt

, каждый из которых содержит результаты разрешений почтового ящика.

Я знаю, что могу выполнить цикл foreach по строкам:

ForEach-Object {Out-file $_.name}

для создания выходных файлов, но я не совсем уверен, как бы я сделал это за один шаг, чтобы получить разрешения для всех моих почтовых ящиков в отдельные файлы (я знаю, что это даст мне много текстовых файлов!)?

2
задан 6 December 2015 в 12:08
2 ответа

Вы почти на месте. Комбинируйте их так:

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
ответ дан 3 December 2019 в 11:34

Спасибо всем - это было довольно близко - но когда я запустил его на нескольких разных серверах 2010 года, я получил ошибку:

Pipeline не выполняется, потому что трубопровод уже выполняется. Конвейеры не могут быть запущены одновременно. + CategoryInfo : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) [], PSInvalidOperationException . + FullyQualifiedErrorId : RemotePipelineExecutionFailed

Pipeline не выполняется, так как трубопровод уже выполняется. Трубопроводы не могут быть выполнены одновременно. + 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" }

, который работал отлично! Еще раз спасибо!

0
ответ дан 3 December 2019 в 11:34

Теги

Похожие вопросы