我是 C# 的新手,正在努力尝试完成本应是一项简单任务的工作,简而言之,我编写了一个 PowerShell 脚本来在 vSphere 环境中创建 VApp,PoSh 脚本完美运行,接下来我创建了(我的第一次)一个 Windows 控制台应用程序来运行(最初)这个带有用户输入的脚本,这是问题所在,在我的控制台应用程序中我正在使用 Process.Start 调用我的 PoSh 脚本并传递参数,但是,它们联合起来并完全缺少最后一个参数,这是有问题的行:
Process.Start("Powershell.exe","-ExecutionPolicy bypass F:\\hello.ps1 -Location "+ location + "-AppName"+ appname);
AppName 被完全忽略,Location 往往以 -Locationanywhere 而不是 -Location Anywhere 的形式出现,我确信这是基本的东西,我已经搜索了通常的组和 RTFM,但没有快乐!
Hello.ps1 是一个测试脚本,它只记录传递给它的参数,因此我可以在接触我的真实脚本之前检查输出。
感谢收到的任何帮助。
最佳答案
-AppName
和双引号之间缺少空格。
string.Format
是 .Net 中的一个有用方法 - 它允许您以一种直观地查看“完整”字符串的方式轻松地将占位符替换为动态内容:
string parameters = string.Format("-ExecutionPolicy bypass F:\\hello.ps1 -Location {0} -AppName {1}", location, appName);
Process.Start("Powershell.exe", parameters);
关于c# - 变量、字符串和越来越多的挫败感,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9293268/