Как подсчитать время выполнения Powershell скриптов


06 сентября 2019


Считаем время выполнения Powershell скриптов

Есть минимум четыре способа подсчитать в Powershell время выполнения скриптов и команд. 

Первый способ самый простой, через получение истории:

Get-History | select *

Мы увидим время старта и конца работы скрипта:

Время выполнения скрипта Powershell

Если запускать не из редактора Powershell, а например в консоли, то у нас будет считаться как 2 разные команды.

Можно сразу получить время выполнения последней команды:

Get-History | select -Last 1 -Property *

Второй способ через Measure-Command. Разница со способом выше в том, что мы измерим время и в миллисекундах тоже. Кроме этого команды исполняются в блоке и время выполнения считается для всех вместе:

Measure-Command {Get-Event
1..30 | % {Get-Date -Day $_}}

powershell время выполнения

Третий способ через объект даты. Мы фиксируем дату до выполнения скрипта и после, а затем вычитаем одно значение из другого:

$start_time = Get-Date
$command = Get-ADUser -Filter *
$end_time = Get-Date
$result =  $end_time - $start_time
$result

Вывод будет аналогичным Measure-Command:

Подсчитать время выполнения скрипта в Powershell

Четвертый способ через объект .Net. Плюсы в том, что такие классы доступны почти во всех версиях Powershell:

# Объявление переменной хранящую начало отсчета времени.
$start_time = [System.Diagnostics.Stopwatch]::StartNew()
Get-ADUser -Filter *
# Проверка, что таймер еще работает
$start_time.IsRunning
# Вывод времени на экран
$start_time.Elapsed
# Остановка таймера
$start_time.Stop()

У этого командлета есть больше десятка методов, которые мы можем применять.

[System.Diagnostics.Stopwatch] | Get-Member

[System.Diagnostics.Stopwatch]

...

Теги: #powershell


Популярные тэги
О блоге
Этот блог представляет собой конспекты выученного материала, преобретенного опыта и лучшие практики в системном администрировании и программировании.