我正在使用PowerShell 2.0和Psake 1.4
这是我想要转换为PowerShell的正在运行的dos命令。
"C:\Program Files\Borland\StarTeam 2005 R2\stcmd.exe" co -p "rubble.barney:dinno@HostName:4455/MySolution/WebApp" -is -fp "D:\FooBar\MySolution\Source"
请注意,stcmd的路径中有一个空格
请注意,在barney之间有一个:dinno
请注意区域有三个引用的字符串。
以下是我的脚本属性和注释
$ AppName =“MySolution”
$ StarExe =“C:\ Program Files \ Borland \ StarTeam 2005 R2 \ stcmd.exe”
$ StarProject =“rubble.barney:dinno @ HostName:4455 / $ AppName / WebApp”
$ StarOutDir =“D:\ FooBar \ $ AppName \ Source”
$ StarCommand =“”“$ StarExe”“co -p”“$ StarProject”“ - is -nologo -q -fp”“$ StarOutDir”“”
任务默认 - 取决于GetSource
任务初始{
“在$ AppName上工作”
$ ErrorActionPreference ='停止'
}
任务GetSource -depends Init {
'从明星队获得灵魂'
正确使用调用?它应该是&,还是exec {}
invoke-item $ StarCommand
}
任何帮助都会很棒。
答案 0 :(得分:4)
尝试:
& $starexe co -p $StarProject -is -nologo -q -fp $StarOutDir
我认为你正在使用PowerShell 2.0。 powershell的1.0版本有一个quirkier本地命令*参数解析方式。
-Oisin
答案 1 :(得分:3)
试试这个:
& $StarExe co -p $StarProject -is -nologo -q -fp $StarOutDir
免责声明:我没有使用psake,但我不确定为什么你需要围绕这些变量使用这么多双引号。 FWIW如果在PowerShell脚本中执行,则上述命令应该有效。