Введите специальное нажатие на PowerShell - PullRequest
0 голосов
/ 29 мая 2018

Я новичок в powershell, и я написал скрипт для нажатия клавиш, введенный любым скриптом ниже, в активное окно блокнота.

Однако все прошло нормально, за исключением случаев, когда содержатся специальные символы (~%!@#^&*() и т. Д.)в этом тексте.Есть ли способ исправить это?

$wshell = New-Object -ComObject wscript.shell;
$wshell.AppActivate('notepad')
Sleep 1
$wshell.SendKeys('text to Keystorke')

После долгих поисков я нашел VBS, который может справиться с этим.Я не понимаю, как преобразовать это в PowerShell, чтобы я мог включить его в свой единственный файл сценария?

есть идеи?Заранее спасибо:)

sString  = "Text to keystroke is here"
sStringToSend = ""
For ii = 1 To Len( sString)
  sChar = Mid( sString, ii, 1)
  Select Case sChar
  Case "{", "}", "(", ")", "[", "]", "^", "%", "+", "~"
    sStringToSend = sStringToSend & "{" & sChar & "}"
  Case Else
    sStringToSend = sStringToSend & sChar
  End Select
Next
objShell.SendKeys sStringToSend
Wscript.Sleep 300

discardScript()    
'
Function discardScript()
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    strScript = Wscript.ScriptFullName
    objFSO.DeleteFile(strScript)
End Function

1 Ответ

0 голосов
/ 29 мая 2018

Скрипт VB проверяет каждый символ, чтобы увидеть, является ли он специальным символом, если он есть, то он заключает его в фигурные скобки {}.

Вы можете переопределить это в PowerShell, выполнив те же действия.Зацикливайтесь на каждом символе, проверяйте, является ли он специальным символом, экранируйте его, заключив в фигурные скобки, если оно истинно, затем строите новую строку, добавляя вывод.

Я использовал регулярное выражение соответствия, где | - этоor оператор и \ для экранирования специальных символов регулярных выражений вместо оператора switch с регистром для каждого специального символа

$Text = [char[]]'example{}()[]^%+~'
$FormattedCharArray = foreach ($char in $Text) {
    if ($char -match '({|}|\(|\)|\[|\]|\^|%|\+|~)'){
        "{$char}"
    } else {
        $char
    }
}
$FormattedCharArray -join ''
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...