首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改现有脚本中的DNS查找

更改现有脚本中的DNS查找
EN

Stack Overflow用户
提问于 2021-06-23 14:39:06
回答 1查看 37关注 0票数 0

我有一个分析日志文件的脚本,它匹配IP,消息编号,日期和DNS名称。但是因为我解析的每一行都是DNS,所以需要很长的时间。在我得到所有匹配后,我将它们一起计数,以了解哪个ip发送了多少消息。现有脚本为:

代码语言:javascript
复制
$global:result = Get-Content $path | ForEach-Object {
    if($_ -match '(\d{2}\.\d{2}\.\d{4} \d{2}:\d{2}:\d{2}).*\(((?:\d{1,3}\.){3}\d{1,3})\) disconnected\.?\s+(\d+) message\[s\]'){
        try {
            #$dns = [System.Net.Dns]::GetHostEntry($matches[2]).HostName
        }
        catch { 
            #$dns = 'Not available' 
        }
        [PsCustomObject]@{
            IP       = $matches[2]
            Messages = [int]$matches[3]
            #DNSName  = $dns
            Date     = [datetime]::ParseExact($matches[1], 'dd.MM.yyyy HH:mm:ss', $null)
        }}

        $i++
    if($i % 1000 -eq 0){
        Write-Progress -activity "Searching for matches" -status "Scanned: $i of $($length)" -percentComplete (($i / $length)  * 100)
    
 }}

 Write-Progress -activity "Searching for matches" -status "Scanned: $i of $($length)" -percentComplete (($i / $length)  * 100)

 #Messages Counted
 $global:cumulative = $result | Group-Object -Property IP | ForEach-Object {
    [PsCustomObject]@{
        IP = $_.Name
        Messages = ($_.Group | Measure-Object -Property Messages -Sum).Sum
        #DNSName = $_.Group[0].DNSName
        Date    = ($_.Group | Sort-Object Date)[-1].Date
    }
}

在对日志文件中获得的所有不同in进行排序后,如何才能将其作为结果之一显示在$cumulative中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-23 16:22:19

只需将代码移动到为$global:cumulative定义自定义对象的位置

代码语言:javascript
复制
$global:result = Get-Content $path | ForEach-Object {
    if($_ -match '(\d{2}\.\d{2}\.\d{4} \d{2}:\d{2}:\d{2}).*\(((?:\d{1,3}\.){3}\d{1,3})\) disconnected\.?\s+(\d+) message\[s\]'){
        [PsCustomObject]@{
            IP       = $matches[2]
            Messages = [int]$matches[3]
            Date     = [datetime]::ParseExact($matches[1], 'dd.MM.yyyy HH:mm:ss', $null)
        }}

        $i++
    if($i % 1000 -eq 0){
        Write-Progress -activity "Searching for matches" -status "Scanned: $i of $($length)" -percentComplete (($i / $length)  * 100)
    
 }}

 Write-Progress -activity "Searching for matches" -status "Scanned: $i of $($length)" -percentComplete (($i / $length)  * 100)

 #Messages Counted
 $global:cumulative = $result | Group-Object -Property IP | ForEach-Object {

    try {
        $dns = [System.Net.Dns]::GetHostEntry($_.Name).HostName
    }
    catch { 
        $dns = 'Not available' 
    }

    [PsCustomObject]@{
        IP = $_.Name
        Messages = ($_.Group | Measure-Object -Property Messages -Sum).Sum
        DNSName = $dns
        Date    = ($_.Group | Sort-Object Date)[-1].Date
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68094743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档