none
請問判斷數字範圍[ IP Address Range] RRS feed

  • 問題

  • 請問我需要過濾出數IP字範圍

     $QueryReluse | Where {$_.IPAddress -match "10.[1,6,8].[11..16].[20..180]?"}
    但是結果始終不是我指定的範圍 

    10.1.[11 ~ 16].[20 ~ 180]
    10.6.[11 ~ 16].[20 ~ 180]
    10.8.[11 ~ 16].[20 ~ 180]

    所以進行了多種方式測試

    PS > "10.8.16.99" -match "10.[1,6,8].[11..16].[20..180]"
    True

    PS > "10.8.14.228" -match "10.[1,6,8].[11..16].[20..180]"
    True

    PS > "10.8.14.228" -match "10.8.[11,12,13].[20..180]"
    True

    PS C> "10.8.14.228" -match "10.8.[11,12,13,14].228"
    False

    但是10.8.14.228 卻也是TURE,228應該已經超過180的範圍了.
    就連第三外排除14範圍得到的結果也是TURE
    但是把最後一碼改成固定前面用11,12,13,14 反而卻false了

     請問是什麼原因? 又該如何修改呢?

    謝謝!





    • 已編輯 X_Z_ 2014年8月9日 上午 02:35 修改測試內容
    2014年8月9日 上午 02:24

所有回覆

  • 改成這樣應該可以符合你的IP範圍
    $QueryReluse | Where {$_.IPAddress -match "(10)(\.(1|6|8))(\.1[1-6])(\.([2-9][0-9]|1[0-7][0-9]|180))"}

    把 "(10)(\.(1|6|8))(\.1[1-6])(\.([2-9][0-9]|1[0-7][0-9]|180))" 拆成四個部部分看

    (10) = 10

    (\.(1|6|8)) = .1 或 .6 或 .8

    (\.1[1-6]) = .11到 .16

    (\.([2-9][0-9]|1[0-7][0-9]|180)) = .20~.29 或 .100~179 或 .180

    希望你看得懂我的說明


    • 已提議為解答 William-IT 2014年8月22日 上午 03:34
    • 已取消提議為解答 William-IT 2014年8月22日 上午 05:01
    • 已提議為解答 William-IT 2015年5月14日 上午 06:28
    2014年8月22日 上午 03:34