2016-08-22 12 views
0

私のスクリプトは、VNC用のTCP接続情報を取得し、接続状態がESTABLISHEDであることを通知します。私はSelect-String -Quietを使用した場合、戻り値をTrueにしようとしています。Select-String -QuietがTrueを返さない

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-Stringは、MatchInfoオブジェクトのリストを生成します。後の情報は、Contextプロパティに格納されています。 Select-Stringを実行する前にそれを拡張する必要があります。

PowerShellのV3以降で
$vnc | Select-Object -Expand Context | 
    Select-Object -Expand PreContext | 
    Select-String 'LISTENING' -SimpleMatch -Quiet 

あなたはそれがもう少しコンパクトにするmember enumerationを使用することができます。私のために期待されるよう

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

それは動作します!ありがとうございました! – Clark

関連する問題