我有一个名为$Ip的变量。该变量的内部IP地址为“172.13.23.34”。我想获取第三个八位位组或172.13之间的下一个字符。 .34(在这种情况下为字符串数字23)并存储在另一个变量中,以使用以下命令设置VLANID。

$Ip = 172.13.23.34
$VLANID = ?
Set-Netadapter -Name "Ethernet" -VlanID $VLANID
我如何获得此特定信息?

最佳答案

虽然 -split ,基于正则表达式的字符串拆分运算符或基于文字子字符串的 Split() 方法通常是使用分隔符将字符串拆分为标记的合适工具,但在您的情况下,有一个更简单的解决方案:

# Trick: [version] splits the string into its numerical components.
#        The .Build property value corresponds to the 3rd octet.
PS> ([version] '172.13.23.34').Build
23
[version] ( System.Version )类型(用于版本号)可以理解由.分隔的4个组件编号,它们看起来像IPv4地址。此类实例的属性映射到IPv4地址的八位字节,如下所示:
  • .Major ...第一个八位位组(172)
  • .Minor ...第二个八位位组(13)
  • .Build ...第三个八位字节(23)
  • .Revision ...第四字节(34)

  • 注意:
  • 如果需要所有八位位组,请考虑使用iRon's helpful answer,它更适合使用[IPAddress]类型。
  • 就是说,[version][IPAddress]有一个优势:它实现了 System.IComparable 接口(interface),这意味着您可以比较IPv4地址。例如。,[version] '172.9.23.34' -lt [version] '172.13.23.34'$true
  • 关于string - 从IPv4地址的字符串表示形式获取特定的八位位组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63710588/

    10-11 07:10