У меня есть действующий скрипт 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 не отправляются в сеансе пользователя. –