Вы можете замерить время выполнения команды или скрипта PowerShell несколькими способами.
В самом простом варианте можно просто запросить время выполнения команды в консоли из истории команд PowerShell. Время запуска и окончания команды содержится в атрибутах StartExecutionTime и EndExecutionTime:
Get-History | select StartExecutionTime,EndExecutionTime,CommandLine
Получить время выполнения последней команды:
Get-History | select -Last 1 -Property *
Можно использовать командлет Measure-Command для получения суммарного времени, затраченного на выполнение всех команд в блоке (в мс).
Этот командлет берет команду/блок команд, указанную в фигурных скобках, выполняет ее внутри себя и в качестве результата выдает время, затраченное на выполнение.
Measure-Command -Expression {"{0:N2} GB" -f ((gci –force c:\photo –Recurse -ErrorAction SilentlyContinue| measure Length -s).sum / 1Gb)
Get-Event
}
В данном примере блок команд был выполнен за 710 миллисекунд.
Можно преобразовать результат в более удобный формат времени:
$cmd_time = Measure-Command -Expression {Get-Event}
$cmd_time.ToString()
Если вам нужно определить время выполнения в скрипте PowerShell, нужно в начале скрипта получить значение даты и сравнить ее с датой в конце скрипта.
$StartTime = (Get-Date)
Start-Sleep -Seconds 10
$EndTime = (Get-Date)
$TotalTime = $EndTime-$StartTime
$TotalTime
Для получения времени выполнения в удобном виде, можно использовать преобразование:
$TotalTime.ToString()
Или:
'{0:mm} min {0:ss} sec' -f $TotalTime
Можно также использовать универсальный .Net класс StopWatch, доступный во всех версиях PowerShell. Данный класс позволяет запустить
$watch = [System.Diagnostics.Stopwatch]::StartNew()
$watch.Start() #Запуск таймера
#код вашего скрипта PowerShellскрипт
$watch.Stop() #Остановка таймера
Write-Host $watch.Elapsed #Время выполнения скрипта
На скорость выполнения скрипта могут общая загруженность ОС, скорость сетевого подключения и другие факторы. Время выполнения одного и того же кода PowerShell может существенно отличаться. Если вам нужно получить прогнозируемое время для выполнения кода PowerShell, выполните замер времени выполнения скрипт несколько раз.