Oczywiście nie wiem, co robię.Co się dzieje z tym wierszem poleceń programu PowerShell, cytując/ukrywając?
W końcu mam to polecenie PowerShell do pracy. Ale nie mogę zrozumieć, dlaczego to działa.
Moim problemem jest ostateczna „” znaków:
&"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""
Dlaczego muszę podwójne podwójne cytaty?
Mój IDE (PowerGUI) mówi, że linia nie jest poprawnie zakończona, ale jest to jedyny sposób, w jaki mogę uruchomić komendę zgodnie z oczekiwaniami.
Co to jest, że ja - i IDE - nie wiem o tematach w PowerShell?
Trochę wyjście z echoargs:
Jeśli biegnę:
echoargs -postSync=runCommand="powershell -NoLogo -NoProfile -Command $server_temp_directory\remotetasks.ps1 Deploy""
uzyskać:
Arg 0 is <-postSync=runCommand=powershell -NoLogo -NoProfile -Command \remotetasks.ps1 Deploy>
Jeśli uruchomić bez podwójnymi cudzysłowami, Otrzymuję:
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>
Inną rzeczą, którą należy zauważyć, jest to, że powyższe polecenie działa tylko wtedy, gdy używa = zamiast: w ostatnim argumencie.
To nie zadziała:
-postSync:runCommand="powershell -NoLogo -NoProfile -Command $server_temp_directory\remotetasks.ps1 Deploy""
EDIT
Teraz Próbowałem rozwiązanie tablicy tak:
$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
wciąż otrzymuję ten sam błąd:
Błąd: nierozpoznany argument "" -postSyncOnSucces s: runCommand = powershell - Polecenie c: \ temp \ kslog \ remotetasks.ps1 Rozmieść "". Wszystkie argumenty muszą zaczynać się od "-".
Czy robię coś niedobrego tutaj?
Dziękuję za odpowiedź! W ten weekend jestem z dala od kodu, ale wypróbuję twoje sugestie, kiedy wrócę w poniedziałek. Masz rację, że to nie jest technicznie odpowiedź na pytanie, dlaczego działa podwójna podwójna kolejka ... ale jeśli jest to błąd, a nie projekt, to i tak może nie być warta głębszego zrozumienia. Wrócę wkrótce. – asgerhallas
So. Próbowałem wszystkich rodzajów kombinacji użycia tablicy dla parametrów. Nic nie działa. Czy masz pomysł, dlaczego? – asgerhallas
Edytowałem pytanie z moją nową próbą ... – asgerhallas