我使用以下命令获取TFS中给定解决方案文件夹的最新ChangesetId:
$SolutionServerFolder = "$/MyTfsProject/SupportBranch/MySolution"
$ChangesetId = Get-TfsItemHistory -HistoryItem $SolutionServerFolder -Recurse | Select-Object -First 1 -ExpandProperty ChangesetId
Write-Output "ChangesetId: $ChangesetId"
出于某种原因,如果我在调用Select-Object cmdlet时使用-First 1选项,则后面的Write-Ouput调用不会打印任何内容。我看到变量赋值的隐式输出,但不是预期的文本:ChangesetId:12345。
如果我在Get-TfsItemHistory cmdlet中排除-First 1并使用-StopAfter 1,那么它将按预期工作:
$SolutionServerFolder = "$/MyTfsProject/SupportBranch/MySolution"
$ChangesetId = Get-TfsItemHistory -HistoryItem $SolutionServerFolder -Recurse -Stopafter 1 | Select-Object -ExpandProperty ChangesetId
Write-Output "ChangesetId: $ChangesetId"
我不认为这与TFS cmdlet有任何关系。我恰巧正在努力。它似乎是我不理解的Powershell语法问题。
有没有人知道Select-Object与-First和Write-Output之间的这种交互的原因?
此致
Matthew MacFarland