变量,字符串和越来越多的挫败感

时间:2012-02-15 12:20:50

标签: c# powershell

我对C#很陌生,我正在努力寻找一个简单的任务来完成工作,简而言之,我编写了一个PowerShell脚本来在vSphere环境中创建VApp,PoSh脚本运行完美接下来我创建了(我的第一个)Windows控制台应用程序来运行(最初)这个带有用户输入的脚本,这就是问题,在我的控制台应用程序中我正在使用Process.Start调用我的PoSh脚本并传递参数,但是,他们联合出来并完全错过了最后一个参数,这是问题所在:

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

AppName完全被忽略了,而且位置往往是-Locationanywhere而不是-Location Anywhere,我确信它是基本的东西,我已经拖曳了通常的组和RTFM,但没有快乐!

Hello.ps1是一个测试脚本,只记录传递给它的参数,以便在触摸我的真实脚本之前检查输出。

感激不尽的任何帮助。

3 个答案:

答案 0 :(得分:6)

-AppName和双引号之间缺少空格。

string.Format是.Net中一个有用的方法 - 它允许您以一种直观地查看“完整”字符串的方式轻松替换占位符和动态内容:

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

答案 1 :(得分:3)

我不确定,但我认为您需要-AppNameappname之间的空格

" -AppName " + appname

我可以帮助你:(

答案 2 :(得分:2)

我建议使用String.Format()而不是使用+运算符吗?

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