2017-05-26 1 views
0

Ich habe einen Build, die .zip-Paket und projectName.SetParameters.xml schafft i die Parameter in der Datei projectName.SetParameters.xml mit meinem Skript overide willTFS-2017 - Fügen Sie einen Schritt zu Benutzername und Passwort eingeben

Ich habe ein Powershell-Skript mit Mandotary-Parametern, ich möchte, dass der Benutzer ihren Benutzernamen und ihr Passwort eingeben, bevor sie in IFS in TFS bereitstellen können. Ich folgte diesem Handbuch link UPDATE: Der REalese-Build funktioniert, aber es fragt den Benutzer nicht Geben Sie den Benutzernamen und das Passwort ein. Muss ich sie manuell im Argumentfeld im Powershell-Schritt festlegen?

In meinem TFS Habe ich ein Powershell Schritt i das Argument -paramsFilePath C hinzugefügt:/somepath /.../.../ projectName.SetParameters.xml

param(
    [string]$paramsFilePath, 
    [Parameter(Mandatory=$true)] 
    [string]$username, 
    [Parameter(Mandatory=$true)] 
    $password 
) 
Write-Verbose -Verbose "Entering script setParameters.ps1" 
Write-Verbose -Verbose ("Path to Parameters: {0}" -f $paramsFilePath) 

# get the environment variables 
$vars = Get-ChildItem -path env:* 

# read in the setParameters file 
$contents = Get-Content -Path $paramsFilePath 

# perform a regex replacement 
$newContents = ""; 
$contents | % { 
    $line = $_ 
    if ($_ -match "__Username__") { 
     $setting = Get-ChildItem -path env:* | ? { $_.Name -eq $Matches[1] } 
     if ($setting) { 
      Write-Verbose -Verbose ("Replacing key {0} with value from environment" -f $username.Name) 
      $line = $_ -replace "__Username__", $username.Value 
     } 
    } 
    $newContents = $line 
} 

Write-Verbose -Verbose "Overwriting SetParameters file with new values" 
Set-Content $paramsFilePath -Value $newContents 

Write-Verbose -Verbose "Exiting script setParameters.ps1" 

Hier ist mein Parameters.xml Code

Antwort

1

Die PowerShell-Ausführung in TFS Build und Release ist nur im nicht interaktiven Modus möglich. Der Build- und Release-Prozess streamt nur das Ausführungsergebnis an die Build-Konsole.

Sie müssen eine Variable mit dem Benutzernamen erstellen. Für das Passwort sollten Sie versteckte Variable verwenden:

enter image description here

Ja, Sie haben zu platzieren, die Argumente in der Argumentfeld des Powershell Schritt

enter image description here

Hinweis : Das Passwortfeld scheint sicher und nicht lesbar, aber es ist nicht wirklich schwer, den Inhalt einer versteckten Var zu lesen iable.

Erstellen Sie die Variablen und legen Sie die Werte fest. Danach können Sie diesen Befehlszeilenparameter im PowerShell-Schrittargumentfeld verwenden.

-paramsFilePath $(paramsFilePath) -username $(username) -password $(password) 
+0

Hallo, ich bin immer diese Fehler jetzt 'Können nicht Argument binden‚auf Parameter username' –

+0

Haben Sie die Variable in der Veröffentlichung Definition erstellt? – k7s5a

+0

Ja, ich habe es sortiert, aber ich habe ein anderes Problem scheint alles zu funktionieren, aber in meiner SetParameters.xml-Datei fängt es nur den ersten Parameter '

Verwandte Themen