我有一个小的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"
答案 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'}))