麻烦与Powershell和运行复杂的命令行

时间:2010-04-27 00:41:52

标签: powershell

我一直在尝试从我们拥有的Powershell构建脚本运行以下命令行;但继续遇到问题

& 'C:\Dev\Yadda\trunk\BuildScripts\U tilities\csmanage.exe' `
  /create-deployment `
  /name:yadddayaddyaddadev `
  /label:yadddayaddyaddadev `
  /package:https://yadddayaddyadda.blob.core.windows.net/mydeployments/20100426_202848_FamilyMoments.cspkg `
  /config:C:\Dev\WalmartOne\trunk\yadddayaddyadda.CloudService\bin\Debug\ServiceConfiguration.cscfg `
  /slot:Staging `
  /hosted-service:yadddayaddyadda-dev"

注意:“公用事业”中的空格是有意的;试图剔除可执行路径中涉及空格的bug。我向你保证,路径确实存在于我机器上的空间中。

从Powershell调用此命令行的最佳方法是什么?我尝试过Invoke-Expression,Diagnostic.Process :: Start,&amp ;;每种方法都会出现一些不同类型的错误;通常它可以找到可执行文件。非常感谢任何建设性的意见。

感谢。

1 个答案:

答案 0 :(得分:2)

一旦我删除了`line continuation characters之后的尾随空格并摆脱了最后一个双引号,它似乎对我有效(在PowerShell 2.0上)。在行继续字符之后注意尾随空格 - PowerShell真的不喜欢这样。请注意,我没有您的实用程序,因此我使用PowerShell Community Extensions中的调试实用程序,它只是将参数回显到屏幕:

PS> C:\Windows\system32>echoargs.exe `
  /create-deployment `
  /name:yadddayaddyaddadev `
  /label:yadddayaddyaddadev `
  /package:https://yadddayaddyadda.blob.core.windows.net/mydeployments/20100426_202848_FamilyMoments.cspkg `
  /config:C:\Dev\WalmartOne\trunk\yadddayaddyadda.CloudService\bin\Debug\ServiceConfiguration.cscfg `
  /slot:Staging `
  /hosted-service:yadddayaddyadda-dev
Arg 0 is </create-deployment>
Arg 1 is </name:yadddayaddyaddadev>
Arg 2 is </label:yadddayaddyaddadev>
Arg 3 is </package:https://yadddayaddyadda.blob.core.windows.net/mydeployments/20100426_202848_FamilyMoments.cspkg>
Arg 4 is </config:C:\Dev\WalmartOne\trunk\yadddayaddyadda.CloudService\bin\Debug\ServiceConfiguration.cscfg>
Arg 5 is </slot:Staging>
Arg 6 is </hosted-service:yadddayaddyadda-dev>

请注意,“U tilies”中的空格应该不是问题。您已引用路径并正确使用调用运算符&。如果删除所有参数,exe是否会调用(即使它只吐出使用情况)?如果确实如此,那么我怀疑在向PowerShell中调用exes时提供参数这是一个常见的问题。