我有一個Powershell文件根據CSV文件中的輸入參數列表發送電子郵件。在Powershell中計算處理函數的時間
我已經計算出每個電子郵件之間的延遲,基於它需要運行的總時間除以文件中的行數。不幸的是,這並未考慮發送每封電子郵件所需的時間長度,可能在1秒到60秒之間變化,因此無法估算。
其目的是計算髮送電子郵件所需的時間長度,並將其從預期的延遲中減去,在發送下一封電子郵件之前給出一個暫停值(如果這會產生負值,則下一封電子郵件將會。立即發送)
我不能讓時間計算正常工作,雖然...當前循環代碼如下:
$StartTime = [datetime](get-date).ToShortTimeString()
Start-Countdown -Seconds $iDelay -Message ("Waiting to send email "+$i+" of "+$LinesinFile)
sendMail
$iTimeToRun = NEW-TIMESPAN –Start $StartTime -End [datetime(get-date).ToShortTimeString()
$iDelay = $Delay - $iTimeToRun
延遲預定延遲要求,所以減去時間發送以前的電子郵件應該會給我下一個郵件所需的延遲時間。 Start-Countdown和sendMail是在腳本中定義的函數...... sendMail函數是需要專門計算的函數,因爲它對運行時間影響最大。
目前尚不清楚你想要做什麼。延遲應該是動態的嗎?你爲什麼不解決它?爲什麼需要它?這可能有助於展示'sendMail'函數來更清楚地展示問題所在。查看使用'Measure-Command' cmdlet確定命令運行的時間。不需要創建自己的方法來確定這一點。 – arco444
延遲需要動態,因爲每封電子郵件需要不同的時間發送。電子郵件服務器並不總是在每個請求的同一時間作出響應,因此,您可能希望每20秒發送一次電子郵件,但實際上您希望延遲15秒,因爲之前的電子郵件需要5秒才能發送,然後第二次延遲可能是10秒,因爲之前的電子郵件需要10秒才能發送。 – Gallus
所以你不能只使用循環發送你的電子郵件?這樣下一個將不會被髮送,直到服務器響應,你根本不需要擔心延遲。 – arco444