繁体   English   中英

预定的Powershell任务无法与浏览器交互

[英]Scheduled Powershell task can't interact with browser

修改后的描述:

使用下面的建议,我使用了我可以创建的最基本的代码。 请注意,我在下面的“启动过程”中使用Powershell社区扩展。 我不知道这是否会影响事情。

我有以下功能

function Populate-Notepad
{
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic')
Start-Process Notepad 
[Microsoft.VisualBasic.Interaction]::AppActivate("Untitled")
[System.Windows.Forms.SendKeys]::SendWait("blahblahblah")
return
}

可以很好地进行交互。

我有一个名为Parse的函数,该函数查询POP帐户,如果找到消息,请采取措施。 因此,所考虑的操作是(定义了$ helptext并且它可以正常工作-正确地对此进行了解析。)

Switch ($cmd)
{
"HELP"     {$text = $helptext}
"NOTE"     {populate-notepad}
default    {$msg = $msg + "Invalid command: $command `n"}
}

火的记事本。 如果我看着任务管理器,它似乎永远不会出现。 我的猜测是,如果可以解决-以下问题也可以解决。


我有一个Powershell脚本,可以调用Firefox并在Firefox上触发一堆SendKey(这是一个很长的故事,但是尝试使用Web调用是有问题的。)它可以很好地交互工作,但是当计划任务运行了一个调用上述脚本的Powershell脚本时Powershell脚本...

Firefox运行...但是它不是交互式的(因此,powershell正在运行,脚本正在启动。)换句话说,我从没有看到Firefox窗口。 我不确定这是否重要,但是在任务管理器窗口中始终存在firefox.exe。 但是,我的脚本总是挂起,抱怨找不到Firefox窗口。

就像我说的,这是互动的。 它通过任务管理器使用与常规交互式脚本相同的凭据(此框上只有1个用户(管理员除外)); 它没有被隐藏,我尝试将其作为“以最高特权运行”而无济于事。

有什么想法吗?

我在尝试执行相同的操作时遇到了一些问题, Powershell脚本在另一个会话/上下文中运行(正如我在此处阅读的那样, 操纵桌面元素的Powershell脚本不适用于Scheduler )。

因此,您不能使用gui。

我的解决方案是使用此

    (new-object -com wscript.shell).run("http://localhost/",3)

这将打开一个全屏的本地网站,并专注于默认的Web浏览器。 之后,您可以使用sendkeys。

附带说明一下,如果我要使用AppActivate,我将通过捕获并使用ID来确保它确实是我刚刚开始的过程。

    $iex = Start-Process 'C:\Program Files (x86)\Internet Explorer\iexplore.exe' -passthru 'http://localhost/'
    start-sleep 3
    [Microsoft.VisualBasic.Interaction]::AppActivate($iex.Id)

但是,这不能解决问题,

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM