我正在使用 Powershell 处理我的 Office 365 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
答案1
你漏掉了一个分号":\Calendar"
答案2
$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