Hello,

Voilà voilà, j'suis pas spécialement fort en PowerShell mais après plusieurs recherches je suis tombé sur un script qui ressemble à ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
$devicesUSB = Get-PnpDevice | where {$_.FriendlyName -like "*Contrôleur hôte Intel(R) USB*3.10 eXtensible*"}  | 
ForEach-Object -Process {
    Get-CimInstance -ClassName MSPower_DeviceEnable -Namespace root\wmi 
}

foreach ( $device in $devicesUSB )
{
    Set-CimInstance -Namespace root\wmi -Query "SELECT * FROM MSPower_DeviceEnable WHERE InstanceName LIKE '%$($device.PNPDeviceID)%'" -Property @{Enable=$False} -PassThru
}
Quand j'utilise cette commande, je récupère bien uniquement mes 2 périphériques concernés
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Get-PnpDevice | where {$_.FriendlyName -like "*Contrôleur hôte Intel(R) USB*3.10 eXtensible*"}
Par contre, cette commande cumulée à la commande suivante, ça vient tout faire foirer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Get-PnpDevice | where {$_.FriendlyName -like "*Contrôleur hôte Intel(R) USB*3.10 eXtensible*"}  | 
ForEach-Object -Process {
    Get-CimInstance -ClassName MSPower_DeviceEnable -Namespace root\wmi 
}
Ce qui fait que ma variable "$devicesUSB" contient tous les périphériques de l'ordi et pas seulement les 2 périphériques dont je veux désactiver l'économie d'énergie

Je comprends pas pourquoi...
"ForEach-Object -Process" n'est pas censé travailler avec la liste filtrée que je lui donne?

Le script fonctionne, ça désactive bien l'économie d'énergie, mais sur tous les périphériques de l'ordi et j'aimerais tout de même éviter...

Je vous remercie !