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

  1. #21
    Membre du Club
    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
    Points : 57
    Points
    57
    Par défaut
    Ton fichier de machines est bien dans le meme répertoire que ton script ??

    Il est bien constitué : Nom;IP
    Machine1;@IP machine1
    Machine2;@IP machine2 ??

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

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

    Informations forums :
    Inscription : Octobre 2014
    Messages : 22
    Points : 23
    Points
    23
    Par défaut
    oui oui,

    dans un fichier csv portant le même nom que dans ton script.

    Avec dans la cellule A1 : serveur.domaine.fr;@ip

  3. #23
    Membre du Club
    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
    Points : 57
    Points
    57
    Par défaut
    Je me suis peut être mal exprimé :
    dans ta cellule A1 met "Nom" dans ta cellule B1 met "IP"
    dans A2 met "nom de ta machine" dans B2 met "@IP de ta machine"

  4. #24
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Octobre 2014
    Messages : 22
    Points : 23
    Points
    23
    Par défaut
    ahhh ok

    j'ai changé le fichier. le retour de la commande :

    PS C:\Users\s0075871\Downloads> & '.\Sans titre3.ps1'

    Id Name State HasMoreData Location Command
    -- ---- ----- ----------- -------- -------
    1 serveur.dom... Running True localhost ...



    mais rien dans les logs du serveur

  5. #25
    Membre du Club
    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
    Points : 57
    Points
    57
    Par défaut
    Supprime le morceau de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            try {
                remove-item \\$Target\C$\$random.txt -ErrorAction SilentlyContinue
            }
            catch {}
    Tu devrais avoir un log de type 2132654654.txt dans le répertoire de ton script distant.
    Je ne sais pas ce que ton script distant fait, mais lorsqu'il fini son exécution, sur ta fenêtre powershell doit s'afficher :

    Id Name State HasMoreData Location Command
    -- ---- ----- ----------- -------- -------
    1 Job1 Running True localhost ...
    1 Job1 Completed False localhost ...

  6. #26
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Octobre 2014
    Messages : 22
    Points : 23
    Points
    23
    Par défaut
    j'ai pas le fichier de log dans le répertoire distant.

    en supprimant la ligne, cela ne change rien à l'execution

  7. #27
    Membre du Club
    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
    Points : 57
    Points
    57
    Par défaut
    Ton script distant fait quoi ??

    Essaie avec un script qui fait quelque chose de simple.

    Si tu n'a pas vu :
    Id Name State HasMoreData Location Command
    -- ---- ----- ----------- -------- -------
    1 Job1 Running True localhost ...
    1 Job1 Completed False localhost ...

    c'est que ton script distant n'a pas fini son job.

  8. #28
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Octobre 2014
    Messages : 22
    Points : 23
    Points
    23
    Par défaut
    il lance une autre commande

    en gros j'ai deux actions à faire. dans un premier temps lancer un cmd. puis un vbs.

    Mon script pour le vbs fonctionne, mais pas pour le cmd.

    Un script avec psexec ne fonctionne pas avec du cmd.

  9. #29
    Membre du Club
    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
    Points : 57
    Points
    57
    Par défaut
    Je n'ai pas tout compris ^^
    Mais quand tu lance tes scripts en local ils fonctionnent ??

  10. #30
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Octobre 2014
    Messages : 22
    Points : 23
    Points
    23
    Par défaut
    dans le script que tu as fait, il y a t'il la possibilité d'intégrer une mire d'authentification ? (login +mdp (avec domaine différant)) pour exécuter ce cmd distant avec un identifiant différant ?

  11. #31
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Octobre 2014
    Messages : 22
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par moman Voir le message
    Je n'ai pas tout compris ^^
    Mais quand tu lance tes scripts en local ils fonctionnent ??

    lol, oui , ils fonctionnent

  12. #32
    Membre du Club
    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
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par kewin117 Voir le message
    dans le script que tu as fait, il y a t'il la possibilité d'intégrer une mire d'authentification ? (login +mdp (avec domaine différant)) pour exécuter ce cmd distant avec un identifiant différant ?

    Avec celui que j'ai fait non, mais il y a d'autre méthode pour le faire.

  13. #33
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Octobre 2014
    Messages : 22
    Points : 23
    Points
    23
    Par défaut
    tu as quoi en tête comme méthode ?

  14. #34
    Membre confirmé
    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
    Points : 520
    Points
    520
    Par défaut
    pour vous aidées à faire avancé les choses, ci-dessous le code pour la fonction "Process_cmd_user" avec le passage d'un login et mot de passe (en clair, non scrypté avec credential)
    pour info on utilise cette fonction avec un utilisateur admin sinon il ne peut pas généré le fichier de retour a la racine du disque C: !
    pour un utilisateur "normal" il faut trouvé un dossier ou il a les droit en écriture. (pas si facile que ca)

    pour demande le login et mot de passe le code suivant devrait suffire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $login = Read-Host -Prompt "ton login"
    $password = Read-Host -Prompt "ton mot de passe"
    un exemple d'utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Process_cmd_user $ordi "domain\$login" $motDePasse "gpupdate /force"
    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
    35
    36
    37
    38
    function Process_cmd_user
        {
        Param($Target, $login, $password, $exec)
        	
        $random = get-random
    
        #cmd to execute remotely 
        $cmd = "cmd /c $exec > C:\$random.txt"
    
        #execute the cmd remotely 
        $pwdscurestring = Convertto-SecureString -AsPlainText $password -Force
        $Credential = New-Object -typename System.Management.Automation.PSCredential -ArgumentList $login, $pwdscurestring
        $processid = Invoke-WmiMethod -class Win32_process -name Create -ArgumentList $cmd -ComputerName $Target -Credential $Credential -WarningAction SilentlyContinue -ErrorAction SilentlyContinue
    
        if ($processid -ne $null)
            {
            #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 
            copy-item -path \\$Target\C$\$random.txt -destination .\
    
            #get the log content create by the cmd
            $result=Get-Content .\$random.txt -encoding ascii
    
            #remove the log 
            remove-item \\$Target\C$\$random.txt
            remove-item .\$random.txt
            }
        else
            {
            $result = ""
            }
    
        return $result
        }

  15. #35
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Octobre 2014
    Messages : 22
    Points : 23
    Points
    23
    Par défaut
    Salut 6ratgus,

    merci pour ton aide. Mais j'avoue ne plus rien comprendre... Déja que je nage pas mal...

    Donc, pour résumer :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    
    #Ici, je mets mes identifiant 
    $login = Read-Host -Prompt "ton login"
    $password = Read-Host -Prompt "ton mot de passe"
    
    #ici, je ne vois pas trop à quoi ca serre....
    Process_cmd_user $ordi "domain\$login" $motDePasse "gpupdate /force"
    
    
    function Process_cmd_user
        {
        Param($Target, $login, $password, $exec)
        	
        $random = get-random
    
        #ici, c'est mon fichier cmd en local sur les serveurs à lancer, je remplace donc par le chemin de mon cmd
        $cmd = "cmd /c $exec > C:\$random.txt"  
    
        #Et ici, en gros, c'est le script qui va exectuer le cmd à distance
    
        $pwdscurestring = Convertto-SecureString -AsPlainText $password -Force
        $Credential = New-Object -typename System.Management.Automation.PSCredential -ArgumentList $login, $pwdscurestring
        $processid = Invoke-WmiMethod -class Win32_process -name Create -ArgumentList $cmd -ComputerName $Target -Credential $Credential -WarningAction SilentlyContinue -ErrorAction SilentlyContinue
    
        if ($processid -ne $null)
    
            {
            #là on attand que la commande soit OK
            do { $resultprocess = Get-WmiObject win32_process -ComputerName $Target | where {$_.processid -eq $processid.processid }
                 sleep 1 
               } until ($resultprocess -eq $null)
    
            #là, création d'un fichier de log sur le serveur distant où se trouve le cmd à lancer (pas besoin de l'absolu)
            copy-item -path \\$Target\C$\$random.txt -destination .\
    
            #get the log content create by the cmd
            $result=Get-Content .\$random.txt -encoding ascii
    
            #suppression du log distant
            remove-item \\$Target\C$\$random.txt
            remove-item .\$random.txt
            }
        else
            {
            $result = ""
            }
    
        return $result
        }
    c'est ca ?

    j'ai pas mal de point que je ne comprend pas...

  16. #36
    Membre confirmé
    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
    Points : 520
    Points
    520
    Par défaut
    oui c'est ça, sauf que la fonction doit être déclaré au debut

    sinon je te laisse poursuivre avec moman qui te donnais la bonne marche à suivre !

  17. #37
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Octobre 2014
    Messages : 22
    Points : 23
    Points
    23
    Par défaut
    qu’entends tu par fonction ?

    Je ne visualise pas son utilité

  18. #38
    Membre confirmé
    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
    Points : 520
    Points
    520
    Par défaut
    comme ceci :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    #Ici, je mets mes identifiant 
    $login = Read-Host -Prompt "ton login"
    $password = Read-Host -Prompt "ton mot de passe"
    
    function Process_cmd_user
        {
        Param($Target, $login, $password, $exec)
        	
        $random = get-random
    
        #ici, c'est mon fichier cmd en local sur les serveurs à lancer, je remplace donc par le chemin de mon cmd
        $cmd = "cmd /c $exec > C:\$random.txt"  
    
        #Et ici, en gros, c'est le script qui va exectuer le cmd à distance
    
        $pwdscurestring = Convertto-SecureString -AsPlainText $password -Force
        $Credential = New-Object -typename System.Management.Automation.PSCredential -ArgumentList $login, $pwdscurestring
        $processid = Invoke-WmiMethod -class Win32_process -name Create -ArgumentList $cmd -ComputerName $Target -Credential $Credential -WarningAction SilentlyContinue -ErrorAction SilentlyContinue
    
        if ($processid -ne $null)
    
            {
            #là on attand que la commande soit OK
            do { $resultprocess = Get-WmiObject win32_process -ComputerName $Target | where {$_.processid -eq $processid.processid }
                 sleep 1 
               } until ($resultprocess -eq $null)
    
            #là, création d'un fichier de log sur le serveur distant où se trouve le cmd à lancer (pas besoin de l'absolu)
            copy-item -path \\$Target\C$\$random.txt -destination .\
    
            #get the log content create by the cmd
            $result=Get-Content .\$random.txt -encoding ascii
    
            #suppression du log distant
            remove-item \\$Target\C$\$random.txt
            remove-item .\$random.txt
            }
        else
            {
            $result = ""
            }
    
        return $result
        }
    
    #ici, l'appel de la fonction ci-dessus pour l'exemple bien sur a toi de l'adapté a ton script 
    Process_cmd_user $ordi "domain\$login" $motDePasse "gpupdate /force"
    c'est pour l'exemple bien sur, c'est à toi de l'adapté à ton script ou celui de moman

  19. #39
    Membre confirmé
    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
    Points : 520
    Points
    520
    Par défaut
    tu trouvera ici les bases indispensables pour la programmation en powershell

  20. #40
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Octobre 2014
    Messages : 22
    Points : 23
    Points
    23
    Par défaut
    Merci de votre aide. Je vais me débrouiller.


+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

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