How can you set a time limit for a PowerShell script to run for?

前端 未结 6 985
再見小時候
再見小時候 2021-01-05 15:36

I want to set a time limit on a PowerShell (v2) script so it forcibly exits after that time limit has expired.

I see in PHP they have commands like set_time_limit an

6条回答
  •  醉话见心
    2021-01-05 16:09

    Here is an example of using a Timer. I haven't tried it personally, but I think it should work:

    function Main
    {
        # do main logic here
    }
    
    function Stop-Script
    {
        Write-Host "Called Stop-Script."
        [System.Management.Automation.Runspaces.Runspace]::DefaultRunspace.CloseAsync()
    }
    
    $elapsedEventHandler = {
        param ([System.Object]$sender, [System.Timers.ElapsedEventArgs]$e)
    
        Write-Host "Event handler invoked."
        ($sender -as [System.Timers.Timer]).Stop()
        Unregister-Event -SourceIdentifier Timer.Elapsed
        Stop-Script
    }
    
    $timer = New-Object System.Timers.Timer -ArgumentList 2000 # setup the timer to fire the elapsed event after 2 seconds
    Register-ObjectEvent -InputObject $timer -EventName Elapsed -SourceIdentifier Timer.Elapsed -Action $elapsedEventHandler
    $timer.Start()
    
    Main
    

提交回复
热议问题