2010-06-22 6 views
2

Я работаю с PowerShell 2.0 с Psake 1.4Преобразование Dos командованию команды Power Shell

Вот команда ДОС, которая работает, что я хочу, чтобы преобразовать в PowerShell.

"C:\Program Files\Borland\StarTeam 2005 R2\stcmd.exe" co -p "rubble.barney:[email protected]: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 = «завалы .barney: dinno @ HostName: 4455/$ AppName/WebApp "
$ StarOutDir =" D: \ FooBar \ $ AppName \ Source "
$ StarCommand =" "" $ StarExe "" co -p "" $ StarProject " "-is -nologo -q -fp" "$ StarOutDir" ""

task default -depends GetSource

задача Init {
"Работа на $ AppName"
$ ErrorActionPreference = 'Stop'
}

задача GetSource -depends Init {
'Get Souré От Star Team'
правильно использовать invoke? Должна ли она быть & или Exec {}
Invoke-Item $ StarCommand }

Любая помощь будет удивительным.

ответ

4

Try:

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

Я предполагаю, что вы используете Powershell 2.0. Версия 1.0 powershell имела способ собственной команды quirkier * parsing аргументов.

  • собственных команды = EXE, COM, BAT файлы и т.д.

-Oisin

+0

Что я пробовал & $ StarExe co -p $ StarProject -is -nologo -q -fp $ StarOutDir и получил: Не удалось найти диск. Диска с именем «C» не существует. – Razcer

+0

странно. Вы протестировали его с помощью действительно простых аргументов, например «& $ prog», где $ prog is, um, например «c: \ windows \ system32 \ cmd.exe "? – x0n

+0

Это была проблема с кавычками с путём в переменной, doh! – Razcer

3

Попробуйте это:

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

Отказ от ответственности: Я не использую psake, но я не знаю, почему вам нужно так много двойных кавычек вокруг переменных. FWIW приведенная выше команда должна работать, если выполняется в сценарии PowerShell.

+0

прибудет ЙРЧ моей земли! ;-) +1 – x0n

+1

Вы должны наблюдать за тегом PowerShell, как ястреб, чтобы в этот день получить ответ в edgewise. :-) –

+0

В эти дни я даже не могу почти ничего ответить :-(- ах, там еще есть тег 'batch' :-) – Joey