Category filter
Script to turn Bluetooth on/off on Windows devices
Toggling a device’s Bluetooth Settings will require the user to modify it through the system settings. As a system admin, if you need to change the Bluetooth state of multiple devices, it can prove to be an arduous task. In such situations, the Execute Custom Script action is here to help.
Toggle Bluetooth status
You can use the following PowerShell script to turn Bluetooth on/off.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[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 |
Pass the arguments ‘ON’ or ‘OFF’ while running this script to enable or disable Bluetooth on devices.
Need more help?