3 votes

Variables, chaînes de caractères et frustration croissante

Je suis assez nouveau en C# et j'ai une mare en essayant de faire fonctionner ce qui devrait être une tâche simple, en bref, j'ai écrit un script PowerShell pour créer des VApps dans un environnement vSphere, le PoSh script fonctionne parfaitement, ensuite j'ai créé (mon premier essai) une application console Windows pour exécuter (initialement) ce script avec l'entrée de l'utilisateur, voici le problème, dans mon application console j'utilise Process. Start pour appeler mon PoSh script et passer des paramètres, mais, ils sortent joints et manquent complètement le dernier paramètre, voici la ligne en question :

Process.Start("Powershell.exe","-ExecutionPolicy bypass F:\\hello.ps1 -Location " + location + " -AppName" + appname);

AppName est complètement ignoré et Location tend à sortir comme -Locationanywhere au lieu de -Location Anywhere, je suis sûr que c'est quelque chose de basique et j'ai parcouru le groupe habituel et RTFM mais aucune joie !

Hello.ps1 est un test script qui enregistre juste les paramètres qui lui sont passés afin que je puisse vérifier la sortie avant de toucher mon vrai script.

Toute aide est la bienvenue.

6voto

rich.okelly Points 24144

Il manque un espace entre -AppName et les guillemets.

string.Format est une méthode utile en .Net - elle vous permet de remplacer facilement les caractères de remplacement par du contenu dynamique de manière à ce que l'affichage de la chaîne "complète" soit intuitif :

string parameters = string.Format("-ExecutionPolicy bypass F:\\hello.ps1 -Location {0} -AppName {1}", location, appName);
Process.Start("Powershell.exe", parameters);

3voto

Je ne suis pas sûr, mais je pense que vous avez besoin d'un espace entre -AppName et le appname

" -AppName " + appname

C'est tout ce que je peux faire pour vous aider :(

2voto

m-y Points 12871

Puis-je suggérer d'utiliser String.Format() au lieu d'utiliser l'opérateur + ?

String.Format("-ExecutionPolicy bypass F:\\hello.ps1 -Location {0} -AppName {1}", location, appname)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X