집과 직장을 오가며 사용하는 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