【发布时间】:2015-10-12 00:34:15
【问题描述】:
我想要一个 PowerShell 脚本来自动连接到 office 365 并作为计划任务每天运行两次,然后将 Reviewer 权限分配给新用户(如果不可能),然后为所有用户分配 Reviewer 权限。原因是当在 Outlook 365 中创建新用户时,他们的日历权限设置为忙/闲。
【问题讨论】:
标签: powershell calendar automation scheduled-tasks office365
我想要一个 PowerShell 脚本来自动连接到 office 365 并作为计划任务每天运行两次,然后将 Reviewer 权限分配给新用户(如果不可能),然后为所有用户分配 Reviewer 权限。原因是当在 Outlook 365 中创建新用户时,他们的日历权限设置为忙/闲。
【问题讨论】:
标签: powershell calendar automation scheduled-tasks office365
这是完全有可能的,但明显的缺点是您需要存储具有默认编辑所有用户日历权限的帐户的凭据才能运行脚本。
您需要脚本的两个部分:
作为shown here,连接到 Exchange Online 是一个非常简单的过程。
将如何以安全方法存储凭据的问题排除在此问题的范围之外,这将导致与 Exchange 服务器的 PowerShell 会话:
$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
Import-PSSession $Session
然后,您需要选择新用户(通过将他们传递给此脚本,或扫描 AD - 这取决于您创建用户的方式 - 从 AD 同步或刚刚在云端创建),并且对他们应用权限更改。不过……
在这种情况下,由于我不知道您是如何创建新用户的,或者如何最好地对其进行测试,所以我只是将其应用于每个人。在大型环境中,这将花费更长的时间,而且是一个非常糟糕的主意。
Get-Mailbox -Filter {RecipientType -eq 'UserMailbox' -and IsShared -eq $false}| %{
Set-MailboxFolderPermissions -Identity "$($_.Alias):\Calendar" -User Default -AccessRights Reviewer
}
最后,根据原文,你应该关闭远程会话。
Remove-PSSession $Session
解决凭据问题后,您需要保存脚本(确保它符合您将运行它的系统上的执行策略),并创建一个新的计划任务来运行它。
根据需要配置计划任务(根据触发器和条件),并将操作设置为Start a program,该程序为powershell.exe。参数应包括-File C:\Path\to\Saved\Script.ps1 和任何参数(例如新用户的文件)。
说了这么多,其实你应该做的是change the sharing policy in 365,它可以让你设置日历的默认权限。
【讨论】:
我建议你看看:OfficeDev/PnP - TimerJob
展示了如何创建“远程计时器作业”,可以将其安装为作为 WebJob 运行到 Windows Azure 或安排到 Windows 调度程序以进行本地部署。
【讨论】: