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

时间:2015-03-10 13:27:08

标签: powershell exchange-server

我正在尝试从主管那里获得主管直接报告,然后使用该信息将每个直接报告从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 Files\Microsoft\Exchange\Web Services\2.0\Microsoft.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

1 个答案:

答案 0 :(得分:1)

如果您只是希望获得每个直接下属和/或外出消息的离开状态,则不需要使用外部Web服务。您可以使用交换管理工具并使用它:

get-MailboxAutoReplyConfiguration $emailAddressOrSamAccountName | select AutoReplyState,InternalMessage

这将为您提供离开办公室状态(是否启用了外出消息)以及为用户设置的内部外出消息。如果您愿意,还可以抓取其他属性。您可以将其放入每个循环中以获取每个直接报告的状态。