Простой сценарий PowerShell с использованием Get-ChildItem не работает

Итак, у меня есть процесс, который ищет определенные файлы, как показано ниже:

@(Get-ChildItem -Path \\$Server\c$\temp\* where-object { $_.CreationTime.Date -match "2016" })

Это работало нормально, пока я не захотел разделить свой вывод. Я узнал о "$ OFS =" "" и хотел использовать это (глобальная переменная PowerShell?) И изменил ее на $ OFS = "` r`n "..

Теперь, когда я запускаю указанную выше команду, я получаю сообщение об ошибке:

Get-ChildItem: не найден позиционный параметр, который принимает аргумент '$ _. CreationTime.Date -match "2016"'.

Я попытался сбросить его с помощью $ OFS = "", но это, похоже, не помогло. Я не могу понять, что я сделал, чтобы испортить свой простой сценарий. Извините за очень нубский вопрос, но я искал его целую вечность и не могу найти ответа. Все, что я нахожу в Интернете, похоже, утверждает, что моя команда powershell должна работать


person Daystar1124    schedule 11.08.2017    source источник


Ответы (1)


Ваша команда powershell не может работать. Get-ChildItem и Where-Object - это разные командлеты, попробуйте направить (|) вывод Get-ChildItem в Where-Object

@(Get-ChildItem -Path \\$Server\c$\temp\* | where-object { $_.CreationTime.Date -match "2016" })
person Olaf Reitz    schedule 12.08.2017
comment
$_.CreationTime.Year -eq 2016 избегает преобразования в строку и использования регулярных выражений, и эээ ... возможность ложноположительных совпадений, если скрипт все еще будет работать после 20160 года;) - person TessellatingHeckler; 12.08.2017
comment
@TessellatingHeckler Ты победил меня за тот же комментарий. (кроме 20160 года :-) - person ; 12.08.2017