如何使用Powershell从交换日历中撤出办公室



>我正在尝试从AD获取主管直接下属,然后使用该信息将每个直接下属从Exchange 2013中拉出办公室。 然后每天邮寄这些信息,以便主管知道那天会离开。 我从这里提取了一些这个脚本,它一次在一个文件上运行得很好,或者我没有正确输入它。 谁能建议我可能做错了什么以及如何解决? 提前谢谢。

$users = Get-ADUser -Identity "supervisor" -Properties directreports |
Select-Object -ExpandProperty directreports |
Get-ADUser -Properties mail |
Select-Object mail
foreach ($user in $users)
{
    Add-Type -Path "C:Program FilesMicrosoftExchangeWeb Services2.0Microsoft.Exchange.WebServices.dll"
    $version = [Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2010_SP2
    $service = new-object Microsoft.Exchange.WebServices.Data.ExchangeService($version)
    $service.UseDefaultCredentials = $true
    $service.AutodiscoverUrl($user)
    $folderid = new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Calendar, $user)
    $calendarFolder = [Microsoft.Exchange.WebServices.Data.calendarFolder]::Bind($service, $folderid)
    $calendarView = new-object Microsoft.Exchange.WebServices.Data.CalendarView([System.DateTime]::Now, [System.DateTime]::Now.AddDays(2))
    $calendarView.MaxItemsReturned = 200;
    $calendarView.PropertySet = new-object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.WebServices.Data.BasePropertySet]::FirstClassProperties)
    $result = $calendarFolder.FindAppointments($calendarView)
}
$result | format-table

如果您只是想获取每个直接下属和/或外出消息的外出状态,则无需使用 exhange Web 服务。 您可以使用交易所管理工具并使用以下工具:

get-MailboxAutoReplyConfiguration $emailAddressOrSamAccountName | select AutoReplyState,InternalMessage

这将为您提供外出状态(无论是否启用外出邮件)和为用户设置的内部外出邮件。如果您愿意,您还可以获取其他属性。您可以将其放入每个循环中,以获取每个直接报告的状态。

最新更新