Вопрос:

Select-String -Quiet не возвращает True

powershell netstat select-string

84 просмотра

1 ответ

3 Репутация автора

Мой сценарий должен получить информацию о соединении TCP для VNC и сообщить мне, когда состояние соединения ESTABLISHED. Я застрял при попытке получить возвращаемое значение Trueпри использовании Select-String -Quiet.

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

Как видите, я пробовал несколько разных параметров, чтобы получить результат, но ничего не возвращалось.

Автор: Clark Источник Размещён: 22.08.2016 09:31

Ответы (1)


1 плюс

157833 Репутация автора

Решение

Ваш первый 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
Автор: Ansgar Wiechers Размещён: 22.08.2016 09:55
Вопросы из категории :
32x32