$AuditSuccess = Import-Csv -Path G:\LabLog.csv | Where-Object { $_.Keywords -like "Audit Success" } | Measure-Object | Select-Object count
$AuditFailure = Import-Csv -Path G:\LabLog.csv | Where-Object { $_.Keywords -like "Audit Failure" } | Measure-Object | Select-Object count
$AuditTotal = $AuditSuccess + $AuditFailure
$EventID1 = Import-Csv -Path G:\LabLog.csv | sort | group Keywords | sort $_.EventID | select EventID -last 1
$EventID2 = Import-Csv -Path G:\LabLog.csv | sort | group Keywords | sort $_.EventID | select EventID -last 1
Write-Host "Number of Audit Failures:" $AuditFailure "failures of" $AuditTotal "entries"
Write-Host "Most Common Event ID:" $EventID1
Write-Host "Number of Audit Successes:" $AuditSuccess "successes of" $AuditTotal "entries"
Write-Host "Most Common Event ID:" $EventID2
我对 Powershell 相当陌生,并尝试将其用于作业,我需要导入 csv 日志,然后从中提取特定信息,在本例中是所有日志中的失败和成功数量以及最常见的事件 ID来自失败和成功。
代码的 AuditFailure 和 AuditSuccess 部分在某种程度上起作用,尽管结果显示为 {count = ##} 而不仅仅是数字。真正的问题在于 AuditTotal 和 EventID,它们要么在总计的情况下不产生任何结果,要么在 EventID 的情况下给出空白结果。
我不知道这些是否是用于此目的的最佳命令,并且愿意接受任何帮助来解决这个问题。
Method invocation failed because [System.Management.Automation.PSObject] does
not contain a method named 'op_Addition'.
At line:5 char:1
+ $AuditTotal = $AuditSuccess + $AuditFailure
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (op_Addition:String) [],
RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
Number of Audit Failures: @{Count=13} failures of entries
Most Common Event ID: @{EventID=}
Number of Audit Successes: @{Count=6480} successes of entries
Most Common Event ID: @{EventID=}
抱歉,这是错误输出
Number of Audit Failures: 2469 failures of 19247 entries
Most common Event ID: 5038
Number of Audit Successes: 16778 successes of 19247 entries
Most common Event ID: 4624
尽管数字不同,但它应该是这样的
这是另一种避免多次重新读取 CSV 文件的方法。它还避免通过管道发送东西quite很经常。 [grin]
# fake reading in a CSV file
# in real life, use Import-CSV
$InStuff = @'
EventID, Keywords
1001, Audit Success; SomeOtherWord
1001, Audit Success
2002, NothingRightNow
3003, Audit Failure
4004, Audit Success
5005, IgnoreThisOne
6006, Audit Success
7007, Audit Failure
7007, Audit Failure
'@ | ConvertFrom-Csv
$SuccessList = $InStuff.Where({$_.Keywords -match 'success'})
$SuccessCount = $SuccessList.Count
$SL_MostFrequentEventID = ($SuccessList |
Group-Object -Property EventID |
Sort-Object -Property Count)[-1].Name
$FailureList = $InStuff.Where({$_.Keywords -match 'failure'})
$FailureCount = $FailureList.Count
$FL_MostFrequentEventID = ($FailureList |
Group-Object -Property EventID |
Sort-Object -Property Count)[-1].Name
$FS_TotalCount = $FailureCount + $SuccessCount
Write-Host ''
Write-Host ('Number of Audit Failures {0} out of {1} entries.' -f $FailureCount, $FS_TotalCount)
Write-Host (' Most Common Failure Event ID = {0}' -f $FL_MostFrequentEventID)
Write-Host ('Number of Audit Successes {0} out of {1} entries.' -f $SuccessCount, $FS_TotalCount)
Write-Host (' Most Common Success Event ID = {0}' -f $SL_MostFrequentEventID)
输出 ...
Number of Audit Failures 3 out of 7 entries.
Most Common Failure Event ID = 7007
Number of Audit Successes 4 out of 7 entries.
Most Common Success Event ID = 1001
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)