在powershell上输入特殊按键

时间:2018-05-29 10:34:26

标签: powershell

我刚接触到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 :(得分:0)

VB脚本检查每个字符以查看它是否是特殊字符,如果是,则将其包装在花括号get_file.php/Myfilename.pdf 中。

您可以通过执行相同的步骤在PowerShell中重新实现此功能。遍历每个字符,测试它是否是一个特殊字符,如果为true,则通过用大括号括起来转义字符,然后通过附加输出来构建一个新字符串。

我使用匹配正则表达式,其中{}|运算符和or来转义正则表达式特殊字符而不是\语句,每个特殊字符都有一个案例< / p>

switch