2

タイマー オブジェクトを登録し、数分ごとにキーを送信する機能している 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 にモジュールをインポートする必要があるのでしょうか?
4

1 に答える 1