gpt4 book ai didi

powershell - 从日志文件中提取值

转载 作者:行者123 更新时间:2023-12-03 00:47:14 25 4
gpt4 key购买 nike

我试图从我们的VDI环境的登录监视产品解析PowerShell中的日志。它写入一个日志文件,并写入以下行:

2016-12-15T14:15:02.863 INFO (0908-0bd8) [LogonMonitor::LogSummary] Logon Time: 4.03 seconds

我想做的是仅从字符串中解析出“4.03”,并将其存储在值数组中。我可以通过执行以下操作从日志文件中选择整个字符串:
$LogPath = "\\file-svr\Logs\"

$strings = Select-String -path $LogPath\*.txt -pattern "[LogonMonitor::LogSummary] Logon Time:" -AllMatches -simplematch

foreach ($string in $strings) {
$found = $string -match '\d\.'
if ($found) {
$time = $matches[1]
$array[$i] = $time
}
$i++
}

有没有更好的方法可以做到这一点?

最佳答案

是的,您可以仅在Select-String模式中使用捕获组并获取信息。

这是一个单线示例:

$array = Select-String -path $scripts.tmp -Pattern "\[LogonMonitor::LogSummary\] Logon Time:\s*([\d|.]+)" | ForEach-Object { $_.Matches.Groups[1].Value }

或者,更易读的 版本:
$regex = "\[LogonMonitor::LogSummary\] Logon Time:\s*([\d|.]+)"

$array = Select-String -path $scripts.tmp -Pattern $regex |
ForEach-Object {
$_.Matches.Groups[1].Value
}

关于powershell - 从日志文件中提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41173468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com