Powershell : Activer/désactiver le Bluetooth
Si vous cherchez un moyen d’activer ou désactiver votre Bluetooth avec powershell, j’ai peut-être une solution pour vous.
Il est bizarrement difficile de gérer des périphériques avec l’invite de commande ou Powershell sans passer par des programmes tiers.
On se demande même pourquoi ce n’est pas plus simple, est-ce une stratégie de Microsoft ? Bref, je vous explique comment faire.
Pour commencer, le seul moyen efficace “à mon avis” vient d’un utilisateur sur StackExchange, donc merci à toi pour cette solution.
1. Voici le programme en question :
[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
2. Pour l’utiliser, enregistrez-le dans un fichier PS1, par exemple. bluetooth.ps1
.
Si vous ne l’avez pas déjà fait, suivez les instructions de l’ITQ05 pour activer l’exécution de scripts sur votre système.
Vous pouvez ensuite l’exécuter à partir d’une invite PowerShell comme ceci:
.\bluetooth.ps1 -BluetoothStatus On
Pour désactiver le Bluetooth, remplacer le statut par Off
.
3. Pour l’exécuter à partir d’un fichier de commandes:
powershell -command .\bluetooth.ps1 -BluetoothStatus On
Avertissement : Si le service de support Bluetooth n’est pas en cours d’exécution, le script tente de le démarrer, car sinon, WinRT ne verra pas les radios Bluetooth. Hélas, le service ne peut pas être démarré si le script ne s’exécute pas en tant qu’administrateur. Pour rendre cela simple, vous pouvez changer le type de démarrage de ce service en automatique.
Bravo : Vous avez réussi ! Vous savez activer ou désactiver le bluetooth avec powershell.
À voir également : Le Top 10 Des boulets sur Facebook
Impossible d’appeler une méthode dans une expression Null.
Au caractère C:UsersmeDownloadsbluetooth.ps1:19 : 1
+ Await ($bluetooth.SetStateAsync($BluetoothStatus)) ([Windows.Devices. …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Bonjour Poichou,
Le message d’erreur indiquerait que tu n’as pas ajouter de status.
Exemple : .bluetooth.ps1 -BluetoothStatus Off