2014-09-25 62 views
1

目前我正在黑客一个PowerShell脚本,我想有能力发送会议邀请出来,同时增加会议时间(例如,如果第一次邀请发送9:00会议,我想第二次会议将于9:30发出)。展望powershell - 增加会议开始时间的时间?

到目前为止,下面是我的。我可以阅读文本文件的邮件列表,并发送邀请,加入的时间来开会但是林有问题(AddMinutes()似乎并不对会议的工作邀请开始时间)在

$emails = get-content emails.txt 
$olAppointmentItem = 1 
$o = new-object -comobject outlook.application 
foreach ($element in $emails){ 
    $a = $o.CreateItem($olAppointmentItem) 
    $a.meetingstatus=[Microsoft.Office.Interop.Outlook.olMeetingStatus]::olMeeting 
    $a.meetingstatus.olMeeting 
    $a.Start = [datetime]::ParseExact("09:00","hh:mm",$null) 
    $a.Duration = 30 
    $a.Subject = "Test Meeting" 
    $a.Body = "Just a test, please accept, then delete." 
    $a.Location = "Here" 
    $a.ReminderMinutesBeforeStart = 15 
    $a.ReminderSet = $True 
    $a.recipients.add($element) 
    $a.ForceUpdateToAllAttendees =$True 
    $a.send() 
    $a.Start.AddMinutes(+30) 
} 
$result = $a.Save() 
+0

olMeetingStatus中的O应该大写,因此它将是[Microsoft.Office.Interop.Outlook.OlMeetingStatus]。大多数情况下,在PowerShell中,情况并不重要,但在这种情况下,它确实是因为它指的是C#名称空间。我浪费了一个小时,试图弄清楚为什么会议不会发送。我会尽力编辑答案,但如果不被接受,我想在这里发表评论。 – Skurfur 2016-08-16 16:29:00

回答

0

.AddMinutes()作品[DateTime]对象,我将不得不检查.Start接受了什么,或者您是否可以从中读取。理论上$a.Start.AddMinutes(+30)只会返回一个[datetime]对象,类似于Thursday, September 25, 2014 9:30:00 AM。你没有把它分配给任何东西。

到这方面的一个基本的方法是将在第一时间保存到其自己的变量

$900am = [datetime]::ParseExact("09:00","hh:mm",$null) 
$a.Start = $900am 

然后向下下面你试图在那里改变这一点,你可以这样做:

$a.Start = $900am.AddMinutes(30) 

还是不打扰了变量,只是再次调用方法ParseExact

$a.Start = ([datetime]::ParseExact("09:00","hh:mm",$null)).AddMinutes(30) 

我不知道你的逻辑是否成立,所以我将不得不测试,但上述将肯定有助于你的时间操纵。

+0

感谢您的回复。看起来,它会在发送给个人的最后邀请中添加30分钟的emails.txt,但它不会将30分钟应用于其他约会。我是Powershell的新手(正如你可以从代码中看出的那样),所以我想知道......对我来说这是最好的方法吗? – Gsinfie 2014-09-26 14:12:55