选择-字符串-安静不返回True



我的脚本应该获得VNC的TCP连接信息,并告诉我连接状态是ESTABLISHED。当使用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

如您所见,我尝试了几个不同的参数来获得结果,但没有返回任何结果。

您的第一个Select-String生成MatchInfo对象的列表。您需要的信息存储在这些的Context属性中。在运行另一个Select-String之前,您需要对其进行扩展。

$vnc | Select-Object -Expand Context |
    Select-Object -Expand PreContext |
    Select-String 'LISTENING' -SimpleMatch -Quiet

在PowerShell v3及更新版本中,可以使用成员枚举使其更紧凑:

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

相关内容

  • 没有找到相关文章

最新更新