如何创建一个Powershell脚本来自动连接到o365,并作为一个定时任务运行



我想要一个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的共享策略,这将允许你设置日历的默认权限。

最新更新