我有脚本在特定目录中查看文件创建。 我在创建System.IO.FileSystemWatcher后使用Register-ObjectEvent,
效果很好,但是如果我在-Action代码块中设置了一个断点,那么IDE会生成一个:
警告:“D:\ My Stuff \ Desktop \ scripts \ fileWatcher.ps1:15'上的断点线断点不会被击中
此消息发生在我将文件放入我正在观看的目录中之后,我可以看到我的写主机在上述“警告”后立即打印出我的消息。
这是正常的吗? 我需要添加更多代码,并且可以真正使用调试器.. 我应该做什么,所以我可以调试这个代码块?
$fsw = [System.IO.FileSystemWatcher] $path
Register-ObjectEvent -InputObject $fsw –EventName Created -SourceIdentifier DDFileCreated -Action {
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
Write-Host "The file '$name' was $changeType at $timeStamp" -fore green
Out-File -FilePath $logFile -Append -InputObject "The file '$name' was $changeType at $timeStamp"
}
答案 0 :(得分:2)
如果您在同一个ISE或控制台会话中从直接powershell命令触发事件,它实际上有效:
$path = (Resolve-Path '~\').Path
if(Test-Path "$path\newfile.txt"){ del "$path\newfile.txt" }
$fsw = [System.IO.FileSystemWatcher] $path
Register-ObjectEvent -InputObject $fsw –EventName Created -SourceIdentifier DDFileCreated -Action {
$name = $Event.SourceEventArgs.Name # put breakpoint here, via ISE or script
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
Write-Host "The file '$name' was $changeType at $timeStamp" -fore green
}
'foo' | out-file "$path\newfile.txt" # breakpoint hit
但是如果你只是挂钩事件并等待一些外部进程来创建一个文件,我就会看到你遇到的问题。
因此,如果你可以添加一些测试代码来直接触发你的事件,那就去吧。
如果没有,请继续阅读......
当shell或ISE 等待新命令时,您似乎无法进入调试器,只能在执行另一个命令时输入 。
按照这个理论,这是解决方法(对我有用):
Viola,断点击中!