2014-09-25 40 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