带-First参数的Select-Object cmdlet似乎禁用了Write-Output

时间:2014-03-18 13:39:52

标签: powershell

我使用以下命令获取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

0 个答案:

没有答案