如何通过Powershell使用SendWait发送编码命令



我编码了一个命令,因为它有花括号,我想把它粘贴到网站上。我遇到的问题是,当我尝试使用SendWait命令时,我总是会出现EncodedCommand错误。我该如何将编码后的命令粘贴到网站中呢。

这是代码:

start-process -FilePath 'C:Program Files (x86)GoogleChromeApplicationchrome.exe' -ArgumentList 'https://www.memonotepad.com/' 
Start-Sleep -Seconds 3
$command = @'
Hello {Number 1},
Hello {Number 2},
Hello "Number 3",
Hello "Number 4",
'@
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes) | clip.exe
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.SendKeys]::SendWait("$command")

我希望能够将这些数据粘贴到记事本网站上,就像在单个报价中一样。我必须先解码它,还是有其他方法。

请帮忙,谢谢!

请注意,通过模拟交互式键入向另一个应用程序提供输入本身就很脆弱。您应该考虑一个合适的浏览器自动化解决方案,例如Selenium;第三方Selenium PowerShell模块是它的PowerShell包装器,但我不知道它是否仍然有效(该项目正在寻找维护人员(。


通过模拟键入为要粘贴的文本创建Base64编码将无法正常工作。

相反,您必须将文本中的{}字符转义为{{}{}},以便.SendWait方法逐字逐句地使用它们(而不是作为按键表示(如{ESC}(的一部分(:

[System.Windows.Forms.SendKeys]::SendWait(($command -replace '[{}]', '{$&}'))

最新更新