IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

[PowerShell] Désactiver l'économie d'énergie sur certains périphériques USB


Sujet :

Scripts/Batch

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2018
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2018
    Messages : 146
    Points : 74
    Points
    74
    Par défaut [PowerShell] Désactiver l'économie d'énergie sur certains périphériques USB
    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 !

  2. #2
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2018
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2018
    Messages : 146
    Points : 74
    Points
    74
    Par défaut
    Bon déjà j'ai une première piste, ce truc là retourne 2 valeurs dans mon cas
    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*"}
    Ensuite le foreach exécute 2x cette commande (vu que j'ai 2 occurrences dans la commande précédente)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-CimInstance -ClassName MSPower_DeviceEnable -Namespace root\wmi
    Mais ça ne "filtre" pas sur les périphériques dont j'ai besoin !
    Si j'ajoute l'attribut "-Filter" dans ma commande Get-CimInstance, j'obtiens un message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    PS C:\WINDOWS\system32> Get-CimInstance -ClassName MSPower_DeviceEnable -Namespace root\wmi -Filter 'InstanceName like "%PCI\%"'
    Get-CimInstance : Demande non valide 
    Au caractère Ligne:1 : 1
    + Get-CimInstance -ClassName MSPower_DeviceEnable -Namespace root\wmi - ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidArgument : (:) [Get-CimInstance], CimException
        + FullyQualifiedErrorId : HRESULT 0x80041017,Microsoft.Management.Infrastructure.CimCmdlets.GetCimInstanceCommand

  3. #3
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2018
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2018
    Messages : 146
    Points : 74
    Points
    74
    Par défaut
    Alors... Voici la solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $devicesUSB = Get-PnpDevice | where {$_.FriendlyName -like "*Contrôleur hôte Intel(R) USB*3.10 eXtensible*"}
    $devicesInstanceID = $devicesUSB.instanceId
    $devicesInstanceID = $devicesInstanceID.Replace("\","\\")
    
    foreach ($InstanceName in $devicesInstanceID) {
        Set-CimInstance -Namespace root\wmi -Query "SELECT * FROM MSPower_DeviceEnable WHERE InstanceName LIKE '%$($InstanceName)%'" -Property @{Enable=$False} -PassThru
    }
    Je récupère mes périphériques
    puis uniquement les instanceID
    puis j'échappe les caractères "\" qui posaient problème dans le filtre

    Ensuite je désactive l'économie d'énergie avec la cmdlet "Set-CimInstance" avec un foreach qui itère sur chaque périphérique


    Je me demande juste s'il ne faut pas englober le tout d'un if?
    Histoire d'éviter d'exécuter le script si l'économie d'énergie est déjà désactivée
    Mais là je sais pas trop comment vérifier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/09/2018, 13h47
  2. Mon mac refuse d'éjecter certains périphériques USB
    Par Skpflz dans le forum Mac OS X
    Réponses: 2
    Dernier message: 26/10/2013, 22h02
  3. [Clé USB] comment désactiver la protection en écriture sur une clé usb
    Par Chafik Gh dans le forum Périphériques
    Réponses: 5
    Dernier message: 23/03/2013, 12h53
  4. [TinyMCE] Désactiver tiny sur certain textarea
    Par dukexphp dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 25/11/2008, 19h39
  5. [TinyMCE] Désactiver tinymce sur certain textarea
    Par whitespirit dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 27/04/2008, 08h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo