2016-08-22 3 views
0

내 스크립트는 VNC에 대한 TCP 연결 정보를 얻고 연결 상태가 ESTABLISHED 일 때 알려줍니다. Select-String -Quiet을 사용할 때 True의 반환 값을 얻으려고 애 쓰고 있습니다.Select-String - 조용히 반환하지 않음

PS C:\> $vnc = netstat -ab | select-string "winvnc4.exe" -context 1,0 
PS C:\> $vnc 

    TCP 0.0.0.0:5800   User:0    LISTENING 
> [winvnc4.exe] 
    TCP 0.0.0.0:5900   User:0    LISTENING 
> [winvnc4.exe] 
    TCP [::]:5800    User:0    LISTENING 
> [winvnc4.exe] 
    TCP [::]:5900    User:0    LISTENING 
> [winvnc4.exe] 

PS C:\> $vnc | Select-String "LISTENING" -quiet 

PS C:\> $vnc | Select-String -Pattern "LISTENING" -quiet 

PS C:\> $vnc | Select-String "LISTENING" -simplematch -quiet 

위에서 알 수 있듯이 여러 가지 매개 변수를 사용하여 결과를 얻었지만 아무 것도 반환되지 않았습니다.

+0

귀하의 코드가 작동 : 내가 반환되는 "참"을 참조하십시오. 아무리 중요하지 않더라도 코드를 생략 했습니까? –

+0

이것은 모든 것입니다. 나는 ISE를 닫고 관리자로 다시 열었으며 (처음 시도한 것처럼) 여전히 아무 것도 반환하지 않았습니다. 'PS C : \> get-host | 버전을 선택하십시오 버전 ------- 5.0.10586.494' – Clark

답변

1

첫 번째 Select-StringMatchInfo 개체의 목록을 생성합니다. 이후 정보는 Context 속성에 저장됩니다. Select-String을 실행하기 전에 확장해야합니다.

$vnc | Select-Object -Expand Context | 
    Select-Object -Expand PreContext | 
    Select-String 'LISTENING' -SimpleMatch -Quiet 
PowerShell을 v3에서

당신이 좀 더 컴팩트 있는지 확인하는 member enumeration를 사용할 수있는 새로운 : 나를 위해 예상대로

$vnc | ForEach-Object { $_.Context.PreContext } | 
    Select-String 'LISTENING' -SimpleMatch -Quiet 
+0

그건 작동합니다! 고맙습니다! – Clark