0

I've created a a FileSystemWatcher object that I have events registered for. I intend that this script will run an execute mocha in the same directory. I can execute mocha from the script using:

$testProgram = "mocha"
& $testProgam

I get the results.. ...

3 test complete....

Now when I take this same code and wrap it in the event like this...

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

I get this...

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

Where are the results of the & testProgram?

4

1 回答 1

0

我没有PS来测试这个atm,所以如果我错了,请纠正我。我可以想到您可以检查的多个问题:

  • 你有一个错字。在您的操作块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 回答