WorkItem/WorkItemType/WorkItem_WorkItemType.ps1
<#
.SYNOPSIS Exports a work item type definition from a team project to XML. .PARAMETER Name Uses this parameter to filter for an specific Work Item Type. If suppress, cmdlet will return all Work Item Types on XML format. .PARAMETER IncludeGlobalLists Exports the definitions of referenced global lists. If not specified, global list definitions are omitted. .PARAMETER Project Specifies either the name of the Team Project or a previously initialized Microsoft.TeamFoundation.WorkItemTracking.Client.Project object to connect to. If omitted, it defaults to the connection opened by Connect-TfsTeamProject (if any). For more details, see the Get-TfsTeamProject cmdlet. .PARAMETER Collection Specifies either a URL/name of the Team Project Collection to connect to, or a previously initialized TfsTeamProjectCollection object. When using a URL, it must be fully qualified. The format of this string is as follows: http[s]://<ComputerName>:<Port>/[<TFS-vDir>/]<CollectionName> Valid values for the Transport segment of the URI are HTTP and HTTPS. If you specify a connection URI with a Transport segment, but do not specify a port, the session is created with standards ports: 80 for HTTP and 443 for HTTPS. To connect to a Team Project Collection by using its name, a TfsConfigurationServer object must be supplied either via -Server argument or via a previous call to the Connect-TfsConfigurationServer cmdlet. For more details, see the Get-TfsTeamProjectCollection cmdlet. .INPUTS Microsoft.TeamFoundation.WorkItemTracking.Client.Project System.String #> Function Export-TfsWorkItemType { [CmdletBinding()] [OutputType('Xml')] Param ( [Parameter()] [Alias('Name')] [SupportsWildcards()] [string] $WorkItemType = "*", [Parameter()] [switch] $IncludeGlobalLists, [Parameter(ValueFromPipeline=$true)] [object] $Project, [Parameter()] [object] $Collection ) Process { $types = Get-TfsWorkItemType -Name $WorkItemType -Project $Project -Collection $Collection foreach($type in $types) { $type.Export($IncludeGlobalLists) } } } <# .SYNOPSIS Gets one or more Work Item Type definitions from a team project. .PARAMETER Name Uses this parameter to filter for an specific Work Item Type. If suppress, cmdlet will show all Work Item Types. .PARAMETER Project Specifies either the name of the Team Project or a previously initialized Microsoft.TeamFoundation.WorkItemTracking.Client.Project object to connect to. If omitted, it defaults to the connection opened by Connect-TfsTeamProject (if any). For more details, see the Get-TfsTeamProject cmdlet. .PARAMETER Collection Specifies either a URL/name of the Team Project Collection to connect to, or a previously initialized TfsTeamProjectCollection object. When using a URL, it must be fully qualified. The format of this string is as follows: http[s]://<ComputerName>:<Port>/[<TFS-vDir>/]<CollectionName> Valid values for the Transport segment of the URI are HTTP and HTTPS. If you specify a connection URI with a Transport segment, but do not specify a port, the session is created with standards ports: 80 for HTTP and 443 for HTTPS. To connect to a Team Project Collection by using its name, a TfsConfigurationServer object must be supplied either via -Server argument or via a previous call to the Connect-TfsConfigurationServer cmdlet. For more details, see the Get-TfsTeamProjectCollection cmdlet. .EXAMPLE Get-TfsWorkItemType -Name "Task" -Project "My Team Project" Get informations about Work Item Type "Task" of a team project name "My Team Project" .EXAMPLE Get-TfsWorkItemType -Project "My Team Project" Get all Work Item Types of a team project name "My Team Project" .INPUTS Microsoft.TeamFoundation.WorkItemTracking.Client.Project System.String #> Function Get-TfsWorkItemType { [CmdletBinding()] [OutputType('Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemType')] Param ( [Parameter(Position=0)] [SupportsWildcards()] [Alias("Name")] [object] $Type = "*", [Parameter(ValueFromPipeline=$true)] [object] $Project, [Parameter()] [object] $Collection ) Process { if ($Type -is [Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemType]) { return $Type } $tp = Get-TfsTeamProject -Project $Project -Collection $Collection return $tp.WorkItemTypes | Where-Object Name -Like $Type } } <# .SYNOPSIS Imports a work item type definition to a team project from XML. .PARAMETER Project Specifies either the name of the Team Project or a previously initialized Microsoft.TeamFoundation.WorkItemTracking.Client.Project object to connect to. If omitted, it defaults to the connection opened by Connect-TfsTeamProject (if any). For more details, see the Get-TfsTeamProject cmdlet. .PARAMETER Collection Specifies either a URL/name of the Team Project Collection to connect to, or a previously initialized TfsTeamProjectCollection object. When using a URL, it must be fully qualified. The format of this string is as follows: http[s]://<ComputerName>:<Port>/[<TFS-vDir>/]<CollectionName> Valid values for the Transport segment of the URI are HTTP and HTTPS. If you specify a connection URI with a Transport segment, but do not specify a port, the session is created with standards ports: 80 for HTTP and 443 for HTTPS. To connect to a Team Project Collection by using its name, a TfsConfigurationServer object must be supplied either via -Server argument or via a previous call to the Connect-TfsConfigurationServer cmdlet. For more details, see the Get-TfsTeamProjectCollection cmdlet. .INPUTS System.Xml.XmlDocument #> Function Import-TfsWorkItemType { [CmdletBinding(ConfirmImpact='Medium')] Param ( [Parameter(Position=0, ValueFromPipeline=$true)] [xml] $Xml, [Parameter()] [object] $Project, [Parameter()] [object] $Collection ) Process { $tp = Get-TfsTeamProject $Project $Collection $tp.WorkItemTypes.Import($Xml.OuterXml) } } |