System.DayOfWeek не содержит op_Addition - PullRequest
1 голос
/ 26 марта 2019

У меня есть метод, который возвращает дату прошлой субботы, и он работал на старом месте, где я его запускал, но я переместил его в новое место, чтобы запустить его, и он не работает. Я не уверен, что эта версия 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 голосов
/ 26 марта 2019

Поскольку ваш член DayOfWeek является перечислением типа System.DayOfWeek, пытается использовать тип System.Enum для выполнения сложения, но этот тип не поддерживает сложение, если у него нет Flags атрибут. Чтобы исправить это, нужно перевернуть операнды, чтобы вместо DayOfWeek было указано System.Int32:

1 + $date.DayOfWeek

В качестве альтернативы (для стиля) введите его самостоятельно:

[int]$date.DayOfWeek+1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...