2015-01-31 3 views
1

속성 "innerText"로 개체 목록을 필터링하고 싶습니다. 그러나 나는 약간의 준비를 할 필요가있다. 왜 더 복잡한 코드가 작동하지 않습니까? 모든 객체를 반환합니다.Where-Object에서 함수를 사용하는 방법

function enc[[string]$inp] 
{ 
    return [System.Text.Encoding]::GetEncoding("windows-1251").GetString([System.Text.Encoding]::GetEncoding("ISO-8859-1").GetBytes($inp)) 
} 

$req.Links | Where-Object { enc($_.innerText) -eq "my string"} | fl 

내가 뭘 잘못하고있어? 불행히도 인터넷에서 필요한 기사를 찾지 못했습니다. 많은 예가 있습니다 : ($ _. Name -eq "name") - 나에게 가치있는 것은 없습니다.

+0

파워 쉘 기능 (및 cmdlet을은) 형태로'동사-Noun'에 이름을 지정해야합니다. [명명 규칙] (https://msdn.microsoft.com/en-us/library/ms714428 (v = vs.85) .aspx)을 참조하십시오. 그렇게하지 않는 한, 상황에 따라 출력물에 경고가 표시된다는 것을 알 수 있습니다. – filimonic

+2

모듈을 제공하는 경우에만 해당하므로 모든 명령이 동일한 표준을 따르고 찾기 쉽습니다. 스크립트 등에서 간단한 함수를 위해 원하는대로 호출 할 수 있습니다 (이미 사용 된 이름은 피하십시오). –

+0

@FrodeF 감사합니다. 나는 그것을 주목할 것이다. 저는 최근에 powershell을 공부하기 시작했습니다. –

답변

4

제 생각에는 문제를 어떻게 정의했는지 생각합니다.

function enc 
{ 
    param ([string]$inp) 

    return [System.Text.Encoding]::GetEncoding("windows-1251").GetString([System.Text.Encoding]::GetEncoding("ISO-8859-1").GetBytes($inp)) 
} 

$req.Links | Where-Object { (enc $_.innerText) -eq "my string"} | fl 

간단한 테스트 :

$a = "hello","world" 
function enc 
{ 
    param ([string]$inp) 
    $inp 
} 

$a | Where-Object { (enc $_) -eq "hello"} 
+2

나는 괄호를 덧붙인다. - $ (enc $ _. innerText) -eq "내 문자열" 정의되지 않은 동작으로부터 안전하게하기 위해 – filimonic

+0

좋은 점은 여기에 업데이트 –

+2

또는'function enc ([string] $ inp) {...}' –

관련 문제