2017-11-19 23 views
0

目標は、このawkのファイルを取ることです。PowerShellのログファイルの処理

Powershellで同等の出力に変換します。

私は現在、次のコマンド

gc sample.log | sls "INext-DROP-DEFLT" | ForEach-Object { $_.line -match "SRC=(.*?)\s" > $null;$matches[1] + ":" + $matches[2] } | sort | Get-Unique | ForEach-Object -Begin { $LastSource = " "; $sources = 0; $ports = 0; } -process { $ip = $_.split(":")[0]; $port = $_.split(":")[1]; if($1 -ne $LastSource){print $1, $2 $LastSource = $1 $sources += 1 $Ports += 1 } else { print $2 $Ports += 1 } } END { print "\n\n" "Total Sources = ", $sources p 
rint "Unique Ports Scanned = ", $Ports } 

を持って続行するかどうかはenter image description here

わからないこのエラーが発生しました。参考のため

ログファイル:続行する方法 LogFileTinyUplaod

答えて

1

わかりません。

  • まず、いくつかのPowershell Best Practices(コードのフォーマット、インデント、...)を適用します。あなたの目標は、唯一のホストへの書き込みをしない限り、それはavoid Write-Hostすることをお勧めしますが、
  • その後、-endENDを交換した後、あなたは他のエラーの多くを得る...

次のコードスニペットは、(仕事をする必要があります;代わりに、後で使用するために結果を保存するためにPSCustomObjectを作成します)。

Get-Content D:\Downloads\SO\sample.log | 
    Select-String -Pattern "INext-DROP-DEFLT\s.*SRC=(.*?)\s.*DPT=(.*?)\s" -AllMatches | 
    ForEach-Object {$_.Matches} | 
     ForEach-Object {$_.Groups[1].Value + ':' + $_.Groups[2].Value} | # PSCustomObject place 
     Sort-Object | 
      Get-Unique | 
      ForEach-Object -Begin { 
       $LastSource = [string]::Empty; 
       $sources = 0; 
       $ports = 0; 
      } -process { 
       $ip, $port = $_.split(":"); 
       if ($ip -ne $LastSource) { 
        Write-Host "`n$ip $port" -NoNewline; # print Source IP and Destination Port 
        $LastSource = $ip; 
        $sources += 1; 
        $Ports += 1; 
       } else { 
        Write-Host " $port" -NoNewline; # Print DestPort to current line (multi port per IP) 
        $Ports += 1; 
       } 
      } -end { 
       Write-Host "`nTotal Sources = $sources"; 
       Write-Host "Unique Ports Scanned = $Ports"; 
      } 
+0

これは私が探していたものです。正しい最終カウントを表示しないので、もう少し編集しなければならないでしょうが、これは私にははるかに意味があります。 –

関連する問題