function Invoke-ScriptedActions { param ( [object[]]$Actions, [string]$PromptText = ((prompt | Out-String) -replace "`n",'' -replace "`r",''), [int]$PromptWatch = 800, [int]$TypingDelay = 150, [int]$TypingDelayJitterMin = 50, [int]$TypingDelayJitterMax = 100, [int]$PasteDelay = 1800, [int]$PasteDelayJitterMin = 600, [int]$PasteDelayJitterMax = 3000, [int]$PasteWatch = 250, [switch]$TurboMode ) Write-Host -NoNewLine $PromptText Start-Sleep -Milliseconds $PromptWatch foreach ($action in $Actions) { $actionType = $action.Keys[0] $actionValue = $action.Values[0] switch ($action.Keys[0]) { 'Paste' { Start-Sleep -Milliseconds $PasteDelay Write-Host -NoNewLine $actionValue Start-Sleep -Milliseconds $PasteWatch } 'Type' { $chars = $actionValue -split '' for ($i = 0; $i -lt $chars.Length; $i++) { $char = $chars[$i] Write-Host -NoNewLine $char if ($i -lt ($chars.Length - 1)) { Start-Sleep -Milliseconds $TypingDelay } } } 'Tab' { Write-Host -NoNewLine $actionValue } 'Delay' { Start-Sleep -Milliseconds "$actionValue" } 'TabChange' { Write-Host -NoNewLine $actionValue Start-Sleep -Milliseconds ($TypingDelay * 2) $length = $actionValue.Length $backspace = "`b" $space = " " $backspaces = $backspace * $length $spaces = $space * $length $overwriteWord = "$backspaces$spaces$backspaces" Write-Host -NoNewLine $overwriteWord } default {} } } Write-Host "" }