我的脚本应该获取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正如您所看到的,我尝试了几个不同的参数来获得结果,但没有返回任何结果。
发布于 2016-08-23 05:55:07
您的第一个Select-String会生成一个MatchInfo对象列表。您需要的信息存储在它们的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 -Quiethttps://stackoverflow.com/questions/39089053
复制相似问题