操作桌面元素的Powershell脚本不适用于Scheduler

时间:2012-10-04 05:49:39

标签: powershell windows-7 scheduled-tasks

当我手动启动时,我有2个脚本正常工作。

将鼠标光标移出屏幕:

[system.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | out-null
[System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point(1999,100)

如果打开标题为HUD的Chrome浏览器,请将其置于自助服务终端模式:

[void] [System.Reflection.Assembly]::LoadWithPartialName("'Microsoft.VisualBasic")             
[Microsoft.VisualBasic.Interaction]::AppActivate("Hud - Google Chrome")
[void] [System.Reflection.Assembly]::LoadWithPartialName("'System.Windows.Forms")     
[System.Windows.Forms.SendKeys]::SendWait("{F11}")

如果我将它们放在Windows 7上的预定任务中,它们将无法正常工作。

如果我启动一个调用脚本文件的批处理文件

,它们就可以工作
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noninteractive -command "&C:\Users\Miniuser\Documents\chromeHUD.ps1"

但是如果我在计划任务中启动批处理文件则不行。

似乎在计划任务中,我无法访问我的UI元素。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

当脚本作为计划任务运行时,它在不同的上下文/会话中运行,并且没有可以“查看”的GUI,也没有任何与现有会话交互的方式。

答案 1 :(得分:1)

当alroc回答时,它确实在另一个上下文/会话下运行。

我无法找到任何解决方法来传递这个...使用纯PowerShell ...但是我能够用wscript完成工作。

在您的PS脚本中

,使用此

打开您的Chrome
    (new-object -com wscript.shell).run("http://localhost/",3)

它将全屏打开默认浏览器。我可以在任务调度程序中使用sendkeys!

答案 2 :(得分:0)

将脚本作为必须与桌面交互的计划任务运行 你必须创建一个文件夹(或64位窗口上的两个): (32位,总是)C:\ Windows \ System32 \ config \ systemprofile \ Desktop (64位)C:\ Windows \ SysWOW64 \ config \ systemprofile \ Desktop