簡體   English   中英

在Register-ObjectEvent中使用Format-Table

[英]Using Format-Table in Register-ObjectEvent

當文件更改時,我想以表格格式顯示csv文件的最后20行。 要手動執行此操作,我使用了import-csv $FILENAME | select -last 20 | Format-Table import-csv $FILENAME | select -last 20 | Format-Table 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
}

@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文件的尾巴。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM