/ / Exécution d’un exécutable dont les valeurs de paramètre sont spécifiées en tant que variables dans powershell - powershell, build

Exécution d’un exécutable dont les valeurs de paramètre sont spécifiées en tant que variables dans powershell - powershell, build

Je suis en train d'écrire un script de sortie en Powershell etavoir besoin d'appeler un exécutable personnalisé et de lui transmettre une série de paramètres. Peu de ces paramètres se voient attribuer des valeurs provenant de diverses conditions et exécutions dans le script. Je constate que les valeurs ne sont pas évaluées lorsque l'exécutable est appelé. Certaines variables doivent également être transmises sous la forme d'une série d'arguments entre guillemets doubles. Ci-dessous, un petit appel

mysample.exe "-forcerebuild" "-release =$ CALC_VERSION"" -projfile = sample.proj "" -buildoptions = "/ p: AllowDevDependencies = true / p: AssemblyVersion =$ CALC_ASSEMBLY_VERSION / flp: LogFile =$ env: tempbuild.log / p: BaseIntermediateOutputPath =$ PROJECT_BASEbuild / clp: nosummary ""

Toutes les variables à évaluer sont mises en évidence. L’exe s’attend à ce que toutes les options fournies à -buildoptions à l’intérieur de la cité -buildoptions = "toutes les options de construction"

Les valeurs ne semblent pas être évaluées. Cependant, si je mets les options de construction en tant que variable distincte et l’imprime, les valeurs semblent être évaluées. Je suis nouveau à Powershell et apprécierais vraiment toute aide avec cela.

Réponses:

4 pour la réponse № 1

Notez que powershell ne "réalise pas de développement variable dans les chaînes entre guillemets simples. Par exemple:

$test_variable = "test"
write-host "this is a $test_variable"
write-host "this is a $test_variable"

imprimera

this is a test
this is a $test_variable

En outre, Powershell a des problèmes pour passer les arguments aux exes. Il y a un util appelé EchoArgs.exe qui vient avec Extensions de la communauté Powershell. Utilisez cela et passez votre argument à celui pour voir si elles sont passées correctement.