Как запрашивать Visual Studio Team Services (было VSO) с помощью командлетов Microsoft.TeamFoundation.PowerTools.PowerShell

Я не могу запустить ни один из командлетов PowerShell, поставляемых с TFS 2013 Power Tools, для учетной записи Team Services. Проблемные команды включают Get-TfsItemHistory и Get-TfsChangeset. Они отлично работают с экземплярами TFS, не размещенными на хосте, но не с Team Services. Я могу успешно подключиться к Team Services, используя tf.exe и tfpt.exe. Мой скрипт показан ниже вместе с выброшенным исключением. Можно ли использовать эти команды с Team Services, и если да, то что я делаю неправильно? Спасибо.

#my Team Services credentials:
$Username = "[email protected]"
$tfsPath = "https://myname.visualstudio.com/"
$passwordFile=".\ps-password.pwd"

# read passsword from file
# NOTE: password previously stored within file using command:
# read-host -prompt Password -assecurestring | 
#    convertfrom-securestring |  
#    out-file ps-password.pwd -ErrorAction Stop
if (!(test-path $passwordFile))
{
    throw [System.IO.FileNotFoundException] "$passwordFile"
}
$Password = Get-Content "$passwordFile" | ConvertTo-SecureString

$creds = New-Object -typename System.Management.Automation.PSCredential -ArgumentList $Username,$Password

$tfsServer = New-Object System.Uri("$tfsPath")

$tfsCollection = New-Object Microsoft.TeamFoundation.Client.TfsTeamProjectCollection($tfsServer,$creds)
$tfsCollection.Authenticate()

# $tfsCollection | show-object  # NOTE: content of collection looks good when viewed

# PROBLEM COMMANDS:
Get-TfsChangeset -latest -server $tfsCollection
Get-TfsItemHistory "$/" -Server $tfsCollection -Version "D2010-01-01~D2016-08-01" -Recurse -IncludeItem

Возникла ошибка:

Get-TfsChangeset : The filename, directory name, or volume label syntax is incorrect.
At ~\myScript.ps1:30 char:1
+ Get-TfsChangeset -latest -server $tfsCollection
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Get-TfsChangeset], IOException
    + FullyQualifiedErrorId : System.IO.IOException,Microsoft.TeamFoundation.PowerTools.PowerShell.GetTfsChangesetCommand

person undertherope    schedule 30.07.2016    source источник
comment
Я только что попробовал использовать ваш код на своей стороне с моей учетной записью VSTS/VSO, но не заметил никаких проблем, набор изменений можно успешно получить. Предоставленная вами ошибка произошла при Get-TfsChangeset, возникла ли какая-либо ошибка во время $tfsCollection.Authenticate()? Я также добавил сценарий powershell, который использовал ранее, чтобы получить набор изменений для справки.   -  person Eddie Chen - MSFT    schedule 01.08.2016


Ответы (1)


Добавьте мой скрипт powershell для справки:

Add-PSSnapin Microsoft.TeamFoundation.PowerShell

$tfsPath = "https://xxxxxx.visualstudio.com/"

[Microsoft.TeamFoundation.Client.TfsTeamProjectCollection] $tfs = get-tfsserver $tfsPath

Get-TfsChangeset -latest -Server $tfs
Get-TfsItemHistory "$/" -Server $tfs -Version "D2016-07-27~D2016-08-01" -Recurse -IncludeItem
person Eddie Chen - MSFT    schedule 01.08.2016
comment
Я получаю точно такое же поведение. Включение оператора Add-PSSnapin не меняет результат в моем конкретном случае, потому что я загружаю его как часть своего профиля powershell (не показано выше). - person undertherope; 01.08.2016
comment
Аутентификация работает нормально. Интересно, что я могу получить доступ к необходимым данным с помощью Powershell, если я обойду Microsoft.TeamFoundation.Powershell и вместо этого использую сборку Microsoft.TeamFoundation.VersionControl.Client. Однако этот подход требует много усилий, и я бы предпочел его избегать. - person undertherope; 01.08.2016