Ovviamente non so cosa sto facendo.Cosa succede con questa riga di comando di PowerShell che cita/fugge?
Ho finalmente ottenuto il comando di PowerShell per funzionare. Ma non riesco a capire perché funzioni.
La mia preoccupazione è la finale "" caratteri:
&"C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe" `
-verb:sync `
-source:contentPath="$build_directory\deploy" `
-dest:contentPath="$server_temp_directory,computerName=$server,username=$server_username,password=$server_password" `
-verbose `
-postSync=runCommand="powershell -NoLogo -NoProfile -Command $server_temp_directory\remotetasks.ps1 Deploy""
Perché ho bisogno di doppie virgolette?
Il mio IDE (PowerGUI) dice che la linea non è terminata correttamente, ma è l'unico modo in cui posso far funzionare il comando come desiderato.
Che cos'è, che io e l'IDE non sappiamo su qouting in PowerShell?
Un po 'di uscita dal echoargs:
Se corro:
echoargs -postSync=runCommand="powershell -NoLogo -NoProfile -Command $server_temp_directory\remotetasks.ps1 Deploy""
ottengo:
Arg 0 is <-postSync=runCommand=powershell -NoLogo -NoProfile -Command \remotetasks.ps1 Deploy>
Se corro senza le doppie virgolette, Ottengo:
Arg 0 is <-postSync=runCommand=powershell>
Arg 1 is <-NoLogo>
Arg 2 is <-NoProfile>
Arg 3 is <-Command>
Arg 4 is <\remotetasks.ps1>
Arg 5 is <Deploy>
Un'altra cosa da notare è che il comando precedente funziona solo se utilizza = anziché: nell'ultimo argomento.
Questo non funziona:
-postSync:runCommand="powershell -NoLogo -NoProfile -Command $server_temp_directory\remotetasks.ps1 Deploy""
EDIT
Ora ho provato la soluzione di matrice in questo modo:
$arguments = @("-verb:sync",
"-source:contentPath=$build_directory\deploy",
"-dest:contentPath=$server_temp_directory,computerName=$server,username=$server_username,password=$server_password",
"-verbose",
"-postSyncOnSuccess:runCommand=powershell -Command $server_temp_directory\remotetasks.ps1 Deploy")
&"C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe" $arguments
ancora ottengo lo stesso errore:
Errore: argomento "" -postSyncOnSucces non riconosciuto s: runCommand = powershell -Command c: \ temp \ kslog \ remotetasks.ps1 Distribuisci "'. Tutti gli argomenti devono iniziare con "-".
Sto facendo qualcosa di nuovo sbagliato qui?
Grazie per la risposta! Sono lontano dal codice questo fine settimana, ma proverò i tuoi suggerimenti quando tornerò lunedì. Hai ragione, non è tecnicamente una risposta al perché il doppio doppio qoutes funzioni ... ma se si tratta di un bug, e non di una progettazione, potrebbe non valere la pena approfondire comunque la comprensione. Tornerò tra poco. – asgerhallas
così. Ho provato tutti i tipi di combinazioni di utilizzare un array per i parametri. Niente sembra funzionare. Hai un'idea del perché? – asgerhallas
Ho modificato la domanda con il mio nuovo tentativo ... – asgerhallas