我有一个正常运行的PowerShell脚本,它注册一个计时器对象并每隔几分钟发送一次密钥。PowerShell脚本无法从批处理文件正常运行
$wshell = New-Object -ComObject Wscript.Shell
...
function fctName {
param([ScriptBlock] $action)
...
Register-ObjectEvent -InputObject $timer -EventName Elapsed -SourceIdentifier Timer.Elapsed -Action $action
}
fctName {
...
$wshell.sendkeys("{ESC}")
}
在Windows PowerShell ISE中,脚本工作正常,没有任何错误。 不过,我很想从一个批处理文件,在其中我只写了这条线运行:
Powershell.exe -noexit C:\...\ScriptName.ps1
不会引发任何错误,但它不会做我想做的,这是为了阻止Windows会闲置。
因为我-noexit“cmd窗口,我可以很容易地与
Unregister-Event -SourceIdentifier Timer.Elapsed
这似乎是工作,因为只有输入两次抛出一个错误停止该事件。
- 难道说我的批处理文件需要不同的代码吗? 也许“回声”等。我不是很熟悉它
- 难道是我必须在Powershell中导入模块吗?
我认为问题是生活在不同会话/上下文中的计划任务相对于登录用户之一。 SendKeys不会在实际的用户会话中发送。 – 2013-04-10 14:44:43