2014-01-10 2 views
0

Мне поручено написать короткий сценарий Powershell для работы, где я беру группу почтовых ящиков и модифицирую разрешения для списка пользователей, которые все часть одной группы. Я использую Get-ADGroupMember, чтобы получить список пользователей и сохранить его в массиве, а затем передать этот массив командлету Add-MailboxFolderPermission. Однако после запуска сценария я получаю следующее сообщение об ошибке для каждого пользователя в массиве:Powershell: преобразовать вывод Get-ADGroupMember в правильный тип для параметра Add-MailboxFolderPermission -User

Cannot process argument transformation on paramter 'User'. Cannot convert the "@<Name="somename">" value of type "Deserialized.Selected.Microsoft.ActiveDirectory.Management.ADPrincipal" to type "Microsoft.Exchange.Management.StoreTasks.MailboxFolderUserIDParameter" 

Что я понимаю, означает «Sorry несовместимых типов». Есть ли у кого-нибудь советы о том, как я могу преобразовать объекты, возвращенные из первого командлета, для передачи ко второму командлету? Это первый бит powershell, который я должен был написать ... Я продолжу читать в то же время. Спасибо за любой ответ. Ниже мой код.

#Prepare to connect to exchange server 
. "C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1" 

#Connect to local exchange server 
Connect-ExchangeServer -auto 

$rooms = @("box1", 
"box2", 
"box3", 
"box4", 
"box5") 


$users = @(Get-ADGroupMember somegroup| Select Name) 


foreach ($room in $rooms) { 

    foreach ($user in $users) { 

     Add-MailBoxFolderPermission -Identity $room`:\calendar -User $user -AccessRights Author 

    } 
} 

ответ

0

Проверка помощи на Add-MailboxFolderPermssion дать такое описание для параметра User:

Параметр User указывает, кому предоставлено разрешение на просмотр или изменение содержимого папки пользователя, указанного в параметре Identity. Следующие значения являются приемлемыми:

• Псевдоним
• SMTP-адрес

Если псевдоним электронной почты совпадает с именем пользователя, то вы можете использовать.

$users = @(Get-ADGroupMember somegroup| Select -Expand Name) 

Если это возможно, они могут не совпадать, это безопаснее, чтобы решить ее с помощью DN:

$users = @(Get-ADGroupMember somegroup | 
      Select -ExpandProperty DistinguishedName | 
      Get-Recipient | select -ExpandProperty Alias) 

Или вы можете выбрать PrimarySmtpAddress, если вы хотите использовать.