2014-09-25 3 views
1

В настоящее время я взламываю сценарий powershell, который я хотел бы иметь возможность отправлять приглашения на собрания, увеличивая время встречи (например, если первое приглашение отправлено на встречу 9:00, мне бы хотелось, чтобы второе заседание будет разослано на 9:30).outlook powershell - увеличение времени начала встречи?

До сих пор это то, что у меня есть. Я могу прочитать список писем из текстового файла и отправить приглашение, однако Im возникли проблемы при добавлении времени встречи (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

O в olMeetingStatus должен быть заглавный, поэтому это будет [Microsoft.Office.Interop.Outlook.OlMeetingStatus]. В большинстве случаев в PowerShell дело не имеет значения, но в этом случае оно происходит, потому что оно относится к пространству имен C#. Я потратил час на то, чтобы вытащить волосы, пытаясь понять, почему собрание не отправит. Я попытаюсь отредактировать ответ, но в случае, если это не будет принято, я хотел бы прокомментировать здесь. – Skurfur

ответ

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 минут к приглашению LAST, отправленному человеку в адрес электронной почты. Txt, однако он не будет применять 30 минут к другим встречам. Я новичок в powershell (как вы можете сказать из кода), поэтому Im wonder .. foreach лучший метод для меня сделать это? – Gsinfie

Смежные вопросы