gpt4 book ai didi

Powershell:按IP地址的第二个八位字节过滤服务器列表

转载 作者:行者123 更新时间:2023-12-01 09:50:51 26 4
gpt4 key购买 nike

我正在尝试浏览服务器列表,以便通过 WMI 进行进一步查询。不幸的是,如果脚本遇到无法通过 WMI 连接的服务器,则需要很长时间才能超时。

这些通常是我们 DMZ 中的服务器,并在 IP 地址的第二个八位字节中分配了一个特定的地址,例如 .92。因此,我希望在查询的第一步中过滤掉这些服务器,以便在任何进一步的 WMI 查询中忽略它。

我找到了很多关于如何执行此操作的示例,而且我不能使用 WMI 方法,因为这会破坏对象(例如:Get-WmiObject Win32_NetworkAdapterConfiguration)。

在下面的示例中,服务器“SERVER”的 IP 为 192.9.4.1,我想在第二个八位字节中过滤掉所有带有“.9”的服务器。所以我使用了一个简单的 Test-Connection cmdlet,并旨在拆分结果。在我拆分之前,Test-Connection 的结果是:

$IP4Address = Test-Connection _Computer SERVER -Count 1 | Select IPV4Address

@{IPV4Address=192.9.4.1}

这意味着我需要从头开始数 19 个字符才能得到我的“9”。IPV4地址

  $Octet = $IP4Address -split ("") 
If ($Octet[19] -eq '9')
{write-host "In DMZ"}
Else
{write-host "Not in DMZ"}

在你问之前,我确实尝试过 -split (".") 但这似乎没有任何效果。

那么为什么会出现像 @{IPV4Address=192.9.4.1} 这样的结果呢?有没有更好的解决方案?

最佳答案

-split operator采用 regex 模式,而不是字 rune 字。

在正则表达式中,. 是一个通配符,意思是“任何一个字符”,产生一个空字符串的集合(输入字符串中每个字符之间的位置)。

要匹配文字点,请使用 \

对其进行转义
PS C:\> '10.0.122.12' -split '\.'
10
0
122
12

关于Powershell:按IP地址的第二个八位字节过滤服务器列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38053579/

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