web-dev-qa-db-ja.com

PowershellExchangeコマンドのループが機能しない

Powershellを使用してOffice365 Exchangeインスタンスで作業していますが、過去に正常に実行したことがわかっているコマンドで問題が発生しています。私はこのコマンドをサブピースに分割し、それらをすべて単独で正常に実行しましたが、この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
2
bsigrist

":\Calendar"の後にセミコロンがありません

3
longneck

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

これは1つのPowershellコマンドとして送信されていますが、実際には2つのコマンドにする必要があると思います。最初のコマンドは$calに値を割り当て、2番目のコマンドは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

3
Todd Wilcox