所以我来这里是为了问另一个问题,我在识别问题方面取得了一些进展。我有一个不允许使用 DHCP 的网络,我们所有的 MTR 电脑都处于静态状态。它们在每晚重启后会间歇性地出现这种情况,
InterfaceAlias : Ethernet 3
InterfaceIndex : 21
InterfaceDescription : PANGP Virtual Ethernet Adapter
NetProfile.Name : Unidentified network
IPv4Address : 169.254.24.253
10.245.2.160
IPv4DefaultGateway :
DNSServer : 134.20.248.5
134.20.248.21
您会注意到,有一个链接本地地址优先于设置的静态地址,Wireshark 实际上正在看到 DHCP 请求发出。 碰撞端口、禁用并重新启用 Nic,甚至拔下以太网电缆并将其放回原位,都可以解决此问题,它们将返回到其静态地址。 在我们追踪问题的同时,我正在尝试部署一个 Power shell 脚本来简单地碰撞 PC 的 NIC 这是我所拥有的,但它目前还不太管用(Powershell 的超级新手);只是试图让 Wifi 适配器禁用。
这里是我的测试环境的示例:
InterfaceAlias : Ethernet 3
InterfaceIndex : 21
InterfaceDescription : PANGP Virtual Ethernet Adapter
NetProfile.Name : Unidentified network
IPv4Address : 10.245.2.160
IPv4DefaultGateway :
DNSServer : 134.20.248.5
134.20.248.21
InterfaceAlias : Wi-Fi
InterfaceIndex : 19
InterfaceDescription : Intel(R) Wi-Fi 6 AX201 160MHz
NetProfile.Name : Space Interweb
IPv4Address : 192.168.1.154
IPv4DefaultGateway : 192.168.1.1
DNSServer : 192.168.1.1
InterfaceAlias : Ethernet 2
InterfaceIndex : 13
InterfaceDescription : Check Point Virtual Network Adapter For Endpoint VPN Client
NetAdapter.Status : Disconnected
我正在尝试的代码
PS C:\Users\flatbe> if (Get-NetIPConfiguration | ? IPv4Address -match "10"){ Get-NetIPConfiguration | ? interfaceAlias -match "Wi" | Disable-NetAdapter -Confirm:$false }
从那时起我就尝试过
>> Get-NetIPConfiguration |
>> ? InterfaceIndex -match "19" |
>> Restart-NetAdapter
哪个有效,但是这不行
>> Get-NetIPConfiguration |
>> ? IPv4Address[] -match "141" |
>> Restart-NetAdapter
我该如何正确地写这个?
我转到 If 语句,这最让我困惑。这似乎应该可以工作,因为语句输出 true,并且括号中的代码可以独立工作。
PS C:\Users\flatbe> #Requires -RunAsAdministrator
>> $IPAddress = (Get-NetIPAddress -AddressFamily IPV4 -InterfaceIndex 21).IPAddress
>> write-output $IPAddress
>> Write-output if($IpAddress -match "169"){
>> Get-NetIPConfiguration | ? InterfaceAlias -match "wi" | Restart-Netadapter}
169.254.182.44
if
True
Get-NetIPConfiguration | ? InterfaceAlias -match "wi" | Restart-Netadapter
答案1
所以这个脚本可以暂时解决我的问题。如果有人知道为什么会生成链接本地分配,请在这里告诉我。这个脚本非常有用。
$IPAddress = (Get-NetIPAddress -AddressFamily IPV4 -InterfaceAlias Ethernet).IPAddress
write-output $IPAddress
if($IpAddress -match "169"){
try { Get-NetIPConfiguration | Where-Object InterfaceAlias -match "Ethernet" | Restart-Netadapter
}
catch {
Write-Output "An Error Occurred"
}
}
我在登录 MTR NUC 上的 Skype 配置文件时触发此功能,我只允许它运行一次。这样,如果我们以后能够启用 dhcp,它就不会永远坐在那里一遍又一遍地用 169 八位字节撞击 NIC。