微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从IPv4地址的字符串表示形式获取特定的八位位组

如何解决从IPv4地址的字符串表示形式获取特定的八位位组

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

$Ip = 172.13.23.34
$VLANID = ?
Set-Netadapter -Name "Ethernet" -VlanID $VLANID

如何获取此特定信息?

解决方法

-split,基于正则表达式的字符串拆分 operator 或基于文字-子字符串的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 ...第4个八位位组(34

注意:

  • 如果需要所有个八位位组,请考虑使用[IPAddress]类型的iRon's helpful answer

  • 也就是说,[version][IPAddress]有一个优势:它实现了System.IComparable接口,这意味着您比较 IPv4地址;例如,
    [version] '172.9.23.34' -lt [version] '172.13.23.34'$true

,

使用.Net [IPAddress]类:

([IPAddress]'172.13.23.34').GetAddressBytes()
172
13
23
34

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。