使用PowerShell将DHCP保留转换为静态IP

下面的PowerShell功能可以将一个或多个服务器NIC的DHCP保留转换为固定IP配置。除了IP地址和子网掩码,它还将处理通常为固定IP配置的其他设置,例如默认网关和DNS服务器。

Get-IPAddressPretty函数^

在整个这篇文章中,IP地址将被更改并经常检查。每当您执行此操作时,如果只希望查看相关信息,则可以运行以下命令:

结果如下图所示:

IP-address-info

IP地址信息

这将提供您需要用于我们目的的所有信息(计算机名称,NIC名称,IP地址,子网掩码,以及它是手动还是通过DHCP分配)。唯一的问题是每次键入的命令都很长。

为了避免所有类型的输入,我创建了一个函数,该函数返回相同的信息,而无需我们想要和不想要的所有东西。我称它为Get-IPAddressPretty:

Get-IPAddressPretty-in-action

使IPAddressPretty发挥作用

如您所见,结果与上面相同,但是命令短得多。默认情况下,它显示计算机上所有网卡的IPv4地址。如果需要,您可能会更细化。

有了这个,让我们忙吧!

将DHCP保留转换为静态IP 

首先,第一件事:这将适用于Microsoft DHCP服务器。它不能在也配置为小型子网的DHCP服务器或其他类型的DHCP服务器的Cisco交换机上使用。但是,如果其他风味支持PowerShell,则可以改编功能/命令。

有了这个小的免责声明,让我们首先看一下创建保留的函数的逻辑。

  • 您提供要为其创建预订的计算机名称和网络接口。如果它是一台具有多个NIC的计算机,则可以选择将其所有NIC的当前DHCP保留转换为固定IP配置。
  • 您还需要提供在其上创建预留的DHCP服务器。该功能提供服务器名称的自动完成功能(使用Tab或Ctrl + Space)。
  • 如果提供了特定的NIC,则该功能将验证特定服务器上NIC的名称。如果未提供有效名称,则该函数将发出警告,要求您提供有效的NIC名称并停止。
  • 验证NIC后,该功能将检索该NIC的MAC地址。
  • 该功能根据MAC地址检查所选DHCP服务器上是否有预留。如果没有,该功能将通知用户并停止。
  • 同样,如果有一个以上的保留(例如,两个或两个以上在不同范围内的保留),该功能将警告用户并停止。通常,这表示配置错误(有人在创建新预订之前没有清理旧预订)。
  • 假定已找到该NIC的保留,则该功能将使用保留中定义的IP地址配置NIC。它还根据DHCP作用域分配子网掩码。
  • 对于默认网关,此功能从最细粒度的级别到最广泛的级别寻找以下设置:
    • 它首先检查预订选项。
    • 然后,它检查范围选项(如果在保留级别未配置任何内容)。
    • 最后,它检查服务器选项(如果在保留和作用域级别未定义任何内容)。
    • 如果DHCP服务器在任何级别都没有为默认网关定义选项,则NIC不会配置默认网关。
  • DNS使用相同的逻辑(用于默认网关):从最精细的设置检查到最广泛的设置(保留>范围>服务器)。
  • 一旦配置了IP地址,子网掩码和其他选项,就将NIC的DHCP禁用。
  • 最后,从DHCP服务器中删除对NIC的保留。

Convert-DhcpV4ReservationToStaticIp函数

在下面,您将看到实现此目标的代码:

现在您知道Convert-DhcpV4ReservationToStaticIp的作用,让我们来看一下它的作用。

分步示例

首先,让我们看一看客户端计算机的IP配置(称为“ Mgmt”)。

Current-IP-address-before-any-changes.-Notice-the-PrefixOrigin-is-DHCP

更改前的当前IP地址。注意PrefixOrigin是DHCP

请注意,NIC“私有”地址的PrefixOrigin是DHCP。让我们看看DHCP服务器上是否有计算机Mgmt的保留。

Viewing-DHCP-reservation

查看DHCP预留

实际上,我们的计算机(Mgmt)在DHCP服务器上有保留。现在,使用Convert-DhcpV4ReservationToStaticIp将此保留转换为静态IP。我们将使用详细模式来查看有关该功能做什么的更多详细信息。

Convert-the-DHCP-reservation-to-static-IP-1

将DHCP保留转换为静态IP

将DHCP保留转换为静态IP

如您在屏幕快照中所见,详细模式描述了该功能执行的所有步骤。现在,让我们检查计算机的IP配置:

Checking-IP-configuration-1

检查IP配置

第一次运行Get-IPAddressPretty和现在运行NIC之间的区别是NIC的Prefix Origin是Manual而不是DHCP。我们也来看看NIC属性。

The-IP-address-subnet-mask-and-DNS-settings-are-static-1

IP地址子网掩码和DNS设置是静态的

如您所见,IP和DNS配置是静态的。它们与DHCP保留中定义的相同(如上图所示,从DHCP管理控制台中看到)。

说到DHCP保留…

No-more-DHCP-reservations-for-our-computer

不再为我们的计算机保留DHCP

预留已从DHCP服务器中删除。

此时,如果我们尝试再次运行该命令,将会收到一条错误消息,指出没有为我们的计算机保留指定的NIC。

The-command-warns-that-no-reservation-has-been-found-for-the-ServerNIC-1

该命令警告未找到ServerNIC的预留空间

该命令警告未找到服务器/ NIC的预留空间

运行命令将引发警告,指出未为我们的计算机/ NIC找到保留

未经允许不得转载:励志言 » 使用PowerShell将DHCP保留转换为静态IP

赞 (0) 打赏

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏