Как мне использовать Powershell для отметки времени с 24-часовым временем? - PullRequest
2 голосов
/ 01 июня 2019

Мне нужно пинговать вещи в Windows и знать, в какое время пинг был получен или пропущен; временные метки должны отражать 24-часовое время (вместо суффикса AM / PM).

Как я могу сделать это в Powershell?

Ответы [ 2 ]

2 голосов
/ 01 июня 2019

Вы можете пинговать время с помощью петли foreach(); Get-Date может принимать строку формата:

C:\> powershell
PS C:\> ping.exe -t 4.2.2.2 | Foreach{"{0} - {1}" -f (Get-Date -f "yyyyMMdd HH:mm:ss"),$_}
20190601 14:33:03 -
20190601 14:33:03 - Pinging 4.2.2.2 with 32 bytes of data:
20190601 14:33:03 - Reply from 4.2.2.2: bytes=32 time=70ms TTL=123
20190601 14:33:04 - Reply from 4.2.2.2: bytes=32 time=71ms TTL=123
20190601 14:33:05 - Reply from 4.2.2.2: bytes=32 time=70ms TTL=123
0 голосов
/ 02 июня 2019

кажется, что вы хотите отображать как успешные, так и неудачные эхо-запросы и что вы хотите обрабатывать несколько адресов.это должно сделать работу ... [ ухмылка ]

что он делает ...

  • создает список IP-адресов для ping
  • устанавливает формат отметки времени
    HH для 24 часов, hh для 12 часов, tt будет AM или PM.
  • устанавливает строку отображения no-repsonse
  • устанавливает счетчик повторений
    , если вы хотите, чтобы это выполнялось "навсегда", вы можете изменить while на while ($True) вместо использованиясчетчик.я бы просто установил $RepeatCount на что-то вроде 666.
  • инициализировать счетчик
  • определить while триггер
  • написать строку счетчика
    , если вы не хотите, просто удалите или закомментируйте эту строку.
  • цикл через список IP с foreach loop
  • проверка и сохранение результата проверки связи
  • генерация метки времени
  • работа с неотвечающими адресамии создайте элементы для использования с оператором -f формата строки
  • , используйте оператор -f формата строки и строку шаблона, чтобы показать информацию
  • увеличить счетчик

вот код ...

$IP_List = @(
    '127.0.0.1'
    '10.0.0.1'
    '1.1.1.1'
    )
$TimeStampFormat = 'yyyy-MM-dd HH:mm:ss'
$NoResponse = '__No Response__'

$RepeatCount = 3

$Counter = 1
while ($Counter -le $RepeatCount)
    {
    '______ Repeat Count = {0, 3}' -f $Counter
    foreach ($IPL_Item in $IP_List)
        {
        $Result = Test-Connection -ComputerName $IPL_Item -Count 1 -ErrorAction SilentlyContinue |
            Select-Object -Property Address, ResponseTime
        $TimeStamp = [datetime]::Now.ToString($TimeStampFormat)
        if (-not $Result)
            {
            $PingData = @($TimeStamp, $env:COMPUTERNAME, $IPL_Item, $NoResponse)
            }
            else
            {
            $PingData = $($TimeStamp, $env:COMPUTERNAME, $Result.Address, $Result.ResponseTime)
            }
        '{0} - From = {1, -10} - To = {2, -16} - ResponseTime = {3, 4}' -f $PingData
        }
    $Counter++
    }

вывод ...

______ Repeat Count =   1
2019-06-01 21:24:50 - From = [MySysName] - To = 127.0.0.1        - ResponseTime =    0
2019-06-01 21:24:54 - From = [MySysName] - To = 10.0.0.1         - ResponseTime = __No Response__
2019-06-01 21:24:54 - From = [MySysName] - To = 1.1.1.1          - ResponseTime =   20
______ Repeat Count =   2
2019-06-01 21:24:54 - From = [MySysName] - To = 127.0.0.1        - ResponseTime =    0
2019-06-01 21:24:58 - From = [MySysName] - To = 10.0.0.1         - ResponseTime = __No Response__
2019-06-01 21:24:58 - From = [MySysName] - To = 1.1.1.1          - ResponseTime =   19
______ Repeat Count =   3
2019-06-01 21:24:58 - From = [MySysName] - To = 127.0.0.1        - ResponseTime =    0
2019-06-01 21:25:02 - From = [MySysName] - To = 10.0.0.1         - ResponseTime = __No Response__
2019-06-01 21:25:02 - From = [MySysName] - To = 1.1.1.1          - ResponseTime =   20
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...