61 lines
2.0 KiB
PowerShell
61 lines
2.0 KiB
PowerShell
|
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 ""
|
||
|
}
|