2017-10-07 3 views
0

Excuses d'avance si cela est stupide et évident. Je les lignes suivantes dans un script Powershell exécution en tant que tâche de libération dans VSTS:Version VSTS, CMD webdeploy avec variables à l'intérieur de la syntaxe de devis Powershell

Write-Output "Stopping IIS..." 
CMD.exe /C "'C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe' -verb:sync -source:recycleApp -dest:recycleApp='MyApp/MyAppPool',recycleMode='StopAppPool',computername=$privateIp,userName=$serverLogin,password=$serverPassword" 

Il produit la sortie suivante:

2017-10-07T15:07:33.3282985Z Stopping IIS... 
2017-10-07T15:07:34.5470804Z ##[error]The filename, directory name, or volume label syntax is incorrect 

par MS (https://technet.microsoft.com/en-us/library/cc956689.aspx) cela signifie que l'un des caractères suivants est faux: \ \/[]: | <> +; =. ? "

Je ne peux que supposer que c'est ma syntaxe de citation parce que c'est le seul caractère utilisé sur cette ligne.Je sais que ce n'est pas le contenu de l'une des variables, car ils sont utilisés ailleurs dans le script sans problème .? t contiennent aucun des caractères en question)

Aide

+0

Eh bien, pouvez-vous simplement imprimer votre chaîne et examiner ce qui est construit? – 4c74356b41

+0

@ 4c74356b41 Euh ... comment ferais-je ça? –

+0

Créez une variable pour contenir votre chaîne de ligne de commande, puis écrivez-la à l'hôte. –

Répondre

0

Après beaucoup d'essais et d'erreurs, je me suis dit la réponse:

CMD.exe /C "`"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe`" -verb:sync -source:recycleApp -dest:recycleApp='MySite/MySiteAppPool',recycleMode='StopAppPool',computername=$privateIp,userName=$serverLogin,password=$serverPassword" 

Juste un petit mot pour la postérité, c'est spécifiquement une syntaxe qui fonctionnera lorsque vous tenterez pour arrêter/démarrer/recycler un pool d'applications sur un serveur du réseau, à partir d'un script Powershell, en tant que tâche de publication dans VSTS, à l'aide de msdeploy.