System.DayOfWeek不包含op_Addition

时间:2019-03-26 14:48:48

标签: powershell date

我有一个返回上周六日期的方法,它曾经在我运行它的旧地方工作,但是我将其移到新位置运行它,但它不起作用。我不确定这个版本的powerShell是否不同,这就是问题所在。就是说PSVersion在新位置是4。旧位置的PSVersion为5.1。

这是我的方法,当我检查$ newdate时,它在运行后和运行期间为空。

function GetLastSaturdayDate()
{
   $date = Get-Date 
   $newdate = $date.AddDays(-($date.DayOfWeek+1)%7)
   return $newdate
}

当我在ps命令行上运行命令时,它表示以下内容。我在运行脚本时没有看到此错误消息:

Method invocation failed because [System.DayOfWeek] does not contain a method named 'op_Addition'.
At line:1 char:1
+ $newda = $date.AddDays(-($date.DayOfWeek+1)%7)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (op_Addition:String) [], RuntimeException
    + FullyQualifiedErrorId : MethodNotFound

有任何想法如何在旧版Powershell版本中添加日期?也许我需要包含或使用诸如数学之类的东西?

1 个答案:

答案 0 :(得分:0)

因为您的DayOfWeek成员是类型System.DayOfWeek的枚举,所以试图使用System.Enum类型执行加法,但是该类型不支持加法,除非它具有Flags属性。纠正此问题的方法是翻转操作数,以使DayOfWeek被强制转换为System.Int32

1 + $date.DayOfWeek

(对于样式)也可以自己进行排版:

[int]$date.DayOfWeek+1