2010-06-22 26 views
2

Je travaille avec PowerShell 2.0 avec Psake 1.4Commande Dos à commande électrique Shell

Voici la commande dos qui est en cours d'exécution que je veux convertir 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" 

Notez que le chemin d'accès stcmd a un espace dans ce
avis qu'il y a: entre barney: Dinno
Notez qu'il zone trois chaînes entre guillemets.

Voici mes propriétés de script et note

$ AppName = "MySolution"
$ StarExe = "C: \ Program Files \ Borland \ StarTeam 2005 R2 \ stcmd.exe"
$ StarProject = « gravats .barney: dinno @ HostName: 4455/$ NomApp/WebApp "
$ StarOutDir =" D: \ FooBar \ $ NomApplication \ Source "
$ StarCommand =" "" $ StarExe "" co -p "" $ StarProject " "-is -nologo -q -fp" "$ StarOutDir" ""

tâche par défaut -depends GetSource

tâche Init {
"Travailler sur $ AppName"
$ ErrorActionPreference = 'Stop'
}

tâche GetSource -depends Init {
'Get Soure de Star Team'
correcte utiliser invoke? Devrait-il être & ou exec {}
Invoke-item $ StarCommand }

Toute aide serait génial.

Répondre

4

Essayez:

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

Je suppose que vous utilisez PowerShell 2.0. La version 1.0 de powershell avait une commande native quirkier * l'analyse des arguments.

  • commandes natives = exe, com, fichiers de chauve-souris, etc.

-Oisin

+0

Que j'ai essayé & $ StarExe co-p $ StarProject -est -nologo -q -fp $ StarOutDir et a obtenu: Impossible de trouver le lecteur. Un lecteur avec le nom '' C '' n'existe pas – Razcer

+0

bizarre Avez-vous testé avec des arguments très simples, comme "& $ prog" où $ prog est, um, dire "c: \ windows \ system32 \ cmd.exe "? – x0n

+0

Ce était un problème de citations avec le chemin dans la variable, doh! – Razcer

3

Essayez ceci:

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

Disclaimer: Je ne l'ai pas utiliser psake mais je ne sais pas pourquoi vous avez besoin tant de guillemets doubles autour des variables. FWIW la commande ci-dessus devrait fonctionner si elle est exécutée dans un script PowerShell.

+0

get orf ma terre! ;-) +1 – x0n

+1

Vous devez regarder le tag PowerShell comme un faucon pour obtenir une réponse en pointe ces jours-ci. :-) –

+0

Je ne peux même pas répondre à presque n'importe quoi ici ces jours-ci :-(- euh, il y a toujours l'étiquette 'batch' :-) – Joey