修改说明:
使用下面的建议,我使用了我可以创建的最基本的代码。请注意,我正在使用 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"}
}
这不会触发记事本。如果我看任务管理器,它似乎永远不会填充。我的猜测是,如果这可以解决 - 下面的问题也可以。
我有一个调用 Firefox 并在 Firefox 上触发一堆 SendKeys 的 powershell 脚本(这是一个很长的故事,但尝试使用 web 调用是有问题的。)它可以交互地工作,但是当计划任务运行调用上述的 powershell 脚本时PowerShell脚本...
Firefox 运行......但它不是交互式的(因此 powershell 正在运行并且脚本正在触发。)换句话说,我从来没有看到 Firefox 窗口。我不确定这是否重要,但我的任务管理器窗口中总是有一个 firefox.exe。但是,我的脚本总是挂起,抱怨找不到 Firefox 窗口。
就像我说的,这是交互式的;它通过任务管理器使用与常规交互式脚本相同的凭据(此框中只有 1 个用户,除 admin 外);它没有隐藏,我已经尝试将其作为“以最高权限运行”但无济于事。
有什么想法吗?