Cómo activar y desactivar el bluetooth de Win10 al inicio

Cómo activar y desactivar el bluetooth de Win10 al inicio

Tengo una computadora portátil Win10 que voy y vengo entre casa y el trabajo. Utilizo ratones bluetooth idénticos pero separados en cada ubicación. Cada vez que cambio de ubicación (y, por lo tanto, cambio de mouse bluetooth), debo ir a Configuración para activar y volver a encender el "interruptor" de bluetooth para que la computadora portátil se conecte al nuevo mouse (aunque ya aparece como " emparejado" en la lista de dispositivos bluetooth). Tenga en cuenta que este es el caso incluso entre reinicios.

Por supuesto, mi primer pensamiento para automatizar este proceso fue simplemente usar un script para hacer rebotar los servicios de bluetooth en el momento del arranque para emular el apagado y encendido nuevamente del interruptor de bluetooth en la página de Configuración. Pero parece que no logro identificar el servicio correcto (si de hecho ese es el enfoque correcto) para alternar. He usado powershell para detener "bthserv" e "ibtsiva", pero mi mouse todavía funciona bien, así que obviamente eso no equivale a "apagar" el interruptor de bluetooth.

PS C:\WINDOWS\system32> get-service -DisplayName *Bluetooth*

Status   Name               DisplayName
------   ----               -----------
Stopped  BluetoothUserSe... Bluetooth User Support Service_3b07...
Stopped  BTAGService        Bluetooth Audio Gateway Service
Stopped  bthserv            Bluetooth Support Service
Stopped  ibtsiva            Intel Bluetooth Service

¿Hay algún otro servicio que debería alternar? ¿O el servicio es simplemente un enfoque completamente equivocado? Forzar el apagado del hardware y el reinicio funciona siempre, por lo que definitivamente incluye cualquier acción que deba realizar. Sólo necesito encontrar una manera de automatizarlo. ¿Algún consejo?

Respuesta1

Vea estas preguntas y respuestas...

Activar/desactivar la radio/adaptador Bluetooth desde cmd/powershell en Windows 10

[CmdletBinding()] 
Param 
(
    [Parameter(Mandatory=$true)][ValidateSet('Off', 'On')][string]$BluetoothStatus
)

If ((Get-Service bthserv).Status -eq 'Stopped') 
{ Start-Service bthserv }

Add-Type -AssemblyName System.Runtime.WindowsRuntime
$asTaskGeneric = ([System.WindowsRuntimeSystemExtensions].GetMethods() `
| ? { $_.Name -eq 'AsTask' -and $_.GetParameters().Count -eq 1 -and $_.GetParameters()[0].ParameterType.Name -eq 'IAsyncOperation`1' })[0]

Function Await($WinRtTask, $ResultType) 
{
    $asTask = $asTaskGeneric.MakeGenericMethod($ResultType)
    $netTask = $asTask.Invoke($null, @($WinRtTask))
    $netTask.Wait(-1) | Out-Null
    $netTask.Result
}

[Windows.Devices.Radios.Radio,Windows.System.Devices,ContentType=WindowsRuntime] | Out-Null

[Windows.Devices.Radios.RadioAccessStatus,Windows.System.Devices,ContentType=WindowsRuntime] | Out-Null
Await ([Windows.Devices.Radios.Radio]::RequestAccessAsync()) ([Windows.Devices.Radios.RadioAccessStatus]) | Out-Null

$radios = Await ([Windows.Devices.Radios.Radio]::GetRadiosAsync()) ([System.Collections.Generic.IReadOnlyList[Windows.Devices.Radios.Radio]])
$bluetooth = $radios | ? { $_.Kind -eq 'Bluetooth' }

[Windows.Devices.Radios.RadioState,Windows.System.Devices,ContentType=WindowsRuntime] | Out-Null
Await ($bluetooth.SetStateAsync($BluetoothStatus)) ([Windows.Devices.Radios.RadioAccessStatus]) | Out-Null

información relacionada