是否可以通过powershell预订exchange中的会议室?


PowerShell交流中心分类: Powershell基础是否可以通过powershell预订exchange中的会议室?
0
smallrascal asked 10 年 ago

我这里有个情况,两周内的会议室,用户可以自己预订,超过两周的需要会议室管理员来预订
因超过两周的需求还是比较多的 ,因此想了解一下powershell是否有方法可以批量的进行会议室的预订?

Mooser Lee 管理员 replied 10 年 ago

这个没用过,求解中,不知道其他几个搞运维的朋友可否提供帮助。@codecook

1 Answers
0
codecook 管理员 answered 10 年 ago

这个要从COM中找方法,应该是可以的,因为利用COM我们可以使用户发邮件。从用户的配置文档找你需要的这个功能应该是可行的,只可惜这个功能不好搭环境测试。

Mooser Lee 管理员 replied 10 年 ago

是的,的确不好搭建环境。

smallrascal replied 10 年 ago

可以用EWS来实现,具体解释可见http://mikepfeiffer.net/2011/01/creating-calendar-items-with-powershell-and-the-ews-managed-api/,代码如下:<br>需要替换代码中的meetingroomaddress和passwordfunction<br>function New-CalendarItem {<br> [CmdletBinding()]<br> param(<br> [Parameter(Position=1, Mandatory=$true)]<br> $Subject,<br> [Parameter(Position=2, Mandatory=$true)]<br> $Body, <br> [Parameter(Position=3, Mandatory=$true)]<br> $Start, <br> [Parameter(Position=4, Mandatory=$true)]<br> $End, <br> [Parameter(Position=5, Mandatory=$false)]<br> $RequiredAttendees, <br> [Parameter(Position=6, Mandatory=$false)]<br> $OptionalAttendees, <br> [Parameter(Position=7, Mandatory=$false)]<br> $Location,<br> [Parameter(Position=8, Mandatory=$false)]<br> $Impersonate<br> )<br><br>Add-Type -Path 'C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll'<br>$service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService -ArgumentList Exchange2013_SP1<br>$service.Credentials = New-Object Microsoft.Exchange.WebServices.Data.WebCredentials -ArgumentList "meetingroomaddress","password"<br>$service.AutodiscoverUrl('meetingroomaddress', {$true})<br><br>$service<br><br> if($Impersonate) {<br> $ImpersonatedUserId = New-Object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId -ArgumentList ([Microsoft.Exchange.WebServices.Data.ConnectingIdType]::SmtpAddress),$Impersonate <br> $service.ImpersonatedUserId = $ImpersonatedUserId <br> }<br><br> $appointment = New-Object Microsoft.Exchange.WebServices.Data.Appointment -ArgumentList $service<br> $appointment.Subject = $Subject<br> $appointment.Body = $Body<br> $appointment.Start = $Start<br> $appointment.End = $End <br> <br> if($RequiredAttendees) {$RequiredAttendees | %{[void]$appointment.RequiredAttendees.Add($_)}}<br> if($OptionalAttendees) {$OptionalAttendees | %{[void]$appointment.RequiredAttendees.Add($_)}}<br> if($Location) {$appointment.Location = $Location}<br> <br> $appointment.Save([Microsoft.Exchange.WebServices.Data.SendInvitationsMode]::SendToAllAndSaveCopy)<br>}