我希望在文件更改时以表格格式显示csv文件的最后20行。为了手动执行此操作,我使用了import-csv $FILENAME | select -last 20 | Format-Table
- 这是有效的
当我尝试将其置于观察文件更改的事件中时
$changed = Register-ObjectEvent $watcher "Changed" -Action {
cls
write-host "File Changed"
import-csv $($eventArgs.FullPath) | select -last 20 | Format-Table
}
写主机线有效,但表从不显示。如果我打破管道,除格式表外,所有步骤都有效。
如何才能以表格格式显示csv文件的最后20行?
编辑: 这是完整的事件对象定义:
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = $searchPath
$watcher.Filter = $file
$watcher.EnableRaisingEvents = $true
$changed = Register-ObjectEvent $watcher "Changed" -Action {
cls
write-host "File Changed"
import-csv $($eventArgs.FullPath) | select -last 20 | Format-Table
}
答案 0 :(得分:0)
@Matt的评论指出了我正确的方向。看来,出于某种原因,输出到Out-Host会导致输出显示Out-String或不管道的位置。 功能代码如下:
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = $searchPath
$watcher.Filter = $file
$watcher.EnableRaisingEvents = $true
$changed = Register-ObjectEvent $watcher "Changed" -Action {
cls
write-host "File Changed"
import-csv $($eventArgs.FullPath) | select -last 20 | Format-Table | Out-Host
}
这实际上是csv文件的尾部。