如何等到 TFS Build Queued 在 Powershell 中完成

How to wait till the TFS Build Queued is completed in Powershell

我们的一个要求是等到排队的 TFS 构建完成,然后我们需要执行下一个任务,我已经编写了下面的代码来实现这一点,但这并没有给我想要的结果。

function Wait-QueuedBuild ()
{
     $serverName="http://tfs001:8080/tfs/Collection"

     $tfs = [Microsoft.TeamFoundation.Client.TeamFoundationServerFactory]::GetServer($serverName)

     $buildserver = $tfs.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer])

     $build = $buildServer.QueueBuild($buildServer.GetBuildDefinition("CollectionUtility\BUILD_FULL",$_.Name))

     do
     {   
         sleep 1        
     }
     while (!(build.Status -eq 'InProgress'))
}

如果我没记错的话,您实际上应该在构建过程中处于 while 循环中:

while (build.Status -eq 'InProgress')

此外,我认为您应该使用 GetBuild 方法

查询更新的构建

你需要像Andrey提到的那样在循环中不断查询构建状态。代码应该是这样的:

do {
    sleep 1;
    $queryoption = [Microsoft.TeamFoundation.Build.Client.QueryOptions]::All;
    $build = $buildserver.GetQueuedBuild($build.Id,$queryoption);
}
while ($build.Status -eq 'InProgress')