0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

netstatよりGet-NetTCPConnectionを使おう

Posted at

最近PowerShellを使って便利だなと思ったことがあったので、メモを残します。

TCP通信でプロセス名とURLを同時に表示する

Windowsで通信状況を見る場合に、netstatを実行し、表示されたPIDや通信先IPアドレスを見て、tasklistやDNSキャッシュを調べていました。これではさすがに面倒くさいのでPowerShellで自動化処理をしてみました。

$proc = @{}
Get-Process | foreach { $proc.add($_.Id,@($_.ProcessName,$_.Path)) }
$dns = @{}
Get-DnsClientCache | foreach { if (($_.Data -ne $null) -and !$dns.ContainsKey($_.Data)) { $dns.add($_.Data,$_.entry) }}
Get-NetTCPConnection | foreach { New-Object PSCustomObject -Property @{ "dstaddr"=$_.RemoteAddress;"dns"=$dns[$_.RemoteAddress];"dstport"=$_.RemotePort;"state"=$_.state;"PID"=$_OwingProcess;"Proc"=$proc[[int]$_.OwningProcess][0];"path"=$proc[[int]$_.OwningProcess][1] }} | format-table dstaddr,dstport,state,PID,Proc,Path,dns
  • プログラムの説明
    1~2行目で、PIDからプロセス名とパスを検索できる辞書型変数$procを作っています。
    3~4行目で、IPアドレスからURLを検索できる辞書型変数$dnsを作っています。
    5行目で、PowerShell版nestatのGet-NetTCPConnectionの出力に、上の辞書型変数$proc$dnsを使って、プロセス名とパス、URLを追加しています。

イベントログをCSVファイルに出力したい

Windowsのイベントビューアーでの検索が辛いので、PowerShellで必要なデータをcsvファイル化する方法を調べてみました。これで、テキストエディタやExcelで処理できるので、ログ検索が楽になると思います。

Get-EventLog -Logname System -After "2024/08/01 08:00:00" -Before "2024/08/01 09:00:00" | Select-Object -property EventID,TimeGenerated,UserName,Message | Export-Csv -Path "event.csv" -Encoding UTF8 -NoTypeInformation -Append
  • プログラムの説明
    Get-EventLogコマンドで、イベント情報を取ってきます。
    -Lognameオプションで、Systemを選んでいます。
    -After-Beforeオプションで、抽出期間を選んでいます。
    Select-Objectコマンドで、パイプに流すオブジェクトを選別しています。
    Export-Csvコマンドで、CSVファイルとして保存しています。
    -Appendオプションを使い、先にファイルがあった場合には追記するようにしています。

コマンドプロンプト対比表

PowerShellを使えば他にも色々便利になると思いますが、今は思いつかないので、今後のためにコマンドプロンプトの代わりに使えるPowerShellのコマンドレットを載せておきます。

コマンドプロンプト PowerShell
arp -a Get-NetNeighbor
netstat -a Get-NetTCPConnection
ipconfig /all Get-NetIPConfiguration -detail
Get-NetIPAddress
ping x.x.x.x Test-Connection x.x.x.x
tracert x.x.x.x Test-NetConnection x.x.x.x -traceroute
schtasks Get-ScheduledTask
tasklist Get-Process
systeminfo Get-ComputerInfo
ipconfig /displaydns Get-DnsClientCache
Get-EventLog

あとがき

久しぶりにPowerShellを使うと思ったとおりの操作ができないので、プログラム作成に難儀しました。
プログラムを作成した際には、小まめにメモを残しておくのは重要かと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?