ps/Modules/Cole.PowerShell.Developer/Public/Invoke-ScriptedActions.ps1

61 lines
2.0 KiB
PowerShell
Raw Normal View History

2023-05-30 22:51:22 -07:00
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 ""
}