시작 시 Win10 블루투스를 껐다가 켜는 방법

시작 시 Win10 블루투스를 껐다가 켜는 방법

집과 직장을 오가며 사용하는 Win10 노트북이 있습니다. 나는 각 위치에서 동일하지만 별도의 블루투스 마우스를 사용합니다. 위치를 전환할 때마다(따라서 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

이 Q&A를 참조하세요…

Windows 10의 cmd/powershell에서 Bluetooth 라디오/어댑터 켜기/끄기

[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

관련 정보