Передача параметра в функцию

Я пытаюсь создать простую функцию, основанную на следующем, передав ей аргумент. Функция будет искать мою историю команд в поисках строки - команда работает:

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 проблематично.

http://social.technet.microsoft.com/wiki/contents/articles/7821.powershell-using-args-in-script-blocks.aspx

Попробуй это:

function findhistory ($search) {history | where-object {$_.CommandLine -match $search}}
Другие вопросы по тегам