Назад | Перейти на главную страницу

Команда Powershell Exchange Цикл не работает

Я работаю над своим экземпляром Office 365 Exchange с Powershell, и у меня возникли проблемы с командой, которую, как я знаю, я успешно выполнял в прошлом. Я разбил эту команду на части и запускал их все самостоятельно, но просто не могу заставить этот цикл ForEach работать. Что я могу здесь упустить?

PS C:\Users\bsigrist> ForEach ($Mailbox in (Get-Mailbox -RecipientTypeDetails UserMailbox)) 
{ $cal = $Mailbox.alias+":\Calendar" Set-MailboxFolderPermission -Identity $cal 
  -User Default -AccessRights LimitedDetails }

        At line:1 char:108
        + ... cal = $Mailbox.alias+":\Calendar" Set-MailboxFolderPermission -Identi ...
        +                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~
        Unexpected token 'Set-MailboxFolderPermission' in expression or statement.
            + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordExcep
           tion
            + FullyQualifiedErrorId : UnexpectedToken

$cal = $Mailbox.alias+":\Calendar" Set-MailboxFolderPermission -Identity $cal -User Default -AccessRights LimitedDetails

Это отправляется как одна команда Powershell, но я думаю, вы действительно хотите, чтобы это были две команды. Первая команда присваивает значение $cal а вторая команда запускается Set-MailboxFolderPermission.

Как указывает longneck, вы можете поставить точку с запятой для разделения этих команд. Также обсуждается в следующих местах:

https://blogs.msdn.microsoft.com/mattn/2012/04/28/powershell-command-separator-is-and-not/

https://superuser.com/questions/612409/how-do-i-run-multiple-commands-on-one-line-in-powershell

Вам не хватает точки с запятой после ":\Calendar"