0

FileSystemWatcherイベントが登録されているオブジェクトを作成しました。mochaこのスクリプトは同じディレクトリで実行される予定です。mocha次を使用してスクリプトから実行できます。

$testProgram = "mocha"
& $testProgam

私は結果を得る... ...

3 test complete....

この同じコードを取得して、このようにイベントにラップすると...

$changed = Register-ObjectEvent $watcher "Changed" -Action {
  clear
  write-host "Running Test Scripts.........."
  write-host "Changed: $($eventArgs.FullPath)"
  & testProgram
}

私はこれを得る...

Running Test Scripts.......................
Changed: C:\files\main.js

の結果はどこにあり& testProgramますか?

4

1 に答える 1

0

私はこの atm をテストするための PS を持っていないので、間違っていたら訂正してください。あなたがチェックアウトできる複数の問題を考えることができます:

  • タイプミスがあります。あなたのアクション ブロックでtestProgramは、前にドル記号がありません。
  • ObjectEvent は、スクリプトからパラメーターを取得できない別のスコープでアクション ブロックを実行すると確信しています。たとえば、を使用してみることができます$global:testProgram
  • ここでは相対パスが機能しない場合があります。「mocha」実行可能ファイルまたはそれが何であるかへの絶対パスが必要になる場合があります。

testprogram編集:可能性のあるスコープの問題(アクションブロック内の変数に到達する)に対して試すことができる解決策を見つけました。Shay Levi は、このコード サンプルをTechnetに投稿しました。パラメータを使用して、-MessageData入力をアクション ブロックに渡します。彼のコードサンプルは次のとおりです。

#Use the -MessageData parameter:

Register-ObjectEvent ... -MessageData $foo

#Access the variable from within the action block

$event.MessageData
于 2013-02-04T22:20:29.903 に答える