Question Terminer un process avant de continuer une boucle
- vlb
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 25
- Remerciements reçus 0
il y a 15 ans 1 mois #8883
par vlb
Vincent
Dans le doute, reboot...
Terminer un process avant de continuer une boucle a été créé par vlb
Bonjour,
Je cherche depuis un bout de temps la façon de lancer un process avec les contraintes suivantes
Je m'explique :
[code:1]
[...]
#
# SQL Server Installation
#
&($sourcesDir+\"setup.exe\"«») /qb ADDLOCAL=All SQLACCOUNT=$SQLACCOUNT SQLPASSWORD=$SQLPASSWORD AGTACCOUNT=$AGTACCOUNT AGTPASSWORD=$AGTPASSWORD SQLBROWSERACCOUNT=$SQLBROWSERACCOUNT SQLBROWSERPASSWORD=$SQLBROWSERPASSWORD /settings ($sourcesDir+\"setup.ini\"«»)
Write-Host \"$scriptName Complete\"
}
.$path\FLEXSQL-End.ps1
[/code:1]
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'ai testé une ligne de commande du type
[code:1]
$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)
[/code:1]
$process ne se lance pas :
[code:1]
Exception calling \"Start\" with \"1\" argument(s): \"The system cannot find the file specified\"
At line:1 char:36
+ [system.diagnostics.process]::«»start( <<<< $c)
[/code:1]
Si je mets $setup à la place de $InstSQL, ça fonctionne, sauf qu'il me manque tous les paramètres de la commande...
S'il n'y a pas de solution en ces termes, dois-je installer PS v2 ou créer une fonction compatbible avec le .NET 3.5 ?
Merci pour votre aide.
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
Je m'explique :
[code:1]
[...]
#
# SQL Server Installation
#
&($sourcesDir+\"setup.exe\"«») /qb ADDLOCAL=All SQLACCOUNT=$SQLACCOUNT SQLPASSWORD=$SQLPASSWORD AGTACCOUNT=$AGTACCOUNT AGTPASSWORD=$AGTPASSWORD SQLBROWSERACCOUNT=$SQLBROWSERACCOUNT SQLBROWSERPASSWORD=$SQLBROWSERPASSWORD /settings ($sourcesDir+\"setup.ini\"«»)
Write-Host \"$scriptName Complete\"
}
.$path\FLEXSQL-End.ps1
[/code:1]
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'ai testé une ligne de commande du type
[code:1]
$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)
[/code:1]
$process ne se lance pas :
[code:1]
Exception calling \"Start\" with \"1\" argument(s): \"The system cannot find the file specified\"
At line:1 char:36
+ [system.diagnostics.process]::«»start( <<<< $c)
[/code:1]
Si je mets $setup à la place de $InstSQL, ça fonctionne, sauf qu'il me manque tous les paramètres de la commande...
S'il n'y a pas de solution en ces termes, dois-je installer PS v2 ou créer une fonction compatbible avec le .NET 3.5 ?
Merci pour votre aide.
Vincent
Dans le doute, reboot...
Connexion ou Créer un compte pour participer à la conversation.
- vlb
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 25
- Remerciements reçus 0
il y a 15 ans 1 mois #8892
par vlb
Vincent
Dans le doute, reboot...
Réponse de vlb sur le sujet Re:Terminer un process avant de continuer une boucle
Après vérification de la classe j'ai trouvé quelque chose :
msdn.microsoft.com/en-us/libr...ess.start.aspx
En fait, je dois passer mes arguments de la sorte :
[code:1]$process = [system.diagnostics.process]::«»start($setup, $settings)[/code:1]
L'installation fonctionne, maintenant reste à savoir si le script est en attente de fin d'exécution du process...
Vincent
msdn.microsoft.com/en-us/libr...ess.start.aspx
En fait, je dois passer mes arguments de la sorte :
[code:1]$process = [system.diagnostics.process]::«»start($setup, $settings)[/code:1]
L'installation fonctionne, maintenant reste à savoir si le script est en attente de fin d'exécution du process...
Vincent
Vincent
Dans le doute, reboot...
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 15 ans 1 mois #8895
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Terminer un process avant de continuer une boucle
Si tu lis ma réponse à ton premier message, tu verras que je te suggérais cette syntaxe, et que j'y donne également le moyen d'attendre la fin de l'installation avant de poursuivre le script.
Connexion ou Créer un compte pour participer à la conversation.
- vlb
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 25
- Remerciements reçus 0
il y a 15 ans 1 mois #8916
par vlb
Vincent
Dans le doute, reboot...
Réponse de vlb sur le sujet Re:Terminer un process avant de continuer une boucle
janel écrit:
Bonjour Janel,
Merci pour ton retour.
Cependant ce n'est pas très urbain de ne pas laisser le doute entre 2 réponses qui se croisent, car ce n'est pas parce que je poste que j'arrête de chercher, et le fait que l'on puisse être plusieurs à trouver une réponse...
Et en plus ça marche !
Merci à toi Janel
Si tu lis ma réponse à ton premier message, tu verras que je te suggérais cette syntaxe, et que j'y donne également le moyen d'attendre la fin de l'installation avant de poursuivre le script.
Bonjour Janel,
Merci pour ton retour.
Cependant ce n'est pas très urbain de ne pas laisser le doute entre 2 réponses qui se croisent, car ce n'est pas parce que je poste que j'arrête de chercher, et le fait que l'on puisse être plusieurs à trouver une réponse...
Et en plus ça marche !
Merci à toi Janel
Vincent
Dans le doute, reboot...
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 15 ans 1 mois #8920
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Terminer un process avant de continuer une boucle
Non, je ne suis pas très urbain. Sans doute mes origines paysannes. 
Le principal c'est que ça marche !
Le principal c'est que ça marche !
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.091 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les initiés
- Terminer un process avant de continuer une boucle