所以不久前我写了一个 Powershell 脚本,它可以解析 IIS 日志,然后做一些事情(电子邮件、创建报告和其他漂亮的事情)。好吧,我正在努力从 C# 控制台应用程序中执行它。在我发布我的代码之前,我只想澄清一件事,我想尽量远离日志解析器来解析这个日志原因有很多原因,但特别是一个,当你可以根据自己的喜好编写其他东西时,为什么还要使用它; )。所以这是我的代码
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 脚本它运行良好并显示了很多行。任何人都可以提供的任何见解都会很棒。