Главная > Powershell > Как засечь время в Powershell

Как засечь время в Powershell

Вообще для измерения скорости выполнения той, или иной команды в Powershell есть командлет Measure-Command. Но в определённых случаях он может не подойти. Например, если нужно не только подсчитать время выполнения команды, но и вывести результат команды на экран – при использовании Measure-Command на экран выводится только его результат:

Measure-Command

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

Первое, что приходит на ум – это “вручную” засечь время до начала выполнения команды, и после окончания, после чего высчитать разницу из этих значений:

# Замеряем время до начала выполнения команды
$Start = Get-Date

Get-ChildItem 'C:\Program Files\' -Filter "*.txt" -Recurse

# Замеряем время после выполнения команды
$End = Get-Date

# Высчитываем время выполнения команды
$Time = $End - $Start

"Время выполнения команды: $($Time.Seconds) секунд(ы)"

Но есть более изящный способ.

Это использование объекта System.Diagnostics.Stopwatch:

# Создаём объект таймер
$Timer = [System.Diagnostics.Stopwatch]::StartNew()

# Запускаем таймер
$Timer.Start()

Get-ChildItem 'C:\Program Files\' -Filter "*.txt" -Recurse

# Останавливаем таймер
$Timer.Stop()

"Время выполнения команды $($Timer.Elapsed.Seconds) секунд"

В полученном результате нам интересно свойство Elapsed.

При таком способе получается чуть более длинная форма вывода, за счёт того, что само свойство Elapsed это ещё не объект временного диапазона (TimeSpan), как в первом случае:

PS C:\> $Time.GetType().Name
TimeSpan

а объект Stopwatch (System.Diagnostics.Stopwatch):

PS C:\> $Timer.GetType().Name
Stopwatch

Одно из свойств которого (Elapsed) как раз и содержит интересующее нас время:

PS C:\> $Timer.Elapsed.GetType().Name
TimeSpan

Зато не нужно вычислять время вручную 🙂

Реклама
Рубрики:Powershell Метки: ,
  1. Комментариев нет.
  1. No trackbacks yet.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: