我对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是一个测试脚本,只记录传递给它的参数,以便在触摸我的真实脚本之前检查输出。
感激不尽的任何帮助。
答案 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)
我不确定,但我认为您需要-AppName
和appname
之间的空格
" -AppName " + appname
我可以帮助你:(
答案 2 :(得分:2)
我建议使用String.Format()而不是使用+运算符吗?
String.Format("-ExecutionPolicy bypass F:\\hello.ps1 -Location {0} -AppName {1}", location, appname)