У меня есть ноутбук Win10, который я передвигаю между домом и работой. Я использую идентичные, но отдельные Bluetooth-мыши в каждом месте. Каждый раз, когда я переключаю местоположение (и, таким образом, переключаю мышь Bluetooth), я должен зайти в "Настройки", чтобы переключиться, и снова включить "переключатель" Bluetooth, чтобы ноутбук подключился к новой мыши (даже если он отображается как уже » спаренный »в списке блютуз устройств). Обратите внимание, что это так даже при перезагрузке.

Конечно, моей первой мыслью, чтобы автоматизировать этот процесс, было просто использовать скрипт, чтобы сбросить службы Bluetooth во время загрузки, чтобы эмулировать выключение и повторное включение переключателя Bluetooth на странице настроек. Но, похоже, мне не удается определить правильный сервис (если на самом деле это правильный подход) для переключения. Я использовал powershell, чтобы остановить "bthserv" и "ibtsiva", но моя мышь по-прежнему работает нормально, поэтому очевидно, что это не эквивалентно выключению "выключателя" 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

Есть ли какой-то другой сервис, который я должен включить? Или сервис просто совершенно неправильный подход? Принудительное выключение и запуск оборудования каждый раз срабатывает, поэтому оно обязательно включает в себя все необходимые действия. Мне просто нужно найти способ автоматизировать это. Есть указатели?

1 ответ1

0

Смотрите это Q & A ...

Включение / выключение радио / адаптера Bluetooth из cmd / powershell в 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .