尝试使用 Powershell 修复奇怪的本地链接问题

尝试使用 Powershell 修复奇怪的本地链接问题

所以我来这里是为了问另一个问题,我在识别问题方面取得了一些进展。我有一个不允许使用 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。

相关内容