Передача параметра в функцию
Я пытаюсь создать простую функцию, основанную на следующем, передав ей аргумент. Функция будет искать мою историю команд в поисках строки - команда работает:
history | Where-Object {$_.CommandLine -match 'abc'}
Из моих исследований самым близким к этому было бы:
Function FindHistory {history | Where-Object {$_.CommandLine -match '$args'}}
Однако я не могу заставить это (или любой вариант) работать.FindHistory abc
- должен вернуть все предыдущие команды, использованные с 'abc' в них.
Что я делаю неправильно?
Кстати, я был активным пользователем PowerShell в течение всех 2 дней - мне это нравится:)
2 ответа
Powershell не будет расширять переменные в строках с одинарными кавычками, поэтому вы должны использовать строку с двойными кавычками:
Function FindHistory {history | Where-Object {$_.CommandLine -match "$args"}}
Хоть $args
это массив всех аргументов, поэтому он может быть более надежным, если вы просто укажете параметр:
Function FindHistory {PARAM($searchTerm) history | Where-Object {$_.CommandLine -match "$searchTerm"}}
Использование $args в предложении where-object проблематично.
Попробуй это:
function findhistory ($search) {history | where-object {$_.CommandLine -match $search}}