Select-String -Quiet 不返回 True
Select-String -Quiet not returning True
我的脚本应该获取 VNC 的 TCP 连接信息,并在连接状态为 ESTABLISHED
时告诉我。在使用 Select-String -Quiet
.
时,我一直在尝试获取 True
的 return 值
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
如您所见,我尝试了几个不同的参数来获得结果,但没有 returned。
您的第一个 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 -Quiet
我的脚本应该获取 VNC 的 TCP 连接信息,并在连接状态为 ESTABLISHED
时告诉我。在使用 Select-String -Quiet
.
True
的 return 值
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
如您所见,我尝试了几个不同的参数来获得结果,但没有 returned。
您的第一个 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 -Quiet