如何使用PowerShell和Windows 10切换WiFi状态(开/关)?

6

我有一个小的.ps1脚本,可以在以太网和WiFi之间切换网络连接。我的脚本很好用。现在我想知道如何关闭WiFi而不禁用底层网络适配器。

这是我的现有脚本:

$lanState = Get-NetAdapter -Name MyEthernetPort | where status -EQ 'up'

if ( $lanState )
{
    write-host 'Enabled... Disable now'
    Get-NetAdapter -Name MyEthernetPort | ? status -NE disabled | Disable-NetAdapter -Confirm:$false
    # TODO switch on wifi
    netsh wlan connect name=SM-GUEST
}
else
{
    Write-Host 'Disabled... Enable now'
    Get-NetAdapter -Name MyEthernetPort | ? status -EQ disabled | Enable-NetAdapter -Confirm:$false
    # TODO switch off wifi
    netsh wlan disconnect
}

我无法找到如何通过PowerShell关闭WiFi的指导(与您在Windows 10信息中心中点击按钮时发生的方式相同)。我发现的所有脚本都只是禁用底层适配器,这不是我想要的。

有人能建议如何从PowerShell访问此功能吗?

4个回答

5

我试图解决同样的问题,并感谢nandubhadu的提示。

比较Wi-Fi关闭/打开后,我发现注册表关键字SoftwareRadioOff在两种状态下是不同的。

打开(以管理员身份)

powershell Set-NetAdapterAdvancedProperty -Name "Wi-Fi" -AllProperties -RegistryKeyword "SoftwareRadioOff" -RegistryValue "0"

关闭(以管理员身份)

powershell Set-NetAdapterAdvancedProperty -Name "Wi-Fi" -AllProperties -RegistryKeyword "SoftwareRadioOff" -RegistryValue "1"

我将其用于我的连接Wi-Fi脚本中,现在在我的Win10笔记本上可以使用。


2
这是最好的答案 - 谢谢Ligi。这应该被接受为答案! - GavinR

4
我找不到任何编程方式来实现这一点,因此我认为答案可能是(目前)完全不可能的。我发现当你使用Windows操作中心中的按钮关闭Wifi时,netsh显示接口为“硬件开启”“软件关闭”。
Netsh WLAN show interfaces

There is 1 interface on the system:

    Name                   : WiFi
    State                  : disconnected
    Radio status           : Hardware On
                             Software Off

然而,我无法在netsh或任何*-netadapter cmdlets中看到触发“软件关闭”的能力。这可能是通过注册表中的开关控制,但如果是这样,我就不知道哪一个。

我的建议是继续通过启用/禁用底层适配器来控制wifi,使用Disable-NetAdapterEnable-NetAdapter,或者如果您需要保持硬件已启用(也许是为了重新配置?)但是想要在此期间断开无线连接,您可以通过以下方式连接/断开网络:

netsh wlan disconnect
netsh wlan connect

感谢您的努力。很遗憾似乎不可能实现。正如您所看到的,我已经在使用您的建议了。至少我不是太瞎,找不到我想要的解决方案 ;) - nouseforname

0

以下是在命令提示符中有效的命令

检查无线电状态

powershell Get-NetAdapterAdvancedProperty -Name "Wi-Fi" -AllProperties -RegistryKeyword "radioEnable"

打开收音机(以管理员身份运行)

powershell Set-NetAdapterAdvancedProperty -Name "Wi-Fi" -AllProperties -RegistryKeyword "radioEnable" -RegistryValue "1"

关闭收音机(以管理员身份运行)

powershell Set-NetAdapterAdvancedProperty -Name "Wi-Fi" -AllProperties -RegistryKeyword "radioEnable" -RegistryValue "0"

要在 PowerShell 中使用这些命令,只需删除开头的 PowerShell 即可。


我尝试使用关闭收音机的命令,但在我的电脑上它关闭了 Wi-Fi,但几秒钟后又自动开启了。 - hBrent
手动关闭 Wi-Fi 后,打开它的命令没有任何作用。 - hBrent

-5
我只是打开“计算机管理”,然后打开“设备管理器”,再打开“网络适配器”,之后禁用“无线”,然后再启用它。我的无线网络又恢复正常了。

2
这个问题是在询问如何在PowerShell中关闭/打开WiFi。这个答案是错误的。 - Pang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接