All notable changes to TfsCmdlets will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Install-TfsShell— Installs Azure DevOps Shell shortcuts (Start Menu, Desktop) and Windows Terminal profile fragments. Automatically detects Windows Terminal and deploys WT profile fragments.Uninstall-TfsShell— Removes Azure DevOps Shell shortcuts and Windows Terminal profile fragments. Supports selective removal via the-Targetparameter.Get-TfsPersonalAccessToken— Lists or gets Personal Access Tokens (PATs) for the current user (by name, ID, or wildcard). Administrators can list tokens of another user by specifying the-Userparameter, which uses the Token Admin API.New-TfsPersonalAccessToken— Creates a new PAT with the specified display name, scope, and validity period. Supports-AllOrganizationsfor organization-agnostic tokens.Set-TfsPersonalAccessToken— Updates properties (display name, scope, validity, all-organizations flag) of an existing PAT.Update-TfsPersonalAccessToken— Regenerates (rotates) a PAT by revoking and recreating it, preserving its scope and settings.Remove-TfsPersonalAccessToken— Revokes a PAT. Administrators can revoke another user's tokens by specifying the-Userparameter.Rename-TfsPersonalAccessToken— Updates the display name of an existing PAT without changing its scope or expiration date.
Enter-TfsShell: Added Oh-My-Posh integration.- Bundled Oh-My-Posh theme (
azuredevops.omp.json) for the Azure DevOps Shell, displaying the connected organization, project, team, and user in the prompt. - Integration can be controlled via environment variables: set
TFSCMDLETS_OMP_DISABLEto1ortrueto suppress Oh-My-Posh, or setTFSCMDLETS_OMP_THEMEto a custom theme file path. When Oh-My-Posh is detected and neither variable is set, the module automatically initializes the bundled Azure DevOps theme.
- Bundled Oh-My-Posh theme (
- Connection state is now automatically synchronized to
TFSCMDLETS_*process-level environment variables (TFSCMDLETS_CONNECTED,TFSCMDLETS_ORG,TFSCMDLETS_ORG_URL,TFSCMDLETS_USER,TFSCMDLETS_USER_DISPLAY,TFSCMDLETS_IS_HOSTED,TFSCMDLETS_PROJECT,TFSCMDLETS_TEAM) on every connect/disconnect, enabling integration with external prompt customization tools such as Oh-My-Posh and Starship. Remove-Module TfsCmdletsnow clears allTFSCMDLETS_*environment variables viaIModuleAssemblyCleanup.- Bumped
System.CompositionandSystem.Composition.Hostingfrom 6.0.0 to 10.0.5. - WiX installer: Conditional Windows Terminal integration — creates a WT-aware shortcut when Windows Terminal is detected, falls back to standard PowerShell shortcut otherwise.
- Fixed authentication errors when using Personal Access Token authentication with on-premises Servers.
-AzureLoginswitch parameter for all credential-bearing cmdlets (e.g.Connect-TfsTeamProjectCollection,Connect-TfsOrganization, and all cmdlets that accept credential parameters). UsesDefaultAzureCredentialfrom the Azure.Identity SDK to authenticate to Azure DevOps by inheriting the current Azure authentication context (Azure CLI, Managed Identity, Visual Studio, Environment Variables, etc.). Tokens are short-lived (~1 hour) and are automatically renewed when they expire.Azure.IdentityNuGet package dependency for Azure credential support.
Get-TfsGitItem: Fixed an issue where the cmdlet would fail when specifying a commit SHA.
Get-TfsVersion: Adds support for Azure DevOps Services version "20" (currently mapped to 2022).Remove-TfsTeamProject: Removes a double-confirmation prompt when using the-Hardswitch, simplifying the deletion process.Set-TfsWorkItem: Fixed an issue where the actual work item ID wasn't being used when retrieving work item type information, causing some field updates to fail.
Get-ProcessFieldDefinition— Gets information from one or more organization-wide work item fields.New-ProcessFieldDefinition— Creates a new organization-wide work item field.Remove-ProcessFieldDefinition— Removes an organization-wide work item field.
Get-TfsGitBranch: Added a new-Compareargument to get the "Compare" (base) branch of a given repository.Connect-TfsTeamProjectCollection,Connect-TfsOrganization: Now throws an error when trying to connect with invalid credentials instead of silently going into "anonymous mode".- BREAKING:
Get-TfsGitBranch:-Repositoryparameter is now mandatory. - BREAKING:
Get-TfsGitBranchPolicy: Both-Branchand-Repositoryparameters are now mandatory.
Get-TfsArtifact: Fixed an issue where it wouldn't list deleted packages.Get-TfsArtifactFeed: Fixed an issue where it would ignore the-Projectargument and thus not filter feeds by project.Get-TfsWorkItemTag: Fixed an issue where it would fail when given a list of tags as input.Get-TfsWorkItemType: Fixed an issue where it would throw a "Parameter count mismatch" error when trying to get the work item type of a given work item.
Add-TfsWorkItemLink: Added support for specifying the arguments-SuppressNotificationand-BypassRules.- When a cmdlet fails, a full exception dump is now sent to the verbose output stream in addition to the short error message.
- Fixed an issue where
Get-TfsTeamwould not work when specifying the-Defaultparameter. - Fixed an issue where
Invoke-TfsRestApiwould ignore the parameters passed via the-Parametersargument (#228).
- Fixed an issue where the
New-TfsUsercmdlet could throw an error when not supplying project entitlements via the-Projectargument.
New-TfsUser— Creates a new user in the organization and optionally adds them to projects.Remove-TfsUser— Removes a user from the organization.
- Fixed an issue with the Chocolatey publishing process. No changes to cmdlets.
-SuppressNotificationsswitch forNew-TfsWorkItemandSet-TfsWorkItemto suppress notifications when creating or updating work items.
Get-TfsWorkItem: Fixed error when the-Fieldsparameter was "*" (#211).Invoke-TfsRestApi: Fixed error when Azure DevOps API responses were missing thecontent-typeheader.Get-TfsArea,Get-TfsIteration: Fixed error when team projects contained regex-reserved characters (such as parentheses). This also affectedNew-TfsTeamandSet-TfsTeam.Get-TfsWorkItem: Fixed issue where the-AreaPathand-IterationPathparameters would not work when the path either started with a backslash or did not contain the team project name.- Added the installed module version to the Azure DevOps Shell startup command to prevent loading an older version of the module.
Undo-TfsWorkItemQueryRemoval— Restores a deleted work item query.Undo-TfsWorkItemQueryFolderRemoval— Restores a deleted work item query folder (supports-Recursive).
Get-TfsWorkItemQuery,Get-TfsWorkItemQueryFolder: Fixed a bug where the-Deletedswitch was not respected.
New-TfsWorkItem: Fixed issue where AreaPath and IterationPath arguments were switched (#191).
Start-TfsBuild— Starts a pipeline (YAML) / build (Classic).Get-TfsTeamProjectMember— Returns the members of a team project (#59).
New-TfsWorkItem,Set-TfsWorkItem: Fixed a bug where IterationPath was not being set.
- Identity fields in
New-TfsWorkItemandSet-TfsWorkItem(such as "Assigned To") now support either email addresses or user display names as valid values.
Set-TfsWorkItem: Fixed failure with type conversion error (#172).New-TfsWorkItem,Set-TfsWorkItem: Fixed bug where changes to the AssignedTo field would not be reflected.
- All
Connect-*cmdlets now support interactive (-Interactive) logon in PowerShell Core (6+) shells. Previously, only Windows PowerShell (5.*) supported interactive authentication. Interactive logons in PowerShell Core require Azure DevOps Services. Get-TfsWorkItemQueryFoldercan now return the "root" folders (My Queries and/or Shared Queries) when specifying/as the folder path.
Get-TfsWorkItem: Fixed returning an invalid ID due to a change in the WorkItem REST API response (#172).New-TfsWorkItemQuery,New-TfsWorkItemQueryFolder: Fixed issue where queries and folders could not be created when their parent did not exist.
Get-TfsTeam,Get-TfsTeamProject: Fixed limitation to a maximum of 100 results.Get-TfsTeamProjectCollection(Get-TfsOrganization): Fixed "Invalid or non-existent Collection System.Object[]" error (#165).- Fixed a caching bug in the handling of the
-Projectparameter that could lead to the wrong project being returned. - Fixed pipelining bugs in several cmdlets (most noticeably
Get-TfsRepository). - Improved readability of ShouldProcess (Confirm / WhatIf) output in several cmdlets.
Get-TfsArtifact— Lists artifacts.Get-TfsArtifactFeed— Lists artifact feeds.Get-TfsArtifactVersion— Lists artifact versions.Get-TfsArtifactFeedView— Lists artifact feed views.Remove-TfsGitBranch— Removes a Git branch.
New-TfsTeam: Added-AreaPathsargument so team area paths can be defined at team creation time.Get-TfsWorkItem: Supports long result sets again. Added fallback logic to fetch work items one at a time to circumvent the 200-item batch API limitation (#164).
Add-TfsTeamAdmin: Groups can now be added as team administrators (previously limited to users).Get-TfsTeamMember,Get-TfsTeamAdmin: Fixed issue where group members would not be returned.New-TfsTeam: Fixed issue where-NoDefaultAreaand-NoBacklogIterationwere not respected.
New-TfsGitRepository: Can now fork existing Git repositories.Get-TfsGitRepository: Can retrieve information about the parent (forked) repository.
New-TfsWorkItem: Error when not specifying area/iteration paths (#158).New-TfsWorkItem: Error when passing backslash to area/iteration paths (#159).Set-TfsTeam: Error when setting recursive area path value (#160).New-TfsTeam: Error when calling with DefaultAreaPath and/or BacklogIteration arguments set to non-existing paths.
Enable-TfsExtension,Disable-TfsExtension,Get-TfsExtension,Install-TfsExtension,Uninstall-TfsExtension— Extension management cmdlets.Get-TfsGitItem— Gets items from a Git repository.Get-TfsGroup,New-TfsGroup,Remove-TfsGroup,Get-TfsUser— Identity, user and group cmdlets.Get-TfsBuildDefinition,Enable-TfsBuildDefinition,Disable-TfsBuildDefinition,Suspend-TfsBuildDefinition,Resume-TfsBuildDefinition— Pipeline cmdlets.Connect-TfsOrganization,Disconnect-TfsOrganization,Get-TfsOrganization— Organization cmdlets.Import-TfsTeamProjectAvatar,Export-TfsTeamProjectAvatar,Remove-TfsTeamProjectAvatar— Team project avatar cmdlets.Enable-TfsWorkItemTag,Disable-TfsWorkItemTag,Undo-TfsWorkItemRemoval— Work item cmdlets.
Import-TfsWorkItemType,Export-TfsWorkItemType: Now support importing from / exporting to files.Enter-TfsShell: Added-NoProfile(#145).- Most
Get-*cmdlets now support retrieving multiple items at once (#155). - Removed trailing slash from org name in prompt (#148).
Get-TfsTeamProject: Added-IncludeDetailsswitch. Project details (e.g. process template) are no longer fetched by default for performance (BREAKING).Get-TfsWorkItem: Now makes batch API calls to improve performance. Results are limited to 200 work items per call (BREAKING).Invoke-TfsRestApi: Can now save the response to a file via-Destination. Binary content is returned as a byte array.Set-TfsTeam: New arguments-OverwriteAreaPathsand-OverwriteIterationPaths. Both-AreaPathsand-IterationPathsnow support wildcards.Get-TfsTeamProject: Added filter by process template (#104).
- Temporarily removed legacy cmdlets that rely on the old TFS Client Object Model:
Start-TfsIdentitySync,Connect-TfsConfigurationServer,Disconnect-TfsConfigurationServer,Get-TfsConfigurationServer,Get-TfsRegisteredConfigurationServer,Export-TfsGlobalList,Get-TfsGlobalList,Import-TfsGlobalList,New-TfsGlobalList,Remove-TfsGlobalList,Rename-TfsGlobalList,Set-TfsGlobalList,Start-TfsXamlBuild,Dismount-TfsTeamProjectCollection,Mount-TfsTeamProjectCollection,Start-TfsTeamProjectCollection,Stop-TfsTeamProjectCollection,Copy-TfsWorkItem.
Set-TfsTeam: Fixed bug where the-IterationPathsargument was ignored.Get-TfsGroupMember: Fixed issue with PS Core and Azure DevOps Services (#149).New-TfsWorkItem: Fixed failure when specifying area and iteration without prefixing team project (#147).Get-TfsWorkItem: Fixed error when using the-Descriptionparameter.
Get-TfsIdentity: Fixed error when used with Azure DevOps Services. Now uses collection (organization) scope instead of configuration server.Invoke-TfsRestApi: Fixed error calling alternate hosts under Windows PowerShell (Desktop).
Invoke-TfsRestApi: Now automatically unwraps the "value" property in the response (BREAKING). Use-NoAutoUnwrapto preserve previous behavior.
Invoke-TfsRestApi: Fixed error when calling different hosts in the same session (#152).
- All cmdlets now have ConfirmImpact set to Medium. Destructive actions use ShouldContinue() with a
-Forceparameter (#124).
New-TfsArea,New-TfsIteration: Fixed "Parent node '\' does not exist" error.
Enable-TfsGitRepository,Disable-TfsGitRepository— Enable/disable Git repositories (#131).
- Refactored project structure to a single multi-targeting project (TfsCmdlets) instead of three separate projects.
- Added missing directive to the manifest file so that cmdlets are properly exported/exposed. Required update for users on v2.0.0.
New-TfsTeamProject: New defaults forSourceControl(Git) andProcessTemplate(default process) (#116).New-TfsIteration: AddedStartDateandFinishDatearguments.Get-TfsTeamProject,Get-TfsWorkItem: Added-ErrorActionsupport.
- Iteration argument completer is listing Areas (#137).
Rename-TfsIteration: No longer removes iteration dates (#135).New-TfsWorkItem,Set-TfsWorkItem: Fixed error using-Areaand-Iterationarguments (#133).Set-TfsWorkItem: Fixed error setting field values (#132).Get-TfsWorkItem: Fixed-ShowWindow(#123).
Set-TfsTeamProject— Adds support to editing team project details (currently supports setting the team project icon).
- Replaced Azure DevOps CI pipeline with GitHub Actions.
- Fixed documentation site generation.
Get-TfsWorkItem: Can now receive a URL to a work item as a parameter.Get-TfsWorkItemLink: New-LinkTypeargument to filter by well-known link types.- Added format to WorkItemRelation output.
- BREAKING: The pipeline input parameter for
Get-TfsWorkItemhas changed from Project to WorkItem.
- Fixed bug in parameter override logic.
- Fixed StructureGroup value in
New-TfsIteration.
Export-TfsWorkItemAttachment— Downloads work item attachment file contents.Get-TfsWorkItemLink— Gets links and attachment metadata from work items (migrated).Get-TfsWorkItem: New-IncludeLinksswitch to fetch link/attachment information.
- Documentation updates.
Get-TfsWiki,New-TfsWiki,Remove-TfsWiki— Wiki management cmdlets.
Get-TfsRegistryValue,Set-TfsRegistryValue— TFS Registry cmdlets.
Get-TfsConfigurationServer: Can now be run in PowerShell Core.Get-TfsVersion: Updated to recognize Azure DevOps Server 2020.
- WiX (MSI) installer: Added custom bitmaps, changed installation scope from machine-wide to user-wide, added license agreement text.
- Migrated
New-TfsWorkItemandRemove-TfsWorkItemto .NET cmdlets.
- Migrated service hook cmdlets (
Get-TfsServiceHookConsumer,Get-TfsServiceHookNotificationHistory,Get-TfsServiceHookPublisher,Get-TfsServiceHookSubscription) to .NET cmdlets.
- PowerShell 7 (Core) support — most cmdlets now run in both Windows PowerShell and PowerShell 7.
Connect-TfsTeam,Disconnect-TfsTeam,Enter-TfsShell,Exit-TfsShell,Get-TfsReleaseDefinition,Get-TfsVersion,New-TfsProcessTemplate,New-TfsTestPlan,Remove-TfsWorkItemTag,Rename-TfsGlobalList,Rename-TfsTeamProject,Rename-TfsTestPlan,Search-TfsWorkItem,Undo-TfsTeamProjectRemoval.- Published documentation site.
- All cmdlets now have synopsis and parameter documentation.
- Argument completers for
-Server,-Collectionand-Project.
Get-TfsCredentialrenamed toNew-TfsCredential(BREAKING).Get-TfsPolicyTyperenamed toGet-GitTfsPolicyType(BREAKING).- Several cmdlets renamed for consistency (BREAKING):
Get-TfsTeamBacklog→Get-TfsTeamBacklogLevel,Get-TfsTeamBoardCardRuleSettings→Get-TfsTeamBoardCardRule,Set-TfsTeamBoardCardRuleSettings→Set-TfsTeamBoardCardRule.
Set-TfsArea(useRename-TfsAreaorMove-TfsAreainstead).Set-TfsWorkItemBoardStatus(useSet-TfsWorkIteminstead).
Enter-TfsShell,Exit-TfsShell— Azure DevOps Shell mode.Invoke-TfsRestApi— Streamline calls to the Azure DevOps REST API.Get-TfsVersion— Returns version information on a team project collection / organization.- Argument completers for
-Server,-Collectionand-Project. - New aliases for
Connect-*cmdlets:ctfssvr,ctfs,ctfstp,ctfsteam.
- Converted work item query cmdlets (
*-TfsWorkItemQuery,*-TfsWorkItemQueryFolder) to REST API. - Converted PowerShell Format/Types XML files to YAML (built with ps1xmlgen).
- Fixed iteration processing in
Set-TfsTeam. - Fixed classification node (area/iteration) retrieval for old APIs.
- Fixed Azure DevOps Shell command prompt.
- Fixed
Disconnect-*issues.
- The
MoveByargument inSet-TfsClassificationNode(and related area/iteration cmdlets) now shows a deprecation warning and is ignored.
- Fixed issue with Area/Iteration cmdlets not processing pipelines correctly.
- Build definition folder cmdlets:
Get-TfsBuildDefinitionFolder,New-TfsBuildDefinitionFolder,Remove-TfsBuildDefinitionFolder. - Release definition folder cmdlets:
Get-TfsReleaseDefinitionFolder,New-TfsReleaseDefinitionFolder,Remove-TfsReleaseDefinitionFolder.
- Area/iteration cmdlets ported to REST API. New
*-TfsClassificationNodecmdlets with-StructureGroupargument;*-TfsAreaand*-TfsIterationare now aliases.
- Fixed bug in
Connect-TfsTeamProjectCollectionwhen passing a credential.
Add-TfsGroupMember,Get-TfsGroupMember,Remove-TfsGroupMember— Group membership management cmdlets.
- Added essential help comments to all cmdlets.
- Fixed Nuget and Chocolatey package icons.
- Fixed bug in
Get-TfsWorkItemTypethat would not return any WITDs.
- Enable build from cmdline with VS 2015.
- Added custom type detection logic.
- Fixed commit message with apostrophe breaking build.
- Fixed handling of current config server.
- Added proper parameter initialization for credentials.
- Cascade disconnection: When calling a "higher" Disconnect cmdlet, the "lower" ones are cascade-invoked automatically.
- Fixed conditional use of
-TitleinNew-TfsWorkItem. - Fixed argument naming and pipelined return in
Get-TfsWorkItem. - Fixed return when passing
-CurrentinGet-TfsConfigurationServer.
- Removed dependency on .NET 3.5.
- Added help comments to the Areas & Iterations functions.
- Fixed an issue in the AssemblyResolver implementation. Switched from scriptblock to pure .NET implementation to avoid race conditions.