簡體   English   中英

使用PowerShell在IP地址列表中選擇所有唯一的第三個八位字節

[英]Select all unique third octet in a list of IP addresses with PowerShell

我有一個IP地址列表。 它們都以10.10開始。 我想要第三個八位位組的所有唯一值。 這樣,我就可以計算出該唯一值中有多少個。

10.10.26.251
10.10.27.221
10.10.26.55
10.10.31.12
10.10.12.31
10.10.31.11
10.10.27.15
10.10.26.5

完成后,我想知道我有3個.26網絡設備,2個27等,依此類推。 除了通過拆分分解八位字節並循環遍歷每個八位字節之外,我想不出任何單個內襯。 有什么建議么?

這是一個小變體。 [ 咧嘴 ]在注意到其他答案之前,我已經有了這個-有點不同。

它能做什么 ...

  • 創建一個IPv4地址對象集合以供使用
  • 按計算的屬性將它們分組[第三個八位字節]
  • 為每個結果組創建一個[PSCustomObject]
  • 將其發送到$Octet3_Report變量
  • 在屏幕上顯示

那時,輸出到CSV文件將很容易。 這是代碼...

$IP_List = @(
    [ipaddress]'10.10.26.251'
    [ipaddress]'10.10.27.221'
    [ipaddress]'10.10.26.55'
    [ipaddress]'10.10.31.12'
    [ipaddress]'10.10.12.31'
    [ipaddress]'10.10.31.11'
    [ipaddress]'10.10.27.15'
    [ipaddress]'10.10.26.5'
    )

$Octet3_Report = $IP_List |
    Group-Object -Property {$_.ToString().Split('.')[2]} |
    ForEach-Object {
        [PSCustomObject]@{
            Octet_3 = $_.Name
            Count = $_.Count
            }
        }

$Octet3_Report

屏幕輸出...

Octet_3 Count
------- -----
26          3
27          2
31          2
12          1

就像我在事后弄清楚了。 返回包含dns記錄。 IP地址存儲在recorddata中。 我拉下IP地址的末尾。 然后僅獲取范圍進行循環,並使用foreach循環進行計數以使其更干凈。

$DNSRecordCounts = @()
$Ranges = ($Return | where-object {$_.recorddata -like "10.10.*"}).recorddata -replace "\.\d{1,3}$" | select -Unique
foreach ($range in $Ranges) {
     $DNSRecordCounts += [pscustomobject][ordered]@{
          IPRange = $range
          Count = ($Return | Where-Object {$_.recorddata -like "$($range).*"}).Count
     }
}

根據您的問題以及我從您自己的答案中可以得出的結論,如果您正在尋找類似於“慣用” PowerShell的內容,則需要以下內容:

$Return `
| Select-Object -ExpandProperty recorddata `
| ForEach-Object {
    $_ -match "\d+\.\d+\.(?<octet>\d+)\.\d+" | Out-Null
    $Matches.octet
} `
| Group-Object `
| ForEach-Object {
    [PSCustomObject]@{
        Octet = $_.Name
        Count = $_.Count
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM