2017-08-10 45 views
0

我有一個小powershell腳本來找到即將到來的星期五的日期。但是,在分配週五日期的值之後,我的日期變量仍然打印出今天的日期。日期變量仍然包含今天的日期後,分配它即將到來的星期五的價值

$date = Get-Date 

for($i=1; $i -le 7; $i++) 
{   
    if($date.AddDays($i).DayOfWeek -eq 'Friday') 
    { 
     $date.AddDays($i) 
     break 
    } 
} 
Write-Host "$date" 
+1

@ArcSet:他期待顯示哪個日期進入if塊。他必須把它分配給$ date變量 –

回答

2

AddDays似乎返回新的Date對象,並在$date不更新日期對象。嘗試分配$date新的日期,如果語句中,如下所示:

$date = $date.AddDays($i) 
1
$date = Get-Date 

for($i=1; $i -le 7; $i++) 
{   
    if($date.AddDays($i).DayOfWeek -eq 'Friday') 
    { 
     $date = $date.AddDays($i) 
     break 
    } 
} 
Write-Host "$date" 

你必須返回你分配給$追溯到自身的價值。

0

您可能昨天(星期三)測試了它,因爲它今天有效。 在你的代碼的問題是,它只會使用同一個$Date每次大概步驟在預產期:

Date + 1 
Date + 3 (1 + 2) 
Date + 6 (1 + 2 + 3) 
... 

換句話說,在$date = Get-Date應該在你的循環。

(Get-Date).AddDays((1..7 | Where {(Get-Date).AddDays($_).DayOfWeek -eq 'Friday'})) 
+0

我已經在我的答案中放了一個最小化的函數。 – iRon

相關問題