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 :

Attendre la fin d'un process avant de continuer une boucle [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre éclairé Avatar de suchiwa
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2010
    Messages
    435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2010
    Messages : 435
    Points : 899
    Points
    899
    Par défaut Attendre la fin d'un process avant de continuer une boucle
    Bonjour,

    Je cherche depuis un bout de temps la façon de lancer un process avec les contraintes suivantes

    • Windows 2003 SP2 R2
    • powershell v1
    • .NET 3.5 SP1
    • à partir d'un batch, lancer un ps1
    • lancer une installation de SQL et terminer ce process avant de continuer la boucle


    Le batch lance uniquement le ps1. Voici le code du ps1:


    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
    [...]
    #
    # SQL Server Installation
    #
    
    #pour info $sourcesDir = "C:\sources\"
    #le setup.ini contient les paramètres d'installation de SQL, manuellement c'est ok
    
    
    &($sourcesDir+"setup.exe") /qb SQLACCOUNT=$SQLACCOUNT SQLPASSWORD=$SQLPASSWORD AGTACCOUNT=$AGTACCOUNT AGTPASSWORD=$AGTPASSWORD SQLBROWSERACCOUNT=$SQLBROWSERACCOUNT SQLBROWSERPASSWORD=$SQLBROWSERPASSWORD /settings ($sourcesDir+"setup.ini")
    
      Write-Host "$scriptName Complete"
    }  
    
    
    .$path\FLEXSQL-End.ps1
    Dans une boucle if, je demande à installer SQL Server 2005 Express. La commande se lance très bien mais malheureusement, la fin du script continue, et mon FLEXSQL-End.ps1 reboot le serveur (c'est son travail avec un shutdown).

    Sur les exemples de msdn ou technet, on me dit de faire un start /w <path>setup.exe, mais la commande est lancée à partir de powershell, donc "Start" n'est pas reconnue comme un cmdlet.

    J'ai voulu utiliser start-process, mais powershell v1... pas disponible.

    J'utilise alors [system.diagnostics.process] pour lancer l'application

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $setup = ($sourcesDir+"setup.exe")
    $args = "/qb SQLACCOUNT=$SQLACCOUNT SQLPASSWORD=$SQLPASSWORD AGTACCOUNT=$AGTACCOUNT AGTPASSWORD=$AGTPASSWORD SQLBROWSERACCOUNT=$SQLBROWSERACCOUNT SQLBROWSERPASSWORD=$SQLBROWSERPASSWORD"
    $settings ="/settings"+($sourcesDir+"setup.ini")
    $InstSQL = $setup+" "+$args+" "+$settings
    $process = [system.diagnostics.process]::start($InstSQL)
    $process ne se lance pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Exception calling "Start" with "1" argument(s): "The system cannot find the file specified"
    At line:1 char:36
    + [system.diagnostics.process]:start( <<<< $InstSQL)
    [system.diagnostics.process]:start demande un [string] exécutable

    Si je mets $setup à la place de $InstSQL, ça fonctionne, sauf qu'il me manque tous les paramètres de la commande...

    Il doit y avoir une solution simple à ce problème, je continue de chercher.

    S'il n'y a pas de solution en ces termes, dois-je installer PS v2 ou créer une fonction compatible avec le .NET 3.5 ?

    Merci pour votre aide.

    Vincent
    Dans le doute, reboot...

    https://mcp.microsoft.com/authenticate/validatemcp.aspx
    931584 | Micr0s0ft

  2. #2
    Membre éclairé Avatar de suchiwa
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2010
    Messages
    435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2010
    Messages : 435
    Points : 899
    Points
    899
    Par défaut
    HAha !

    Après vérification de la classe j'ai trouvé quelque chose :

    http://msdn.microsoft.com/en-us/libr...ess.start.aspx

    En fait, je dois passer mes arguments de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $process = [system.diagnostics.process]::start($setup, $settings)
    L'installation fonctionne, maintenant reste à savoir si le script est en attente de fin d'exécution du process...

    Vincent
    Dans le doute, reboot...

    https://mcp.microsoft.com/authenticate/validatemcp.aspx
    931584 | Micr0s0ft

  3. #3
    Membre éclairé Avatar de suchiwa
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2010
    Messages
    435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2010
    Messages : 435
    Points : 899
    Points
    899
    Par défaut
    Citation Envoyé par suchiwa Voir le message

    L'installation fonctionne, maintenant reste à savoir si le script est en attente de fin d'exécution du process...

    Vincent
    C'est pas l'année du lapin, mais des scripts powershell qui veulent pas...

    Et bien non, le process se lance, mais s'enchaine la suite du script qui demande un reboot du serveur.

    Je comprends pas.

    Dans d'autres scripts, j'utilise le même design, pour du SQL Server 2008 R2, ça fonctionne très bien.

    Une erreur c'est soit glissée dans l'exécution de SQL, soit j'ai une coquille dans l'architecture.

    Comment puis je identifier le problème ?

    Vincent
    Dans le doute, reboot...

    https://mcp.microsoft.com/authenticate/validatemcp.aspx
    931584 | Micr0s0ft

  4. #4
    Membre éclairé Avatar de suchiwa
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2010
    Messages
    435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2010
    Messages : 435
    Points : 899
    Points
    899
    Par défaut [RESOLU]
    Citation Envoyé par suchiwa Voir le message
    L'installation fonctionne, maintenant reste à savoir si le script est en attente de fin d'exécution du process...

    Vincent
    Bonjour,

    Pour les curieux, j'ai eu un coup de main de Janel, du site powershell-scripting.com, pour que le process attende :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $wait = $process.waitforexit()
    Ca fonctionne très bien.

    Vincent
    Dans le doute, reboot...

    https://mcp.microsoft.com/authenticate/validatemcp.aspx
    931584 | Micr0s0ft

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

Discussions similaires

  1. [VXML] Attendre la fin d'un prompt avant submit
    Par flexx dans le forum Autres langages
    Réponses: 1
    Dernier message: 06/11/2012, 17h39
  2. [Toutes versions] Attendre la fin d'un traitement avant d'en commencer un autre
    Par nietzsche64 dans le forum VBA Access
    Réponses: 4
    Dernier message: 13/12/2011, 09h11
  3. [Débutant] Comment attendre la fin d'un process lancé par ShellExecute ou ShellExecuteEx
    Par Godzestla dans le forum C++Builder
    Réponses: 3
    Dernier message: 19/05/2011, 12h34
  4. Réponses: 7
    Dernier message: 07/07/2010, 12h17
  5. Réponses: 2
    Dernier message: 17/07/2007, 13h57

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