如何使用Powershell验证保留的IP

时间:2017-01-24 13:57:03

标签: powershell networking scripting powershell-v3.0 dhcp

我正在研究一个小型的PowerShell 3.0 GWMI脚本,它可以提取计算机信息,以便在企业环境中使用(ip,mac地址等)。

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

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

我为powershell和Azure找到了很多信息,但在本地方框中找不到这些信息。

2 个答案:

答案 0 :(得分:2)

正如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"
}

答案 1 :(得分:1)

使用 BenH 提供的上述脚本,我能够使用 AWS-RunPowerShellScript 运行文档拼凑出一个脚本,该脚本可以在 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
}