PowerShellのTFSPowerToolsコマンドレットを使用して、サーバーからチェンジセットと関連する作業項目に関する情報を取得しようとしています。私は問題を私が理解していない振る舞いに要約しました、そして私はそれがTFS特有ではないことを望んでいます(それでそこにいる誰かが私に問題を説明することができるかもしれません:))
これが私が仕事に取り掛かることができる唯一のコマンドです:
Get-TfsItemHistory C:\ myDir -recurse -stopafter 5 | %{書き込みホスト$_。WorkItems[0]["タイトル"]}
Get-TfsItemHistoryは5つのChangeSetのリストを返し、それらをforeachにパイプして、最初に関連付けられたWorkItemのタイトルを出力します。それで、私の問題は何ですか?私は大きなスクリプトを書き込もうとしていますが、C#プログラムのように見えるようにコーディングすることを好みます(PowerShell構文で泣きます)。上記を他の方法で記述しようとすると、WorkItemsコレクションはnullになります。
次のコマンド(論理的に同等であると解釈します)は機能しません(WorkItemsコレクションはnullです)。
$ items = Get-TfsItemHistory C:\ myDir -recurse -stopafter 5 $ items | ForEach-Object {Write-Host$_。WorkItems[0]["Title"]}
私が本当に好むもの:
$ items = Get-TfsItemHistory C:\ myDir -recurse -stopafter 5 foreach($itemsの$item) {{ $ item.WorkItems[0]["タイトル"] #他のことをたくさんする }
'foreach'演算子とForEach-Objectコマンドレットの違いについての記事を読みましたが、それはパフォーマンスに関する議論のようです。これは、配管がいつ使用されているかについての問題のようです。
これらの3つのアプローチすべてが機能しない理由はわかりません。任意の洞察をいただければ幸いです。