2013/09/04
TCP/IP接続監視
ぎたぱそ氏がPowerShell で TCP/IP 接続監視をしたい | guitarrapc.wordpress.comというエントリを上げておられます。
ループを回して定期的に出力するとTableが一つにまとまらない、とのことですが、パイプラインの先頭で無限リストを出力するようにすればOKです。
あとデータの再利用を考えるなら、最初からCSVで出力しておくのが無難かと思います。
画面出力と同じものをファイル出力するだけで良いなら、Tee-Objectコマンドレットでもいいかと。
ついでに本体の関数も何となく短くしてみました。
function Get-NetTCPConnectionCheck { $result = [ordered]@{Date = Get-Date} echo Listen, Established, TimeWait, CloseWait, LastAck | %{$result[$_] = 0} Get-NetTCPConnection | group state -NoElement | ?{$result.Contains($_.Name)} | %{$result[$_.Name] = $_.Count} [PSCustomObject]$result } &{process { while($true) { Get-NetTCPConnectionCheck sleep -Seconds 1 } } } |% { $_ | Export-Csv -Append C:\Users\daisuke\Documents\test.csv $_ } | Format-Table
以上。
2007/01/08
ファイル出力する際の文字コードには注意が必要
PowerShellにおいて、リダイレクト(> or >>)を使ってテキストファイルにテキストを書き込むと、Unicodeで書き込まれます。
が、Set-ContentやAdd-Contentコマンドレットを使うと、Shift-JIS/US-ASCIIで書き込まれます。
ということは、両者を併用して同じファイルに書き込むことは出来ません。(たぶん)
回避策は、リダイレクトのコマンドレットバージョンとして、Out-Fileコマンドレットがありますが、パラメータに-encoding defaultと指定すると、Shift-JIS/US-ASCIIで書き込まれます。これならAdd-Contentコマンドレットと文字コードを合わせられます。
が、面倒ですね…。リダイレクトで出力されるデフォルト文字コードを指定できればいいんですが…。
元記事:http://blogs.wankuma.com/mutaguchi/archive/2007/01/08/54993.aspxCopyright © 2005-2016 Daisuke Mutaguchi All rights reserved
mailto: mutaguchi at roy.hi-ho.ne.jp