我刚接触到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
答案 0 :(得分:0)
VB脚本检查每个字符以查看它是否是特殊字符,如果是,则将其包装在花括号get_file.php/Myfilename.pdf
中。
您可以通过执行相同的步骤在PowerShell中重新实现此功能。遍历每个字符,测试它是否是一个特殊字符,如果为true,则通过用大括号括起来转义字符,然后通过附加输出来构建一个新字符串。
我使用匹配正则表达式,其中{}
是|
运算符和or
来转义正则表达式特殊字符而不是\
语句,每个特殊字符都有一个案例< / p>
switch