Blog

Zugriff auf alle verfügbaren Build-Variablen von Ihrer VSTS Build-Aufgabe aus

Jesse Houwing

Jesse Houwing

Aktualisiert Oktober 22, 2025
2 Minuten
HINWEIS: Dieses Cmdlet funktioniert mit dem Powershell-Host, der mit TFS 2015 RTM ausgeliefert wurde und der durch einen neuen Task-Runner ersetzt werden wird. Ob diese Funktionalität erhalten bleibt, ist ungewiss.

Wenn Sie wissen möchten, welche Variablen während Ihres Builds zur Verfügung stehen, oder wenn Sie möchten, dass Leute Variablen mit einem bestimmten Präfix erstellen und damit etwas anfangen können, dann benötigen Sie Zugriff auf die Liste aller verfügbaren Variablen.

Es ist zwar einfach, mit dem Cmdlet Get-Variable auf eine bestimmte Variable über ihren Namen zuzugreifen, aber es ist nicht so einfach, auf alle Variablen zuzugreifen. Außerdem funktioniert der Befehl Get-Variable nur, wenn Sie den vollständigen Namen vorher kennen.

Mit der folgenden Funktion erhalten Sie ein Wörterbuch mit dem Namen und dem aktuellen Wert jeder Variablen. Sie können damit Aufgaben erstellen, die Konventionen über die Konfiguration stellen und eine Liste aller Variablen abrufen, die mit einem von Ihnen erwarteten Präfix beginnen:

$MyVariables = (Get-Variables $distributedTaskcontext).Keys | ?{ $_.StartsWith("MyPrefix.") }

Verwenden Sie das folgende Cmdlet, um alle Variablen abzurufen und mit ihnen zu tun, was Sie wollen:

Funktion Get-Variablen{
param
(
$distributedTaskContext
[switch] $safe = $false
)
beginnen
{
Write-Debug "Eingabe: Get-Variablen"

$type = [Microsoft.TeamFoundation.DistributedTask.Agent.Interfaces.IServiceManager]
$variableService = $type.GetMethod("GetService").MakeGenericMethod([Microsoft.TeamFoundation.DistributedTask.Agent.Interfaces.IVariableService]).Invoke($distributedTaskContext, @())
$dictionary = New-Object "System.Collections.Generic.Dictionary[string,string]" ([System.StringComparer]::OrdinalIgnoreCase)
}
Prozess
{
if ($safe.IsPresent)
{
$variableService.MergeSafeVariables($Wörterbuch)
}
sonst
{
$variableService.MergeVariables($Wörterbuch)
}
}
Ende
{
Write-Debug "Verlassen: Get-Variablen"
return $Wörterbuch
}
}

Ich habe dieses kleine Snippet verwendet, um einen neuen Build-Task zu erstellen, der den Wert von verschachtelten Variablen erweitern kann. Sie können es hier finden:

Verfasst von

Jesse Houwing

Jesse is a passionate trainer and coach, helping teams improve their productivity and quality all while trying to keep work fun. He is a Professional Scrum Trainer (PST) through Scrum.org, Microsoft Certified Trainer and GitHub Accredited Trainer. Jesse regularly blogs and you'll find him on StackOverflow, he has received the Microsoft Community Contributor Award three years in a row and has been awarded the Microsoft Most Valuable Professional award since 2015. He loves espresso and dark chocolate, travels a lot and takes photos everywhere he goes.

Contact

Let’s discuss how we can support your journey.