そのため、しばらく前に、IIS ログを解析し、いくつかの処理 (電子メール、レポートの作成、およびその他の気の利いた処理) を実行する Powershell スクリプトを作成しました。さて、私はC#コンソールアプリからそれを実行することに取り組んでいます。コードを投稿する前に、1 つのことを明確にしたいと思います。ログ パーサーから離れて、多くの理由でこのログの原因を解析したいと思います。 )。だからここに私のコードがあります
PS スクリプト:
$t1 =(get-date).AddMinutes(-10)
$t2 =$t1.ToUniversalTime().ToString("HH:mm:ss")
$IISLogPath = "C:\inetpub\logs\LogFiles\W3SVC1\"+"u_ex"+(get-date).AddDays(-3).ToString("yyMMdd")+".log"
$IISLogFileRaw = [System.IO.File]::ReadAllLines($IISLogPath)
$headers = $IISLogFileRaw[3].split(" ")
$headers = $headers | where {$_ -ne "#Fields:"}
$IISLogFileCSV = Import-Csv -Delimiter " " -Header $headers -Path $IISLogPath
$IISLogFileCSV = $IISLogFileCSV | where {$_.date -notlike "#*"}
$tape = $IISLogFileCSV | Format-Table time,s-ip,cs-uri-stem | Out-Host
これまでの C# アプリ:
Runspace runSpace = RunspaceFactory.CreateRunspace();
runSpace.Open();
Pipeline pipeline = runSpace.CreatePipeline();
pipeline.Commands.AddScript(@"D:\PS-Scripts\IIS\IISLogScan.ps1");
Collection<PSObject> results = pipeline.Invoke();
foreach (PSObject obj in results)
{
Console.WriteLine(results);
}
Console.ReadLine();
今、アプリを実行すると何も表示されず、ブレークポイントを設定すると、foreach 内に表示するものが何もないと表示され、ps1 スクリプトを実行している原因に完全にハングアップしています。完全に機能し、多くの行が表示されます。誰もが与えることができる洞察は素晴らしいでしょう。