Donc, j'ai un script PowerShell qui est supposé exécuter un exécutable avec un argument à passer pour définir la méthode que je veux exécuter et j'ai besoin de passer un paramètre, qui est un répertoire dans un fichier de configuration. C'est donc ce que j'ai
Start-Process -FilePath "C:\Program Files\MSBuild\test.exe" -ArgumentList /genmsi/f $MySourceDirectory\src\Deployment\Installations.xml
/ f est le nom court et le fichier est le nom long de mon attribut ... Une erreur de PowerShell m'indique qu'un paramètre de position est introuvable pour/f ou/fichier.
Des pensées?
J'ai réussi à faire fonctionner cela en utilisant l'applet de commande Invoke-Expression
.
Invoke-Expression "& `"$scriptPath`" test -r $number -b $testNumber -f $FileVersion -a $ApplicationID"
Essayez de citer la liste d'arguments:
Start-Process -FilePath "C:\Program Files\MSBuild\test.exe" -ArgumentList "/genmsi/f $MySourceDirectory\src\Deployment\Installations.xml"
Vous pouvez également fournir la liste des arguments sous forme de tableau (arguments séparés par des virgules), mais l'utilisation d'une chaîne est généralement plus simple.
Voici une méthode alternative pour faire plusieurs arguments. Je l'utilise quand les arguments sont trop longs pour une ligne.
$app = 'C:\Program Files\MSBuild\test.exe'
$arg1 = '/genmsi'
$arg2 = '/f'
$arg3 = '$MySourceDirectory\src\Deployment\Installations.xml'
& $app $arg1 $arg2 $arg3
Ajoutons juste un exemple qui a bien fonctionné pour moi:
$sqldb = [string]($sqldir) + '\bin\MySQLInstanceConfig.exe'
$myarg = '-i ConnectionUsage=DSS Port=3311 ServiceName=MySQL RootPassword= ' + $rootpw
Start-Process $sqldb -ArgumentList $myarg