2013-11-21 2 views
2

나는 인수를 전달하여 다음을 기반으로 간단한 함수를 만들려고합니다. 문자열을 찾고 내 명령 기록을 검색합니다 기능 - 명령 작품 : 내 연구에서함수에 매개 변수 전달

history | Where-Object {$_.CommandLine -match 'abc'} 

이 가장 가까운 일이 될 것이다 :

나는이를 얻을 수 없습니다입니다 그러나
Function FindHistory {history | Where-Object {$_.CommandLine -match '$args'}} 

(또는 어떤 변형) 작동합니다. FindHistory abc - 'abc'와 함께 사용 된 이전 명령을 모두 반환해야합니다.

내가 뭘 잘못하고 있니?

BTW, 나는 2 일의 모든 열렬한 PowerShell 사용하고 한 - 당신이 이중 인용 된 문자열을 사용 할 수 있도록이 :)

답변

4

PowerShell을 단일 인용 문자열 변수를 확장하지 않습니다 좋아 :

$args 비록
Function FindHistory {history | Where-Object {$_.CommandLine -match "$args"}} 

는 모든 인수의 배열입니다, 그래서 당신은 단지 매개 변수를 지정하면 더 강력한 될 수있는 경우 객체 절에 $ 인수를 사용

Function FindHistory {PARAM($searchTerm) history | Where-Object {$_.CommandLine -match "$searchTerm"}} 
+0

- 감사합니다 :) 보조 노트에, 큰 따옴표와 함께 첫 코멘트를 인수 실제로하지 않았다 해결 - 원하는 결과를 표시하지 않았다 . 두 번째는 매력을 작동하므로 올바른 것으로 표시되었지만 Powershell에 익숙하지 않아 PARAM ($ searchterm)과 정확히 무슨 일이 일어나는지 전혀 알지 못합니다 - 아래의 mjolinor의 대답과 매우 유사하지만 더 자세히 보입니다 ... – user3015650

관련 문제