Skip to content

Conversation

Copy link

Copilot AI commented Dec 2, 2025

Get-VstsTfsClientCredentials fails with ClientOM 19/20 because Microsoft.TeamFoundation.Client.TfsClientCredentials no longer exists—it was replaced by Microsoft.VisualStudio.Services.Client.VssClientCredentials.

Changes

  • Check for VssClientCredentials availability first (ClientOM 19+)
  • Use appropriate OAuth credential type (VssOAuthAccessTokenCredential or VssOAuthCredential)
  • Fall back to TfsClientCredentials for older SDK versions

Follows the same pattern already used in Get-VssCredentials.

# New: Try VssClientCredentials first (ClientOM 19+)
if ((Get-OMType -TypeName 'Microsoft.VisualStudio.Services.Client.VssClientCredentials' -OMKind 'WebApi' -OMDirectory $OMDirectory)) {
    # Create federated credential and return VssClientCredentials
    ...
    return $credentials
}

# Fall back to TfsClientCredentials for older SDKs
$null = Get-OMType -TypeName 'Microsoft.TeamFoundation.Client.TfsClientCredentials' -OMKind 'ExtendedClient' -OMDirectory $OMDirectory -Require

Fixes #1135
AB#2338698

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • 03nvsblobprodwcus014.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install (dns block)
  • 055vsblobprodwcus02.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install (dns block)
  • 1g1vsblobprodwcus01.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install (dns block)
  • 3eavsblobprodwcus03.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install (dns block)
  • 3zgvsblobprodwcus024.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install (dns block)
  • 40qvsblobprodwcus022.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install (dns block)
  • 4fdvsblobprodwcus012.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install (dns block)
  • 5tbvsblobprodwcus06.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install (dns block)
  • 61cvsblobprodwcus010.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install (dns block)
  • 73dvsblobprodwcus07.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install (dns block)
  • 8usvsblobprodwcus011.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install (dns block)
  • 9owvsblobprodwcus020.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install (dns block)
  • arpvsblobprodwcus017.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install (dns block)
  • crcvsblobprodwcus021.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install (dns block)
  • fslvsblobprodwcus015.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install (dns block)
  • grnvsblobprodwcus04.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install (dns block)
  • k92vsblobprodwcus08.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install (dns block)
  • mnzvsblobprodwcus05.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install (dns block)
  • pl8vsblobprodwcus09.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install (dns block)
  • uubvsblobprodwcus018.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install (dns block)
  • vwmvsblobprodwcus016.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install (dns block)
  • x4wvsblobprodwcus013.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install (dns block)
  • xg1vsblobprodwcus019.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install (dns block)
  • xlkvsblobprodwcus023.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

Repro and Understand the issue

Include AB#2338698 in the PR description.

Work Item Details

Note: Please focus on the descriptions and information that provide context about the task requirements, functionality, and implementation details. Dates, priorities, and administrative metadata are less relevant for coding tasks.

Description

Issue description -

Azure Pipelines Task SDK (PowerShell) version 0.21.2 with ClientOM 19 or 20, this function fails: Get-VstsTfsClientCredentials

Error Message: Cannot find type [Microsoft.TeamFoundation.Client.TfsClientCredentials]

Why It Breaks:

Repository: microsoft/azure-pipelines-task-lib

File: ServerOMFunctions.ps1

Function: Get-TfsClientCredentials

The code tries to create this type: Microsoft.TeamFoundation.Client.TfsClientCredentials

But in ClientOM 19 and 20:

Microsoft.TeamFoundation.Client.dll doesn't exist

The type TfsClientCredentials no longer exists

It was replaced with VssClientCredentials (in a different package)

Who This Affects:

Any Azure Pipelines custom task author who:

Uses the PowerShell Task SDK

Bundles ClientOM 19 or 20 with their task

Calls Get-VstsTfsClientCredentials to authenticate with Azure DevOps

Suggested Fix:  The Get-TfsClientCredentials should probably test for the existence of the VssClientCredentials and use that, then fall back to TfsClientCredentials for backwards compatibility


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

This fixes the issue where Get-VstsTfsClientCredentials fails with
ClientOM 19 or 20 because TfsClientCredentials type no longer exists.

The function now checks for VssClientCredentials first (available in
ClientOM 19+), then falls back to TfsClientCredentials for backward
compatibility with older SDK versions.

Fixes #1135

Co-authored-by: MantavyaDh <145761344+MantavyaDh@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix issue with Get-VstsTfsClientCredentials in PowerShell SDK Add VssClientCredentials support for ClientOM 19+ compatibility Dec 2, 2025
Copilot AI requested a review from MantavyaDh December 2, 2025 07:13
Copilot finished work on behalf of MantavyaDh December 2, 2025 07:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Latest PowerShell task SDK is incompatible with ClientOM 19 and 20

2 participants