2010-12-17 3 views
0

Ich habe den folgenden Powershell-Befehl TFS Differenzmengen mit den dazugehörigen Arbeitsschritte abzurufen:Wie verwendet man PowerShell Where-Object, um TFS-Changesets zurückzugeben, denen keine Arbeitselemente zugewiesen sind?

Get-TfsItemHistory "$/path" -Version "D01/12/10~" -Recursive 
    | Select ChangesetId -exp WorkItems 
    | Format-Table ChangesetId, Id, Title -Auto 

Ich brauche aber auch Changesets, um zu sehen, die keine zugewiesen workitem haben. Ich stellte mir vor, ich könnte die folgende tun (modifiziert nach Vorschlag unten):

Get-TfsItemHistory "$/path" -Version "D01/12/10~" -Recursive 
    | Select ChangesetId -exp WorkItems 
    | Where-Object {$_.WorkItems -eq $null } 

Doch dies scheint meine where-Klausel zu ignorieren und gibt die gleiche Liste von Änderungssätzen als den ersten Befehl.

Dank

Boz

Update:

Wie pro Vorschlag unten, habe ich versucht:

Get-TfsItemHistory "$/path" -Version "D01/12/10~" -Recursive 
    | Where-Object {$_.WorkItems -eq $null } 

Diese Rückkehr keine Zeilen. Allerdings gibt swapping -eq für -ne Zeilen zurück (aber nicht diejenigen, die ich offensichtlich möchte).

Antwort

1

Objekt auswählen gibt nur die von Ihnen angeforderten Felder zurück. Wenn Sie also das Where-Objekt verwenden, bevor Sie es ausgewählt haben, werden Sie die Pipeline nicht sehen und in der Pipeline abwarten.

+0

Dank, habe ich versucht, wie Sie vorgeschlagen (eigentlich habe ich nicht die select glaube ich), aber jetzt noch Glück und keine bekomme ich keine Zeilen. – DaBozUK

1

Die Workitems Feld eigentlich eine Sammlung oder Arbeitsschritte, also NULL-Prüfung ist falsch, aber das Zählen 0 Produkte funktioniert:

Get-TfsItemHistory "$/path" -Version "D01/12/10~" -Recursive 
    | Where-Object {$_.WorkItems.Count -eq 0 } 

Auch die Reihenfolge der Wo und Select ist wichtig, da ‚Rerun‘ user hingewiesen oben, danke.

Boz

Verwandte Themen