Использование Get-ChildItem со строковой переменной - PullRequest
0 голосов
/ 25 июня 2019

Я использую Get-ChildItem для сохранения местоположений файлов, которые соответствуют параметрам ввода пользователя.Я не могу понять (я новичок в powershell), как использовать строковые переменные с командлетами.

Я определю $ search_param, как в моем сценарии ниже.

Я пытался использовать встроенный отладчик на powershell ise, и, если что-то это меня смутило еще больше.

Именно здесь я обнаружил, что замена использования $ search_param фактическим значением $ search_param приводит к выводу csv, но использование $ search_param не дает вывода.Некоторой полезной информацией может быть то, что я определил $ search_param с двойными кавычками.

Строка, которая вызывает все проблемы:

Get-ChildItem 'C:\Users\USER\' -recurse '$search_param'

$ search_param определяется как:

| where { $_.name -like "*peanut*" -or $_.name -like "*butter*" -or $_.name -like "*test*"} 
| where { $_.extension -in ".txt",".csv",".docx" } 
| where { $_.CreationTime -ge "08/07/1998" -and $_.CreationTime -le "08/07/2019" } 
| select FullName | Export-Csv -Path .\SearchResults.csv -NoTypeInformation

Как ни странно, у меня все это работало до того, как я пошел на ланч и вернулся к другой истории ..

Я использую Export-csv в другом фрагменте моего скрипта, и это работает как задумано.

Возможно, я коснулся чего-то маленького, не связанного с приведенной мною строкой, так как думаю, что это должно сработать ..

1 Ответ

0 голосов
/ 25 июня 2019

За комментарий техника:

Вы можете использовать выражение invoke, чтобы «оценить или запустить указанную строку как команду и вернуть результаты выражения или команды.»

Invoke-Expression "Get-ChildItem 'C:\Users\SGouldin\' -recurse $search_param"

Из небольшого количества исследований опора на выражение выражения не всегда является лучшей практикой. В моем случае это было необходимо из-за того, как я пытался обрабатывать пользовательский ввод (несколько странных конкатенаций / объединений строк).

...