タイマー オブジェクトを登録し、数分ごとにキーを送信する機能している 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」するので、イベントを簡単に停止できます
Unregister-Event -SourceIdentifier Timer.Elapsed
2回入力するだけでエラーがスローされるため、機能しているようです。
- 私のバッチファイルには別のコードが必要なのでしょうか? たぶん「エコー」などです。あまり詳しくありません
- Powershell にモジュールをインポートする必要があるのでしょうか?