Рейтинг:0

Фильтрация результатов по дате, но получение ошибки system.type

флаг jp

Я пытаюсь отфильтровать сертификаты на своем локальном компьютере и удалить все, созданные до 10.04.2021.

PS C:\Users\juraj> $cert = Get-ChildItem Cert:\localMachine\My | Где-объект { $_.NotBefore -is [DateTime]::Today}
Невозможно преобразовать значение «10.14.2021, 00:00:00» в тип «System.Type». Ошибка: «Недопустимое преобразование из System.DateTime в
'Тип системы'."
В строке:1 символ:62
+ ... ocalMachine\My | Где-объект { $_.NotBefore -is [DateTime]::Today}
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + Информация о категории: NotSpecified: (:) [], RuntimeException
    + FullyQualifiedErrorId : RuntimeException

Итак, в настоящее время я тестирую функцию, но даже при преобразовании (Get-Date).ToString она заканчивается таким же красным морем ошибок.

Как мне это сделать?

PS 5.1 в W11

флаг br
есть ли что-нибудь в пути Cert:\LocalMachine\My? моя система там ничего не показывает.
JurajB avatar
флаг jp
да, у нас там есть элементы... для тестирования вы можете использовать путь корневого сертификата Cert:\LocalMachine\CA
флаг br
хорошо ... это дает мне объект. теперь... **_ПОЧЕМУ вы проверяете, относятся ли два объекта к одному и тому же типу?_** и почему вы проверяете результат статического метода, а не только тип? использование `[datetime]` вместо `[datetime]::today()` работает без ошибок ... [*усмехается*]
JurajB avatar
флаг jp
хотя, похоже, у меня не работает PS C:\Users\juraj> Get-ChildItem Cert:\localMachine\My | Где-объект { $_.NotBefore -is [DateTime]::Today() } Не удалось вызвать метод, так как [System.DateTime] не содержит метод с именем «Сегодня».
флаг br
УДАЛИТЕ глупый статический метод из раздела `[datetime]`. _просто используйте тип... оператор `-is` проверяет ТИП, а не статический метод. [*ухмылка*]
JurajB avatar
флаг jp
можете ли вы ввести полную команду, так как без оператора «-is» она все еще не работает для меня. Не уверен, что мне не хватает
Рейтинг:0
флаг jp

У меня получилось - я преобразовал строку в [datetime], а затем использовал ее в качестве фильтра.

$string='10.13.2021'
$string=[Datetime]::ParseExact($string, 'дд/мм/гггг', $null)
Get-ChildItem -Recurse Cert:\localMachine\My | Где { $_.NotBefore -lt $string } | Удалить объект
флаг br
отличный! [*усмехается*] что не только _работает_ ... это проясняет ваши намерения. другой код использовал `-is` таким образом, что намерение было неясным для меня.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.