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 :

Executer un script sur une machine distante [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 63
    Par défaut Executer un script sur une machine distante
    Bonjour,

    J'aimerai exécuter un script vbs sur une machine distante.
    Le problème est que je ne peux pas utiliser "invoke-command" car bloqué par une politique de sécurité.

    Si quelqu'un a une idée de comment faire je suis preneur.
    Merci

  2. #2
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Par défaut
    salut moman

    le wmi peut être une piste

    un exemple de code que j'avais trouvé y a quelque années :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    function Process_cmd
        {
        Param($Target,$exec)
        	
        $random = get-random
    
        #cmd to execute remotely 
        $cmd = "cmd /c $exec > C:\$random.txt"
    
        #execute the cmd remotely 
        $processid = Invoke-WmiMethod -class Win32_process -name Create -ArgumentList $cmd -ComputerName $Target
    
        #wait until the process is done 
        do { $resultprocess = Get-WmiObject win32_process -ComputerName $Target | where {$_.processid -eq $processid.processid }
             sleep 1 
           } until ($resultprocess -eq $null)
    
        #copy the log file into the script folder to get the content quickly 
        if (test-path "\\$Target\C$\$random.txt") {
            #get the log content create by the cmd
            try {
                $result = Get-Content \\$Target\C$\$random.txt -encoding ascii
                }
            catch {}
    
            #remove the log 
            try {
                remove-item \\$Target\C$\$random.txt -ErrorAction SilentlyContinue
                }
            catch {}
            }
        	
        return $result
        }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 63
    Par défaut
    Merci 6ratgus.

    Je testerais ta réponse lundi.

    Sinon, j'avais essayé de faire un mappage réseau, de copier le script sur la machine distante et de l’exécuter via ce mappage.
    Pour l’exécuter j'avais utilisé le cscript de la machine distante via le mappage, mais le script semblait s’exécuter sur la machine de départ, je pense donc que ce doit être du à l'environnement d’exécution.

    Voila, voila. Si vous avez d'autres idées, je suis toujours preneur.
    Merci.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 63
    Par défaut
    Merci 6ratgus.
    Ça fonctionne très bien ^^

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2014
    Messages : 25
    Par défaut
    Bonjour bonjour

    Voila plusieurs jours que je cherche... Mais sans succès....

    Disons que j'ai résolu 50% du problème, mais le reste ...

    je souhaite faire deux chose, la première consiste à lancer une commande CMD sur une liste de serveur, ils sont, pour l'instant en Win2003.(je n'ai pas trouvé la solution)

    La deuxième chose consiste à lancer un vbs sur, également une liste de serveur en 2003. j'ai trouvé en utilisant Psexec.

    J'ai essayé avec la même méthode, psexec, mais sans succès, avec un runas... idem.

    je suis donc tombé sur ton script, mais j'avoue ne pas trop le comprendre... pourriez vous me l'expliquer ?

    Merci merci

  6. #6
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Par défaut
    voici un petit exemple d'utilisation de Process_cmd :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $commande = "dir c:\" # tu remplace ce dir par la commande que tu veux exécuté
    $ordinateur = "pc-de-test"
    Process_cmd $Ordinateur $commande
    Attention certaines commandes demandent une élévation "admin", Process_cmd ne résout pas ce problème !


    pour ton problème de "lancer une commande CMD sur une liste de serveur" tu as plusieurs solutions !!! tout dépend de ta liste
    en voici une :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "serveur1", "serveur2", "serveur3" | foreach {
         Process_cmd $_ $commande
         }

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/11/2011, 21h13
  2. Réponses: 2
    Dernier message: 01/04/2010, 21h25
  3. Réponses: 3
    Dernier message: 07/01/2009, 11h00
  4. Réponses: 1
    Dernier message: 01/02/2007, 12h51

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