2015-05-15 3 views
0

Я пытаюсь получить показатели производительности интерфейса через nagios и nsclient ++, выполнив скрипт PowerShell. Ниже приведена основная часть сценария powershell.Мониторинг сетевого интерфейса Windows

Function netstat { 
    '{0:0}' -f (Get-WmiObject Win32_PerfRawData_Tcpip_NetworkInterface | 
    where{$_.Name -eq "vmxnet3 Ethernet Adapter"} | 
    select BytesReceivedPersec,BytesSentPersec)/1KB) 
} 

Я хочу выход быть в МБ/с и изменить заголовок Tx MB/s и Rx MB/s. Сейчас я получаю следующий результат.

PS C:\Users\Administrator> Get-WmiObject Win32_PerfRawData_Tcpip_NetworkInterface | where{$_.Name -eq "vmxnet3 Ethernet Adapter"} | select BytesReceivedPersec, BytesSentPersec 

       BytesReceivedPersec     BytesSentPersec 
       -------------------     --------------- 
         12720975895       438054511 

Я также попытался использовать check_wmi модуль NSClient ++, как это.

check_nrpe -H 10.35.136.221 -c check_wmi -a 'query=select BytesReceivedPersec, BytesSentPersec from Win32_PerfRawData_Tcpip_NetworkInterface where name = "vmxnet3 Ethernet Adapter"' 

И я получаю следующий выход.

12719626616, 437766199 

Как я могу сделать результат вышеуказанного результата проверки, как показано ниже?

Rx MB/s : 12719626616 Tx MB/s : 437766199 

ответ

1

Использовать calculated properties для изменения имен и/или значений свойств. Изменить это:

... | select BytesReceivedPersec, BytesSentPersec 

в этом:

... | select @{n='Rx MB/s';e={$_.BytesReceivedPersec/1MB}}, 
      @{n='Tx MB/s';e={$_.BytesSentPersec/1MB}} 

Edit: Если все, что вы хотите это форматированный вывод строки вам не нужно возиться с расчетными свойствами. Просто постройте форматированную строку:

... | % { 
    'OK | Rx MB/s={0:0}; Tx MB/s={1:0}' -f ($_.BytesReceivedPersec/1MB), 
    ($_.BytesSentPersec/1MB) 
} 
+0

Это работает и благодарит вас, Ансгар. Тем не менее, я обеспокоен, если это правильный способ получить сетевую статистику интерфейса. Я попытался скопировать файл над рассматриваемой машиной и отслеживал диспетчер задач и вывод этой команды. Кажется, они не отражают одно и то же, или я ошибаюсь? –

+0

@RajS Вместо этого вы можете запросить класс ['Win32_PerfFormattedData_Tcpip_NetworkInterface'] (https://msdn.microsoft.com/en-us/library/aa394293%28v=vs.85%29.aspx). –

+0

Функция netstat { $ nstat = Get-WmiObject Win32_PerfFormattedData_Tcpip_NetworkInterface | где {$ _. Name -eq "vmxnet3 Ethernet Adapter"} | выберите @ {n = "Rx MB/s"; e = {$ _. BytesReceivedPersec /1MB}}, @ {n = "Tx MB/s"; e = {$ _. BytesSentPersec/1MB}} ' ОК | {0: 0} '-f ($ nstat) }. Я пытаюсь получить вывод этой функции как «ОК | Tx MB/s = ..., Rx MB/s = ..., но я получаю следующий вывод. OK | '@ {Rx' = 0 'MB/s' = 0 'Tx' = 0 'MB/s' = 0} –

Смежные вопросы