Команда PowerShell Start-Sleep или ее псевдоним sleep
– это простая команда с единственной целью: приостановить выполнение сценария. При выполнении в консоли PowerShell или в среде PowerShell ISE эта команда приостанавливает выполнение сценария или модуля в сеансе PowerShell до истечения необходимого времени в секундах или миллисекундах.
Эта команда проста, но может быть применена несколькими способами, что позволит нам создавать хорошо написанные сценарии.
Использование Start-Sleep
Использовать команду Start-Sleep крайне просто, ведь в конце концов у нее всего два параметра! Допустим, мне нужно приостановить выполнение сценария, потому что я жду выполнения какого-то другого процесса в среде. Этот процесс занимает примерно 10 секунд, и мне нужно убедиться, что мой сценарий не будет выполняться до завершения этого внешнего события.
Чтобы приостановить выполнение сценария на 10 секунд, я просто использую Start-Sleep -Second 10
. Если я хочу быть дотошным, я также могу указать время в миллисекундах, как Start-Sleep -Milliseconds 10000
.
Пример использования
Одним из самых распространенных способов использования команды Start-Sleep является вложенный в цикл while
. Цикл while
– это конструкция в PowerShell, которая выполняет код пока что-то еще происходит. Один из лучших способов использования цикла while
– дождаться выполнения какого-то события. Вместо того чтобы просто предполагать, сколько времени займет процесс, и выполнять эту команду напрямую.
Например, возможно, вам нужно подождать, пока файл появится в папке. Возможно, этот файл будет помещен туда другим программным обеспечением. Как только файл появится в папке, вам нужно выполнить некоторый код для его обработки. Этот пример отлично иллюстрирует использование цикла while
и Start-Sleep
.
В приведенном ниже примере мой код ожидает появления файла C:\File.txt
. Если бы это было в сценарии, сценарий приостановился бы до наступления этого события. Технически, нам не нужно использовать Start-Sleep
для этого, но если не использовать, этот код может навредить вашему компьютеру. Скорость, с которой он мог бы постоянно проверять этот файл, зависела бы от PowerShell!
Нам не нужно проверять этот файл каждые 0,0455 мс. Вместо этого мы должны замедлить эту проверку и выполнять тест только каждые пять секунд. Замедление работы цикла while
– отличное использование команды Start-Sleep
.
Для примера использования этой команды с красивым индикатором выполнения, проверьте это.