2

我正在使用带有 Psake 1.4 的 PowerShell 2.0

这是我要转换为 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 = 'Stop'
}

task GetSource -depends Init {
'Get Soure From Star Team'
正确使用调用?应该是 & 还是 exec { }
invoke-item $StarCommand }

任何帮助都是极好的。

4

2 回答 2

4

尝试:

& $starexe co -p $StarProject -is -nologo -q -fp $StarOutDir

我假设您使用的是 powershell 2.0。powershell 1.0 版的本机命令* 参数解析方式更加古怪。

  • 本机命令 = exe、com、bat 文件等。

-Oisin

于 2010-06-22T21:03:13.830 回答
3

试试这个:

& $StarExe co -p $StarProject -is -nologo -q -fp $StarOutDir

免责声明:我没有使用 psake 但我不确定为什么你需要在变量周围使用这么多双引号。FWIW 如果在 PowerShell 脚本中执行,上述命令应该可以工作。

于 2010-06-22T21:02:45.093 回答