如何使用Powershell验证保留IP



我正在开发一个小的Powershell 3.0 GWMI脚本,该脚本提取计算机信息以用于企业环境(IP,MAC地址等)。

我正在尝试浏览 WMI 属性NetworkAdapterConfiguration以查看是否有办法检查保留 IP 与动态分配的 IP。

有人会就如何从 WMI 或其他地方提取它提供建议吗?(首选)是否始终指示网络上保留了 IP?

我找到了很多关于Powershell和Azure的信息,但在本地盒子上解决这个问题的信息并不多。

正如Ron Maupin所指出的,主机只会知道它们是否被分配了DHCP的地址,而不是是否有保留。但是他们会报告他们从哪个DHCP服务器接收地址。因此,您可以查询该服务器(假设您具有读取权限)。

下面是一个脚本,在通过 WMI 从计算机检索信息后,将与 DHCP 服务器检查是否存在保留。

$ComputerName = "ExampleComputer"
$NetAdapters = Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $ComputerName | ? {$_.DHCPEnabled -eq $True -and $null -ne $_.IPAddress}
If ($NetAdapters) {
    Foreach ($Adapter in $NetAdapters) {
        foreach ($IP in $Adapter.IPAddress) {
            $Reservation = Get-DhcpServerv4Reservation -ScopeId $IP -ComputerName $Adapter.DHCPServer | ? {$_.ScopeId -eq $_.IPAddress}
            If ($Reservation) {
                Write-Output "$IP is reserved on $($Adapter.DHCPServer)."
            } Else {
                Write-Output "$IP does not have a reservation."
            }
        }
    }
} Else {
    Write-Output "No DHCP Enabled NetAdapters with IPAddresses exist on host, likely Static"
}
使用

BenH 提供的上述脚本,我能够使用 AWS-RunPowerShellScript 运行文档从 SSM 拼凑出一个脚本,该脚本在 SSM 的 AWS 服务器机群中工作,如果我的任何实例未针对 DHCP 配置,该文档将给我一个失败状态。我们有一些徘徊在那里,它们使用我们在VCP中设置的DHCP选项,这有助于发现它们。谢谢!

$NetAdapters = Get-WmiObject Win32_NetworkAdapterConfiguration | ? {$_.DHCPEnabled -eq $True -and $null -ne $_.IPAddress} | Select Description
If ($NetAdapters) {
    Foreach ($Adapter in $NetAdapters.Description) {
        Write-Output "DHCP is enabled on $Adapter"
        exit 0
    }
} Else {
    Write-Output "DHCP is not enabled on any adapters on host, likely Static"
    exit 1
}

最新更新