【问题标题】:Set static IP via PowerShell command not fully working通过 PowerShell 命令设置静态 IP 无法正常工作
【发布时间】:2022-10-19 10:40:32
【问题描述】:

我正在使用桌面应用程序 (Visual Basic) 中的 PowerShell 命令来更改网络适配器设置,使用 DHCP 或静态 IP 配置。该命令有效,但未出现在 Internet 协议 (TCP/IPv4) 设置中,仅通过 cmd 使用 ipconfig 命令显示。 IP not shows in control panel

如果用户重新启动或网络适配器自行重新启动,则会出现问题。它会导致静态IP消失。因此,用户必须再次将网络更改为静态 IP 配置。

更新在我的 PowerShell 命令下方,我首先设置 DHCP,以防用户意外使用 DHCP 配置连接到网络。

    Dim p As Process = New Process()
    p.StartInfo.FileName = "PowerShell.exe"
    p.StartInfo.Arguments = "netsh wlan disconnect ;" & " Get-NetIPInterface -InterfaceAlias \""" & Adapter & "\"" -AddressFamily IPv4 | Remove-NetRoute -AddressFamily IPv4 -Confirm:$false " + ";" + " Get-NetIPInterface -InterfaceAlias \""" & Adapter & "\"" -AddressFamily IPv4 | Set-NetIPInterface -Dhcp Enabled " + ";" + " Get-NetIPInterface -InterfaceAlias \""" & Adapter & "\"" -AddressFamily IPv4 | Set-DnsClientServerAddress -ResetServerAddresses ; " & "New-NetIPAddress -InterfaceAlias \""" & Adapter & "\"" -AddressFamily IPv4 -IPAddress " & IP & " -PrefixLength 24 -DefaultGateway " & Gateway & " ; Set-DnsClientServerAddress -InterfaceAlias \""" & Adapter & "\"" -ServerAddresses " & DNS1 & "," & DNS2
    p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
    p.StartInfo.UseShellExecute = False
    p.StartInfo.CreateNoWindow = True
    p.StartInfo.RedirectStandardError = True
    p.Start()
    p.WaitForExit()

同样的问题在这里问(https://superuser.com/questions/1683252/setting-static-ip-via-powershell-doesnt-work)

更新尝试直接使用命令PowerShell.exe运行,它运行完美。重启后IP不会消失。进程vb net可能有问题吗?

【问题讨论】:

  • VB.NET 和 Powershell(以及任何其他 .NET 语言,例如 C#)在 .NET Framework 中调用完全相同的函数。 .NET Framework 调用与所有其他非 .NET 语言相同的 Windows API 函数。
  • 感谢您提供信息,但它与此问题的任何原因都没有太大关系。这都是关于通过 PowerShell 命令配置静态 IP 的。 @伦特
  • 在-Confirm:$false ; 之后有一个无与伦比的报价。确保您已按原样粘贴代码,因为拼写错误可能会影响脚本的结果。
  • 我已经用我的桌面应用程序更新了完全相同的代码。我的桌面程序中不存在无与伦比的报价,它只是为了更具可读性而存在问题。感谢您的提醒@vonPryz

标签: vb.net powershell ip


【解决方案1】:

我发现使用命令New-NetIPAddress时无法在断开的网卡上正确设置静态IP,一旦机器重新启动或网卡重新启用,它会导致静态消失。 References

相反,使用 netsh 命令正确设置静态 IP。 netsh worked on disconnected NIC

【讨论】:

    猜你喜欢
    • 2011-03-06
    • 2013-03-06
    • 1970-01-01
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多