Senden Sie mehrere Parameter über Powershell an den Azure-Devops-Pipeline-Job

Oct 06 2020

Ich kann einen Azure Devops Build-Job starten und einen Textparameter senden, aber ich kann anscheinend nur einen einzelnen Parameter und nicht mehr senden. Ich muss einen Token-Parameter Ok senden, der funktioniert, aber ich möchte auch einen Textparameter senden, der eine JSON-Nutzlast enthält, die von einem Powershell-Skript im Build-Job verarbeitet werden soll. Ich habe also ein Hellow World-Definitionssetup mit zwei Variablen in Pipeline-Variablen. Der erste ist tokentext, der zweite ist jsonInput. In beiden Fällen ist das Kontrollkästchen "Zur Warteschlangenzeit einstellbar" aktiviert. Ich habe ein PowerShell Inline-Skript in der Jobdefinition mit folgendem:

Write-Host "Hello World"
Write-Host "tokentext: $(tokentext) `n" Write-Host "Json Input" Write-Host "---------------------------------------------------" $(jsonInput)

Mein Körper, den ich an die Invoke-RestMethod sende, ist:

$body = @{ definition = @{ id = $buildDefID
}    
parameters = "{`"tokentext`" :$mytoken} {`"jsonInput`" :$j}  
"
}
$b = $body  | ConvertTo-Json

Dies funktioniert, aber das Obige funktioniert nicht:

$body = @{ definition = @{ id = $buildDefID
}    
parameters = "{`"tokentext`" :$mytoken} " } $b = $body  | ConvertTo-Json

Ich habe es mit einem Komma versucht, das die Parameter usw. trennt. Alle Kinder von Dingen, die ich versucht habe. Ich könnte sicher Hilfe gebrauchen, wenn jemand mehrere Parameter für Variablen in einer Build-Definition aus einem Skript sendet.

Vielen Dank

Antworten

1 LeviLu-MSFT Oct 06 2020 at 11:45

Unten Anfrage Körper funktioniert für mich. Bitte probieren Sie es aus.

$body = @{ definition= @{id = $buildDefID};

  parameters ="{`"jsonInput`":`"$jsonInput`", `"tokentext`":`"$tokentext`"}"
 }
$b = $body  | ConvertTo-Json

Sie können Ihre Pipeline auch über Runs - Run Pipeline Rest API ausführen, was weniger kompliziert ist.

POST https://dev.azure.com/{organization}/{project}/_apis/pipelines/{pipelineId}/runs?api-version=6.1-preview.1

pipelineId ist der $buildDefID

Sie können die Parameter wie folgt in Ihren Anfragetext einfügen:

 $body=@{
     
     variables = @{
 
         jsonInput= @{value = $jsonInput}; tokentext= @{value = $tokentext}
      }
  }

$b = $body  | ConvertTo-Json
KrzysztofMadej Oct 06 2020 at 04:55

Bitte versuchen Sie dies:

$body = @{ definition = @{ id = $buildDefID
  }    
  parameters = "{`"tokentext`" :$mytoken, `"jsonInput`" :$j}"
}
$b = $body  | ConvertTo-Json