2015-12-06 5 views
1

Я понял, что это может быть легким ответом, но для жизни я не могу понять, почему эта простая вещь, кажется, избивает меня. Ищу для вывода результатовРезультаты вывода Powershell в отдельные текстовые документы

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

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

  • C: \ Пример \ MailboxUser1.txt
  • C: \ Пример \ MailboxUser2.txt
  • C: \ Пример \ MailboxUser3.txt

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

Я знаю, что я могу сделать петлю Еогеасп вдоль линий:

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

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

ответ

1

Что-то вдоль линий:

$directory = "C:\example\" 
$count = 0 

Get-Mailbox –Server "MYserverName" | Foreach-Object { 
    Get-MailboxPermission | Format-List | 
     Out-File (Join-Path $directory "MailboxUser-$(++$count).txt") 
} 

На каждом проходе ForEach-Object контура (почтовый ящик), файл будет генерироваться с выходом команды Get-MailboxPermission.

++$count увеличивает значение непосредственно перед использованием (в отличие от $count++)

Если вы предпочитаете пользователя Name свойство объекта почтового ящика назвать файлы:

$directory = "C:\example\" 

Get-Mailbox –Server "MYserverName" | Foreach-Object { 
    $mailboxName = $_.Name 
    Get-MailboxPermission | Format-List | 
     Out-File (Join-Path $directory "MailboxUser-$mailboxName.txt") 
} 
+0

При выводе в файл рекомендуется использовать 'select-object' или ничего вообще вместо команд' format' ... это из-за типа объектов, созданных командами 'format'. – Kiran

+0

Спасибо всем - это сделал трюк для меня красиво - в итоге я немного упростился: $ mailbox = Get-Mailbox $ почтовый ящик | % {Get-MailboxPermission $ _ | FL | Out-file "$ _. Txt"} – AskJarv

-1
Get-Mailbox –Server MYserverName | Get-MailboxPermission | foreach {out-file "$($_.name).txt"} 

Это сможет получить вам все необходимые разрешения. «Имя» - это свойство, на которое вы смотрели. Я не работаю с командлетами Exchange, поэтому не знаю, будет ли это учитывать.

+0

Разве это не создало бы файл для каждого ** разрешения **? – sodawillow

+0

зависит от того, что пересекает трубопровод. Опять же, я не знаком с тем, как работают обменные командлеты, поскольку я сам парень AD. Я предполагаю, что Get-MailboxPermissions возвращает объект с информацией об пользователях и ACL, а не только информацию ACL (моя интерпретация OP, указывающая имя $ _. Для outfile). Это может быть полностью отключено, а просто мое предположение о том, как POSH работы и то, что я могу заключить с тем, что ОП положил в начальный пост. –

Смежные вопросы