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