如何使用 PowerShell 和 Windows 10 打开/关闭 WiFi 状态?

nou*_*ame 6 windows powershell

我有一个小.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
}
Run Code Online (Sandbox Code Playgroud)

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

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

小智 5

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

Comapre wifi 关闭/打开,然后我发现两个状态之间的RegistryKeyword SoftwareRadioOff 是不同的。

打开(以管理员身份)

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

关闭(以管理员身份)

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

我在我的连接wifi脚本中使用它,它现在可以在我的Win10笔记本上运行。

  • This is the best answer - thank you Ligi. This should be accepted as answer! (2认同)

Mar*_*agg 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
Run Code Online (Sandbox Code Playgroud)

但是,我看不到任何通过cmdletnetsh或任何*-netadaptercmdlet 触发“软件关闭”的能力。这可能是通过注册表中的开关控制的,但如果是这样,我看不到哪个。

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

netsh wlan disconnect
netsh wlan connect
Run Code Online (Sandbox Code Playgroud)