Я хочу вывести результаты
Get-Mailbox –Server MYserverName | Get-MailboxPermission | FL
, переданные по конвейеру в отдельные текстовые файлы для каждого отдельного почтового ящика, с текстовым файлом, названным для почтового ящика - например, я хочу есть папка с содержимым:
, каждый из которых содержит результаты разрешений почтового ящика.
Я знаю, что могу выполнить цикл foreach по строкам:
ForEach-Object {Out-file $_.name}
для создания выходных файлов, но я не совсем уверен, как бы я сделал это за один шаг, чтобы получить разрешения для всех моих почтовых ящиков в отдельные файлы (я знаю, что это даст мне много текстовых файлов!)?
Вы почти на месте. Комбинируйте их так:
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" }
Спасибо всем - это было довольно близко - но когда я запустил его на нескольких разных серверах 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" }
, который работал отлично! Еще раз спасибо!