2017-08-10 9 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:@ブロックの内部にある日付が表示されることを期待しています。彼はそれを$ date変数に代入しなければなりません –

答えて

2

AddDays新しい日付オブジェクトを返し、$dateに日付オブジェクトを更新しないように思われます。次のようにif文の内側に新しい日付に$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 + 1 
Date + 3 (1 + 2) 
Date + 6 (1 + 2 + 3) 
... 

言い換えれば、$date = Get-Dateはあなたのループにする必要があります:あなたのコード内 問題は、それが同じ$Dateを毎回再利用し、おそらく予想される日付の上にステップということです。

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

私は答えに最小化された関数を入れました。 – iRon

関連する問題