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:
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).
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
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
$process ne se lance pas :
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)
[system.diagnostics.process]:start demande un [string] exécutable
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)
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
Partager