2013-04-01 5 views
2

Я пытаюсь запустить сценарий powershell для обмена 2010, чтобы извлекать информацию из определенного диапазона дат/времени.Сценарий PowerShell с определенным диапазоном дат/времени

пример: показать мне количество полученных писем с понедельника по пятницу диапазон времени 6 утра-11 вечера

get-messagetrackinglog -resultsize unlimited -Recipient [email protected] -Server EXCHANGE -Start "3/4/2013 6:00:00 AM" -End "3/6/2013 23:00:00 PM" | select messageid -unique | measure 

, но я хотел бы, чтобы диапазон дат не так статично. поэтому, если я запускаю сценарий в 11 вечера в пятницу вечером каждую неделю, как я могу заставить его сделать этот запрос за последние 5 дней.

Я пытался добавлять в (get-date).adddays(-5), но я не могу понять, как добавить, что в.

любая помощь будет принята с благодарностью.

ответ

1

Попробуйте

for($i=-4,$i -lt 0,$i++){ 
    $start = (get-date -hour 6).adddays($i); 
    $end = (get-date -hour 23).adddays($i); 
    Write-host $start.DayoftheWeek (get-messagetrackinglog -resultsize unlimited -Recipient [email protected] -Server EXCHANGE -Start $start -End $end | select messageid -unique | measure).count 
} 
0

Командлет get-messagetrackinglog принимает только один аргумент для -start и -end, поэтому вы не можете указать это в одной команде.

Вы можете запускать 5 отдельных запросов журналов сообщений с 6 AM-11PM, каждый в разные дни и объединять эти результаты вместе, или вы можете сделать один запрос для всех журналов с 6AM в первый день до 11 вечера на последнем день, а затем отфильтруйте те, которые отмечены временем между 11:00 и 6:00 в промежуточные дни.

0

Только пытаясь ответить на часть о прошлом дате и времени, и если вы работаете это в 11 вечера, но хотите вернуться к 6am (17hrs дифф) ... Может использовать что-то вроде:

$past=(Get-Date).adddays(-5).addhours(-17) 

А потом попробуйте

-start $past -end (get-date) 
+0

Вы, вероятно, имел в виду другой путь «вокруг: '-Start $ past -End (Get-Date)' –

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