Private/Invoke-KB4RateLimitDelay.ps1
|
function Invoke-KB4RateLimitDelay { [CmdletBinding()] param() if ($null -eq $script:KB4LastRequestAt) { $script:KB4LastRequestAt = [DateTimeOffset]::UtcNow return } # KnowBe4 allows four requests per second; keep a small safety margin. $minimumInterval = [TimeSpan]::FromMilliseconds(260) $elapsed = [DateTimeOffset]::UtcNow - $script:KB4LastRequestAt if ($elapsed -lt $minimumInterval) { Start-Sleep -Milliseconds ([int] ($minimumInterval - $elapsed).TotalMilliseconds) } $script:KB4LastRequestAt = [DateTimeOffset]::UtcNow } |