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
":\Calendar"
の後にセミコロンがありません
$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