如何使用 Powershell 验证保留 IP
How to Verify Reserved IP with Powershell
我正在开发一个 powershell 3.0 GWMI 小脚本,它可以提取用于企业环境的计算机信息(ip、mac 地址等)。
我正在尝试查看 NetworkAdapterConfiguration
的 WMI 属性,看看是否有办法检查保留 IP 与动态分配的 IP。
有人可以就如何从 WMI 或其他地方提取它提出建议吗? (preferred) 是否总是表示网络上保留了一个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 拼凑出一个在我的 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
}
我正在开发一个 powershell 3.0 GWMI 小脚本,它可以提取用于企业环境的计算机信息(ip、mac 地址等)。
我正在尝试查看 NetworkAdapterConfiguration
的 WMI 属性,看看是否有办法检查保留 IP 与动态分配的 IP。
有人可以就如何从 WMI 或其他地方提取它提出建议吗? (preferred) 是否总是表示网络上保留了一个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 拼凑出一个在我的 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
}