2016-09-15 5 views
1

Я пытаюсь прочитать значения ниже результатов ping, например, я хочу, чтобы с помощью регулярного выражения читать значение Received как 4 или Lost value как 0.Как прочитать конкретное значение из результата Ping

Ping statistics for 74.125.200.94: 
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), 
Approximate round trip times in milli-seconds: 
Minimum = 63ms, Maximum = 64ms, Average = 63ms 

Я пытаюсь с нижеследующим, но не идет, Любая помощь?

$test = ping google.co.in 
$test -match "^Average = \((\d+)\)$" 
+0

Вы знаете, что '$ test' будет массив? – vonPryz

+0

@vonPryz - Да. –

ответ

1

Просто используйте [regex]::Match, чтобы захватить информацию:

$test = ping google.co.in 

$match = [regex]::Match($test, 'Received = (\d+), Lost = (\d+)') 
$received = $match.Groups[1].Value 
$lost = $match.Groups[2].Value 
+0

Это работает, но если я изменяю значения в Match(), то по какой-то причине я не получаю никакого вывода здесь. $ test = ping google.co.in $ match = [regex] :: Match ($ test, 'Received = (\ d +), Sent = (\ d +)') $ received = $ match.Groups [1] .Value $ sent = $ match.Groups [2] .Value –

+0

Я бы порекомендовал вам использовать несколько вызовов [regex] :: Match, один для полученных: '[regex] :: Match ($ test, ' Received = (\ d +) ') 'then one for Sent:' [regex] :: Match ($ test,' Sent = (\ d +) '' –

+0

спасибо, что решает проблему. Любой способ получить значения в одна строка?, поскольку она становится сценарием длинной. –