Lancer une commande Dos avec une variable issue d’un import.

Utiliser PowerShell pour lancer par exemple un « reg query » ou tout autres commandes Dos sur une liste de PC présents dans un fichier texte.

$list = Import-CSV -Path "./comp-list.txt"

ForEach ($comp in $list) { 
    $ip = $comp.ip
    $cmdreg = "reg query \\$ip\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa"
    Invoke-Expression $cmdreg
 }

😉

5 réflexions sur « Lancer une commande Dos avec une variable issue d’un import. »

  1. vincsilver

    Merci pour cette astuce.

    En cas de message : Le terme « reg » n’est pas reconnu comme nom d’applet de commande, fonction, fichier de script ou programme exécutable. […]

    Il faut ajouter la ligne suivante en début de script :
    $env:path += « ;c:\windows\system32 »

    Répondre
  2. vincsilver

    Il semble que lorsque le fichier ./comp-list.txt contient une adresse ip au lieu d’un nom dns, la commande ne fonctionne pas.
    Message d’erreur = reg query ne peut pas s’appliquer sur un valeur NULL.

    Une petite idée ?

    Répondre
  3. Christophe Bluteau Auteur de l’article

    J’ai pas le problème.
    Ça marche bien avec le nom ou l’IP.

    Voici mon fichier ./comp-list.txt

    name,ip
    srv001,192.168.1.10
    srv002,192.168.1.20

    Répondre
  4. vincsilver

    Sur un réseau différent, cela fonctionne aussi bien avec l’@ip qu’avec le nom.
    Étrange..
    En tout cas merci pour ton aide.

    Voici mon fichier comp-list.txt

    ip
    172.10.0.1
    172.10.0.2
    172.10.0.3

    PS : Si un jour vous rencontrer un problème avec l’adresse ip et que vous disposez d’un serveur DNS, voici une parade 🙂

    $list = Import-CSV -Path « ./comp-list.txt »

    ForEach ($comp in $list) {
    $ip = $comp.ip
    $MachineName = [System.Net.Dns]::GetHostbyAddress($ip).HostName
    $dnsname = $MachineName -replace « .* »
    $cmdreg = « reg query \\$ip\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa »
    Invoke-Expression $cmdreg
    }

    Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *