在为其分配即将到来的星期五的值之后,日期变量仍包含今天的日期

时间:2017-08-10 14:07:37

标签: powershell

我有一个小的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"

3 个答案:

答案 0 :(得分:2)

AddDays似乎返回了新的日期对象,而不是更新$date中的日期对象。尝试将$date分配给if语句中的新日期,如下所示:

 $date = $date.AddDays($i)

答案 1 :(得分: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"

您必须将您分配给$ date的值返回给自己。

答案 2 :(得分: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'}))