2015-12-08 2 views
1

Что нужно сделать, так это следующее. У меня есть эти две строки кода:Записать содержимое массива в foreach

$array = Get-Content C:\Management\Users.txt 
foreach ($arr in $array) { 
    Get-MailboxFolderPermission -Identity $_":\Agenda" 
} 

Это дает мне длинный список разрешений папки для всех пользователей в Users.txt. Но проблема в том, что он не отображает, для какого пользователя он извлекает информацию. Поэтому я хочу, чтобы $arr был написан на экране незадолго до того, как будет выполнен Get-MailboxFolderPermission. Я сделал много попыток, и один из них должен дать понять, что я хочу

АРХИВ
foreach ($arr in $array) { 
    Write-Host $arr , Get-MailboxFolderPermission -Identity $_":\Agenda" 
} 

Но это не работает. Как я могу просто добавить содержимое из $arr в вывод на экране?

ответ

3

Две вещи неправильно с вашей текущей петли:

Write-Host и Get-MailboxFolderPermission должны быть два отдельных заявления, так что вам нужно, чтобы отделить их точкой с запятой ; или разрыв строки, а не запятой , после Write-Host.

Во-вторых, при использовании foreach($arr in $array){ }, вам необходимо обратиться к $arr внутри тела цикла, а не $_:

foreach ($arr in $array) { 
    Write-Host $arr 
    Get-MailboxFolderPermission -Identity $arr":\Agenda" 
} 

или

foreach ($arr in $array) { write-host $arr; Get-MailboxFolderPermission -Identity $arr":\Agenda"} 

В качестве альтернативы можно добавить значение $arr для каждого объекта разрешения на доступ к папке почтового ящика с Select-Object:

foreach ($arr in $array) { 
    Get-MailboxFolderPermission -Identity $arr":\Agenda" | 
     Select-Object *,{ Name="Mailbox"; Expression={$arr} } 
} 
Смежные вопросы