我有一個正常運行的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