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笔记本上运行。
我找不到任何方法以编程方式执行此操作,因此我认为答案可能是(目前)不完全可能。
我发现,当您使用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
或任何*-netadapter
cmdlet 触发“软件关闭”的能力。这可能是通过注册表中的开关控制的,但如果是这样,我看不到哪个。
我的建议是通过启用/禁用底层适配器来继续控制 wifi Disable-NetAdapter
,或者Enable-NetAdapter
如果您需要保持硬件启用(也许是为了重新配置它?),但希望在执行此操作时断开无线连接因此,您可以通过以下方式连接/断开网络:
netsh wlan disconnect
netsh wlan connect
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
19404 次 |
最近记录: |