Преобразование команды Dos в команду Power Shell

Я работаю с PowerShell 2.0 с Psake 1.4.

Вот работающая команда dos, которую я хочу преобразовать в PowerShell.

"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

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

task GetSource -depends Init {
'Get Soure From Star Team'
правильно использовать вызов? Должно ли это быть & или exec { }
invoke-item $StarCommand }

Любая помощь будет потрясающей.


person Razcer    schedule 22.06.2010    source источник


Ответы (2)


Пытаться:

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

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

  • собственные команды = файлы exe, com, bat и т. д.

-Ойсин

person x0n    schedule 22.06.2010
comment
Что я попробовал & $StarExe co -p $StarProject -is -nologo -q -fp $StarOutDir и получил: Не удается найти диск. Диск с именем «C» не существует. - person Razcer; 23.06.2010
comment
странный. Вы тестировали его с очень простыми аргументами, такими как & $prog, где $prog, скажем, c:\windows\system32\cmd.exe ? - person x0n; 24.06.2010
comment
Это была проблема кавычек с путем в переменной, дох! - person Razcer; 20.01.2011

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

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

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

person Keith Hill    schedule 22.06.2010
comment
Вы должны следить за тегом PowerShell как ястреб, чтобы получить ответ в эти дни. :-) - person Keith Hill; 23.06.2010
comment
В эти дни я даже почти ни на что не могу ответить здесь :-( - ну, ладно, есть еще тег batch :-) - person Joey; 23.06.2010
comment
Хех, да, это тоже помогает. :-) - person Keith Hill; 23.06.2010