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

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.
?View Code POWERSHELL
$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
 }
😉
Categories: Powershell Tags: , ,

Vous avez aimé cet article ? Alors partagez-le en cliquant sur les boutons ci-dessous :


Twitter Facebook Google Plus Linkedin

Article rédigé par Christophe Bluteau.

  1. vincsilver
    23/10/2012 à 15:21 | #1

    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 »

  2. Christophe Bluteau
    23/10/2012 à 15:59 | #2

    Il y a toujours un truc à apprendre avec Powershell.

    Merci.

  3. vincsilver
    24/10/2012 à 14:09 | #3

    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 ?

  4. Christophe Bluteau
    25/10/2012 à 08:59 | #4

    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

  5. 31/10/2012 à 16:10 | #5

    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
    }

  1. Pas encore de trackbacks