我想要一个PowerShell脚本自动连接到office 365,并作为一个计划任务每天运行两次,然后分配给新用户的审查权限,如果不可能,然后为所有用户的审查。原因是当在outlook 365中创建新用户时,他们的日历权限被设置为free/busy。
我建议你看看:OfficeDev/PnP - TimerJob
显示如何创建"远程定时器作业",它可以作为WebJob安装到Windows Azure上运行,也可以调度到Windows调度程序中用于本地部署。
这是完全可能的,但明显的缺点是,您需要为具有编辑所有用户日历默认权限的帐户存储凭据,以便运行脚本。
脚本中有两个部分是你需要的:
连接到Exchange Online
如图所示,连接到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:PathtoSavedScript.ps1
和任何参数(例如新用户的文件)。
说了这么多,你实际上应该做的是改变365的共享策略,这将允许你设置日历的默认权限。