使用 TFSConfig 在本地管理 Azure DevOps

Azure DevOps Server 2022 | Azure DevOps Server 2020 | Azure DevOps Server 2019

可以使用 TFSConfig 命令行工具对 Azure DevOps 本地部署执行各种管理操作。

可以从安装了 Azure DevOps Server 的任何计算机运行 TFSConfig

命令行工具位置

Azure DevOps 命令行工具安装在 Azure DevOps 应用程序层服务器的 /Tools 目录中。

  • 2020 Azure DevOps Server:%programfiles%\Azure DevOps Server 2020\Tools
  • Azure DevOps Server 2019:%programfiles%\Azure DevOps Server 2019\Tools
  • TFS 2018:%programfiles%\Microsoft Team Foundation Server 2018\Tools
  • TFS 2017: %programfiles%\Microsoft Team Foundation Server 15.0\Tools
  • TFS 2015: %programfiles%\Microsoft Team Foundation Server 14.0\Tools
  • TFS 2013: %programfiles%\Microsoft Team Foundation Server 12.0\Tools
  • TFS 2012: %programfiles%\Microsoft Team Foundation Server 11.0\Tools
  • TFS 2010: %programfiles%\Microsoft Team Foundation Server 2010\Tools

先决条件

要使许多命令正常运行, TFSConfig 需要能够连接到作为 TFS 部署一部分的各种服务器和服务,并且运行 TFSConfig 的用户需要对这些相同的服务器和服务具有管理权限。 下面将说明特定命令的要求。

许多 TFSConfig 命令必须从提升的命令提示符运行,即使正在运行的用户具有管理凭据。 若要打开提升的命令提示符,请单击“开始”,右键单击“命令提示符”,然后单击“以管理员身份运行”。 有关详细信息,请参阅: 用户帐户控制

还可以使用管理控制台以交互方式执行管理操作,以Azure DevOps Server。 请参阅 管理任务快速参考

列出命令并获取帮助

若要显示 TFSConfig 命令的完整列表,请使用 help 命令:

TFSConfig help

若要获取单个命令的帮助,请使用 help 命令并指定需要帮助的命令的名称。 例如,若要获取 有关 accounts 命令的帮助::

TFSConfig help accounts

帐户

使用 accounts 命令管理这些Azure DevOps Server服务帐户。

  • Azure DevOps Server服务帐户
  • SQL Server Reporting Services的数据源帐户
  • Azure DevOps 代理服务器服务帐户

还可以使用此命令更改Azure DevOps Server数据库的所有权。

TfsConfig accounts /change|add|set|delete|updatepassword|resetowner
	[/accountType:<adminConsole|applicationTier|proxy|reportingDataSource>]
	[/account:<accountName>] [/password:<password>]
	[/sqlInstance:<serverName>] [/databaseName:<databaseName>] [/continue]
操作 说明
UpdatePassword 更改用作服务帐户的帐户的密码。 更改现有帐户以及作为给定帐户运行的所有 accountType。
更改 更改用作服务帐户的帐户。 将新帐户添加到必要的资源和组,授予所需的权限,然后设置服务以使用它。 这不会从资源中删除旧帐户。

如果不使用 accountType 选项,则会更改应用层的服务帐户。
添加 仅将新帐户添加到必要的资源。 适用于 NLB 方案。 如果无法访问某些集合,请使用 continue 标志。 稍后可以再次运行添加以更新任何错过的集合。 将帐户添加到将帐户用作服务帐户所需的组。
Set 仅将服务设置为使用已添加到资源的帐户。 适用于 NLB 方案。
删除 从所有资源中删除帐户。 删除帐户时应采取预防措施,因为这可能会导致其他服务器被拒绝服务。
ResetOwner 如果在移动、克隆或灾难恢复过程中还原数据库,数据库所有者可以切换到管理员还原服务器。 此选项循环访问所有数据库,并将 dbo 登录名设置为当前所有者。
AccountType 说明
AdminConsole 管理控制台 用户是已被授予跨各种资源使用控制台的最低权限的用户。
ApplicationTier 更改核心 Web 服务的 appPool 上的服务帐户。 (TFSService)
代理 更改代理 Web 服务的 appPool 上的服务帐户。 (TFSProxy)
ReportingDataSource 更改报表用于访问报告数据的帐户。 (TFSReports)

默认值为 ApplicationTier

sqlInstance 和 databaseName 仅适用于在配置应用程序层之前将帐户添加到数据库时。 这主要适用于在运行仅 AT 配置向导之前需要其他帐户的灾难恢复方案。

添加或更改帐户时使用 continue 选项。 对于这些操作,每个收集数据库中的帐户都会更改。 如果提供 continue,则当无法访问集合时,该集合将继续。 当可访问时,可以再次运行该服务。

注意

帐户必须采用 domainName\userName 格式。 对于系统帐户,必须在完整帐户名称 (使用引号,例如,“NT Authority\Network Service”) 。 系统帐户不需要密码。

参数 说明
帐户 指定要在引用的帐户类型(如 /AccountType:ApplicationTier)中添加、更改或删除的帐户的名称。
密码 指定服务帐户的密码。 如果使用没有密码的系统帐户或帐户(如 Network Service),则此参数是可选的。
sqlInstance 仅用于 /ResetOwner

如果想要使用默认实例以外的实例,请指定运行SQL Server的服务器的名称和实例的名称。 必须采用以下格式指定名称和实例:

ServerName\InstanceName。
databaseName 仅用于 /ResetOwner

指定要更改其所有权的数据库的名称。 通过使用此命令,可将指定的数据库的所有权重置为在其下运行命令的帐户。
continue 更新在运行命令时不可用的任何组。 此选项通常用于 NLB 方案。

先决条件

若要使用 accounts 命令,你必须是:

  • Azure DevOps 管理员安全组
  • Azure DevOps Server实例使用的所有SQL Server实例的 sysadmin 角色。

如果使用 /proxy 选项,则必须是代理服务器上的管理员。

有关详细信息,请参阅Azure DevOps Server的权限参考

注解

使用 accounts 命令可自动更改Azure DevOps Server的服务帐户、数据库和服务帐户组。 可以配置已创建的帐户,但无法创建帐户。

在更改帐户的域或工作组之前,该帐户必须具有帐户是敏感的,并且不能在应用程序层服务器上委派权限。 有关详细信息,请参阅 Microsoft 网站上的此页面: 启用委托身份验证

accounts 命令支持本地Azure DevOps Server部署。 若要更改Azure DevOps Services帐户的帐户所有者,请参阅更改帐户所有权

示例

将 Reporting Services 数据源的服务帐户更改为 Contoso 域中的新帐户,Contoso\NewAccount将密码更改为 Password

TfsConfig accounts /change /AccountType:ReportingDataSource /Account:Contoso\NewAccount /Password:Password

将网络服务系统帐户添加到服务帐户组,Azure DevOps Server (系统帐户没有) 密码。

TfsConfig accounts /add /AccountType:ApplicationTier /Account:"NT Authority\Network Service"

将命名实例中ContosoMainSQL ServerTeamDatabases上的数据库的所有权TFS_Warehouse更改为运行命令的用户帐户。

注意

使用此命令时,无法指定要设置为数据库所有者的帐户。 所有者将设置为在其下运行命令的帐户。

TfsConfig accounts /ResetOwner /SQLInstance:ContosoMain\TeamDatabases /DatabaseName:TFS_Warehouse

AddProjectReports

注意

addProjectReports 命令可用于 TFS 2017.1 及更高版本。

使用 addProjectReports 命令添加或覆盖现有团队项目的报表。

TfsConfig addProjectReports /collection:<teamProjectCollectionUrl> /teamProject:<projectName> /template:<templateName>
[/force]
选项 说明
collection 必需。 团队项目集合的 URL。
teamproject 必需。 指定团队项目的名称。
template 必需。 指定进程模板的名称。 可用选项包括 Agile、CMMI 和 Scrum。
force 可选。 指定如果报表已存在,则应覆盖这些报表。

先决条件

若要使用 addProjectReports 命令,必须有权运行 TFSConfig 并将 报表上传到 Reporting Service

注解

当项目没有报表或想要更新为进程定义的报表时,请使用 addProjectReports 命令。

在以下情况下,可能需要使用此命令:

  • 项目是在 Azure DevOps 门户中创建的,而不是在 Visual Studio 中创建的
  • 该项目是从 Visual Studio 创建的,但未在 Azure DevOps Server 中配置报告。

如果要使用默认报表覆盖项目中的报表,因为升级了Azure DevOps Server并且项目中的旧报表不再兼容,请使用 /force 选项。 如果有自定义报表,请在执行此操作之前进行备份。

若要详细了解如何将报表添加到本地Azure DevOps Server,请参阅将报表添加到项目

示例

以下示例演示如何将敏捷报表添加到 MyProject 项目集合中的 http://myTfsServer:8080/tfs/DefaultCollection 项目。

TFSConfig addProjectReports /collection:http://myTfsServer:8080/tfs/DefaultCollection /teamproject:MyProject /template:Agile

身份验证

身份验证命令更改Azure DevOps Server应用程序层或代理网站使用的网络身份验证协议。

TFSConfig Authentication [/provider:NTLM|Negotiate] [/viewAll] [/siteType:ApplicationTier|Proxy]

选项

说明

/viewAll

显示Azure DevOps Server的当前身份验证设置。

/provider: { NTLM |Negotiate }

指定要为网站配置的身份验证提供程序。

  • NTLM:使用 NTML 身份验证协议
  • 协商:使用协商 (Kerberos) 身份验证协议

/siteType

指定要更改其网络身份验证协议的网站 (应用程序层或代理) 。 应用程序层是默认的。

先决条件

若要使用 “身份验证” 命令,你必须是 Azure DevOps 管理员安全组的成员,并且是应用程序层服务器或代理服务器上的本地管理员,具体取决于 siteType 选项的值。

注解

要更改Azure DevOps Server所依赖的一个或多个网站的网络身份验证协议的管理员使用身份验证命令。 管理员从应用层运行此命令以更新需要更改其网络身份验证协议的网站。 命令更改 IIS 元数据库中的 NTAuthenticationProviders 属性。

在使用 Authentication 命令更改身份验证协议之前,可以使用 /viewAll 选项运行命令以查看现有设置。

示例

下面的示例显示为网络身份验证协议分配的当前值。

TFSConfig Authentication /viewAll

证书

使用 certificates 命令更改使用 HTTPS、安全套接字层 (SSL) 和证书的Azure DevOps Server部署中客户端身份验证的配置方式。

TfsConfig certificates [/machine] [/disable] [/autoSelect] [/noprompt] [/thumbprints:thumbprint1[,thumbprint2,...]]
选项 说明
计算机 指定证书列表将来自本地计算机上下文,而不是来自当前用户上下文。
disable 指定将禁用客户端身份验证证书设置。
autoSelect 指定将从证书列表中自动选择证书。 不会打开“管理客户端证书”窗口。
noprompt 指定在运行“证书”命令时不会打开“管理客户端证书”窗口。
thumbprints 指定将使用与指定指纹匹配的证书。 可以通过用逗号分隔各个指纹来指定多个证书。

先决条件

若要使用 certificates 命令,你必须是运行命令的计算机上的 Azure DevOps 管理员安全组和本地管理员组的成员。 有关详细信息,请参阅Azure DevOps Server的权限参考

注解

默认情况下, certificates 命令将自动从当前用户的证书列表中选择客户端证书。 但是,可以使用 命令的选项指定当前用户上下文或本地计算机上下文中的特定证书。

在使用 certificates 命令之前,必须先在 Azure DevOps Server 部署中配置服务器以使用证书。 有关详细信息,请参阅为 Azure DevOps Server 设置具有安全套接字层的 HTTPS (SSL)

使用 certificates 命令配置已配置为使用 HTTPS/SSL 和证书的Azure DevOps Server部署使用的客户端证书。 如果使用没有选项的 Certificates 命令,则会自动从运行命令的当前用户上下文中选择客户端证书。

示例

以下示例演示如何指定具有指纹 aa bb cc dd ee 且没有提示的本地计算机证书。

TfsConfig certificates /machine /thumbprint:aa bb cc dd ee /noprompt

以下示例演示如何使用从当前用户存储区自动选择客户端证书来指定 。

TfsConfig certificates /autoselect

ChangeServerID

changeServerID 命令更改与数据库关联的 GUID,以便Azure DevOps Server。 GUID 在 Azure DevOps Server 部署中必须是唯一的。 如果多个数据库具有相同的 GUID,则部署可能会变得不稳定或不可用。 可以更改配置数据库的 GUID 和/或部署中所有项目集合数据库的 GUID。

虽然通常不会在日常操作中使用此命令,但可以在以下情况下使用此命令:

  • 已将部署还原到新硬件,旧部署仍可正常运行,并且希望利用这两种部署。 此方案有时称为克隆服务器。

  • 你想要在重复部署中测试软件更新或硬件配置,以免冒中断生产环境的风险。

  • 你想要在测试实验室或单独的环境中全面测试将数据库还原到新硬件,以确保可以还原部署。

  • 在将集合数据库移动到已为其保留该 GUID 的另一个部署后,必须重置该数据库的 GUID。

注意

changeServerID 命令不可逆。 更改 GUID 后,除非还原该数据库的以前版本,否则无法撤消该更改。

TfsConfig changeServerID /sqlInstance:<serverName> /databaseName:<configurationDatabaseName>
	[/projectCollectionsOnly] [/configDBOnly] [/collectionName]
选项 说明
sqlInstance 必需。 如果想要使用默认实例以外的实例,请指定运行SQL Server的服务器的名称和实例的名称。 如果指定实例,则必须使用格式: ServerName\InstanceName
databaseName 必需。 指定Azure DevOps Server的配置数据库的名称。 默认情况下,此数据库的名称为 TFS_ConfigurationDB。
projectCollectionsOnly 指定仅更改集合的 GUID。
configDBOnly 指定仅更改配置数据库的 GUID。
collectionName 指定为特定集合创建新的实例 ID,但不为 Azure DevOps 实例和其他集合创建新的实例 ID。

先决条件

若要使用 changeServerID 命令,你必须是 Azure DevOps 管理员安全组的成员,并且是Azure DevOps Server使用的所有 SQL Server 实例的 sysadmin 安全角色的成员。 有关详细信息,请参阅 Azure DevOps 的权限参考

注解

使用 changeServerID 命令创建Azure DevOps Server部署的离散副本,以便进行测试或克隆。 使用 changeServerID 命令后,必须指示客户端创建与已更改服务器的连接,然后才能使用它。

示例

以下示例演示如何更改 Azure DevOps Server 的 Contoso1 部署中所有数据库的 GUID,其中配置数据库托管在 SQL Server 中命名实例TeamDatabases上命名ContosoMain的服务器上。

TfsConfig changeServerID /SQLInstance:ContosoMain\TeamDatabases /DatabaseName:TFS_ConfigurationDB

CodeIndex

使用 codeIndex 命令管理Azure DevOps Server上的代码索引。 例如,你可能希望重置该索引以修复 CodeLens 信息,或关闭索引以调查服务器性能问题。

TfsConfig codeIndex /indexingStatus | /setIndexing:[on|off|keepupOnly] |
	/ignoreList:[ add | remove | removeAll | view ] <serverPath> |
	/listLargeFiles [/fileCount:FileCount] [/minSize:MinSize] |
	/reindexAll | 
    /destroyCodeIndex [/noPrompt] |
	/temporaryDataSizeLimit:[ view | <SizeInGBs> | disable ] |
	/indexHistoryPeriod:[ view | all | <NumberOfMonths> ] [/collectionName:<collectionName> | /collectionId:<collectionId>]
选项 说明
indexingStatus 显示代码索引服务的状态和配置。
setIndexing on:开始为所有变更集创建索引。
off:停止为所有变更集创建索引。
keepupOnly:停止为之前创建的变更集创建索引,开始仅为新的变更集创建索引。
ignoreList 指定你不希望编制索引的代码文件的列表及其路径。

add:将不希望编制索引的文件添加到已忽略文件列表。
remove:从已忽略文件列表中移除希望编制索引的文件。
removeAll:清理忽略的文件列表,并开始为所有文件创建索引。
view:查看所有不要编制索引的文件。
ServerPath:指定代码文件的路径。

可以在服务器路径的开头、末尾或两端使用通配符 (*)。
listLargeFiles 显示超出指定大小(以 KB 为单位)的文件的指定数量。 然后可使用 /ignoreList 选项从编制索引中排除这些文件。

为此,需要 Team Foundation Server 2013 Update 3
reindexAll 清理以前的索引数据并重新开始创建索引。
destroyCodeIndex 删除代码索引并移除所有索引的数据。 如果使用 /noPrompt 选项,则无需确认。
temporaryDataSizeLimit 控制处理变更集时 CodeLens 创建的临时数据量。 默认限制为 6 GB(在 Update 5 中为 2 GB)。

view:显示当前大小限制。
SizeInGBs:更改大小限制。
disable:删除大小限制。

在检查过该限制后,CodeLens 才处理新的变更集。 如果临时数据超出此限制,CodeLens 将暂停处理过去的变更集,而不是新的变更集。 数据清理完毕并减少到此限制以下时,CodeLens 将重新开始处理。 清理会在每天自动运行一次。 这意味着临时数据可能超出此限制,直到清理开始运行。

为此,需要 Team Foundation Server 2013 Update 4
indexHistoryPeriod 控制对更改历史记录编制索引的时间长度。 这会影响 CodeLens 向你显示的历史记录量。 默认限值为 12 个月。 这表示 CodeLens 仅显示过去 12 个月的更改历史记录。

view:显示当前月数。
all:对所有更改历史记录编制索引。
NumberOfMonths:更改用于为更改历史记录编制索引的月数。

为此,需要 Team Foundation Server 2013 Update 4
collectionName 指定运行 CodeIndex 命令的项目集合的名称。 如果不使用 /CollectionId,则为必需。
collectionId 指定运行 CodeIndex 命令的项目集合的标识号。 如果不使用 /CollectionName,则为必需项

先决条件

若要使用 codeIndex 命令,你必须是 Azure DevOps 管理员安全组的成员。 有关Azure DevOps Server,请参阅权限参考。

示例

查看代码索引状态和配置:

TfsConfig codeIndex /indexingStatus /collectionName:"Fabrikam Web Site"

开始为所有变更集创建索引:

TfsConfig codeIndex /setIndexing:on /collectionName:"Fabrikam Web Site"

停止为之前创建的变更集创建索引,开始仅为新的变更集创建索引:

TfsConfig codeIndex /setIndexing:keepupOnly /collectionName:"Fabrikam Web Site"

查找最多 50 个大于 10 KB 的文件:

TfsConfig codeIndex /listLargeFiles /fileCount:50 /minSize:10 /collectionName:"Fabrikam Web Site"

从索引中排除特定的文件并将其添加到忽略的文件列表中:

TfsConfig codeIndex /ignoreList:add "$/Fabrikam Web Site/Catalog.cs" /collectionName:"Fabrikam Web Site"

查看所有未编制索引的文件:

TfsConfig codeIndex /ignoreList:view

清理以前的索引数据并重新开始创建索引:

TfsConfig codeIndex /reindexAll /collectionName:"Fabrikam Web Site"

若要保存所有变更集历史记录:

TfsConfig codeIndex /indexHistoryPeriod:all /collectionName:"Fabrikam Web Site"

若要删除对 CodeLens 临时数据的大小限制并不管临时数据大小继续索引:

TfsConfig codeIndex /temporaryDataSizeLimit:disable /collectionName:"Fabrikam Web Site"

删除代码索引并进行确认:

TfsConfig codeIndex /destroyCodeIndex /collectionName:"Fabrikam Web Site"

集合

可以使用 collection 命令从Azure DevOps Server部署中附加、分离或删除项目集合。 还可以使用 collection 命令复制现有集合的数据库、重命名该数据库并将其附加到部署。 此过程有时称为克隆集合。

TfsConfig collection {/attach | /create | /detach | /delete} [/collectionName:<collectionName>]
    [/description:<collectionDescription>]
    [/collectionDB:<serverName>;<databaseName>]
    [/processModel:Inheritance|Xml]
    [/reportingFolder:<reportingFolderPath>]
    [/clone] [/verify] [/continue]
选项 说明
附加 如果未使用 /detach/delete ,则是必需的。 如果指定此选项,则还必须使用 /collectionDB 选项。 作为选项,还可以将 /collectionName/clone 与此选项配合使用。 如果使用 /attach 选项,则指定的收集数据库将添加到 Azure DevOps Server 部署中。
create 创建集合。
detach 如果未使用 /attach/delete ,则是必需的。 如果指定此选项,则还必须使用 /collectionName 选项。 如果使用 /detach 选项,则指定集合的数据库将停止,并且集合将从Azure DevOps Server部署中分离。
删除 如果未使用 /detach/attach ,则是必需的。 如果指定此选项,则还必须使用 /collectionName 选项。 如果使用 /delete 选项,则指定集合的数据库将停止,集合将从Azure DevOps Server永久分离。 你不能将该集合数据库重新附加到此部署或任何其他部署。
CollectionName 指定项目集合的名称。 如果该集合名称包含空格,则必须使用引号将该名称引起来(例如“My Collection”)。 如果使用 /detach/delete ,则是必需的。 如果将此选项与 /detach/delete 一起使用,它将指定要分离或删除的集合。 如果将此选项与 /attach 一起使用,它将指定集合的新名称。 如果将此选项与 /attach/clone 一起使用,它将指定重复集合的名称。
CollectionDB 如果使用 /attach ,则是必需的。 此选项指定运行SQL Server的服务器的名称,以及该服务器上托管的收集数据库的名称。
ServerName 指定托管Azure DevOps Server配置数据库的服务器的名称,以及实例的名称(如果要使用默认实例以外的实例)。 如果指定实例,则必须使用格式: ServerName\InstanceName
DatabaseName 指定配置数据库的名称。 默认情况下,此数据库的名称为 TFS_ConfigurationDB。
clone 如果指定此选项,原始集合数据库将在 SQL Server 中附加为克隆,并将此数据库附加到 Azure DevOps Server。 此选项主要用于拆分项目集合。

提示

/delete 选项不会从 SQL Server 中删除收集数据库。 从 Azure DevOps Server 中删除收集数据库后,可以从 SQL Server 手动删除该数据库。

先决条件

若要使用 collections 命令,您必须是运行 TfsConfig 的计算机上的 Team Foundation Administrators 安全组以及本地管理员组的成员。 还必须是Azure DevOps Server数据库使用的所有SQL Server实例的 sysadmin 安全角色的成员。 如果您的部署与 SharePoint 集成,并且您使用的是 /delete 选项,则您还必须是要从中删除网站集的 SharePoint 场的场管理员组的成员。

有关详细信息,请参阅Azure DevOps Server的权限参考

注解

若要以交互方式管理集合或创建集合,可以使用 Azure DevOps 管理控制台中的“项目集合”节点。 请参阅 管理项目集合

示例

以下示例演示如何从 Azure DevOps Server 部署中永久删除Contoso Summer Intern Projects项目集合。

TfsConfig collection /delete /CollectionName:"Contoso Summer Intern Projects"
TFSConfig - Team Foundation Server Configuration Tool
Copyright � Microsoft Corporation. All rights reserved.
Deleting a project collection is an irreversible operation. A deleted collection cannot be reattached to the same or another Team Foundation Server. Are you sure you want to delete 'Contoso Summer Intern Projects'? (Yes/No)
Yes
Found Collection 'Contoso Summer Intern Projects' Deleting...
The delete of collection 'Contoso Summer Intern Projects' succeeded.

以下示例演示如何复制Contoso Summer Interns Projects项目集合,将其Contoso Winter Interns Projects命名为 ,并将重复集合附加到Azure DevOps Server的部署。

TfsConfig collection /attach /collectiondb:"ContosoMain;TFS_Contoso Summer Interns Projects"
    /CollectionName:"Contoso Winter Intern Projects" /clone

ColumnStoreIndex

注意

命令可用性:需要 TFS 2015.2 及更高版本。

使用 columnStoreIndex 命令为Azure DevOps Server部署使用的数据库启用或禁用列存储索引。

TfsConfig columnStoreIndex /enabled:<true|false>
	/sqlInstance:<serverName>
	/databaseName:<databaseName>
选项 说明
enabled 指定是启用或禁用给定 SQL 实例和数据库的列存储索引。
sqlInstance 指定承载要为其启用或禁用列存储索引的数据库的服务器的名称,以及实例的名称(如果使用非默认值实例)。 如果指定实例,则必须使用格式: ServerName\InstanceName
databaseName 指定为其启用或禁用列存储索引的数据库的名称。

先决条件

若要使用 columnStoreIndex 命令,必须是指定SQL Server实例的 sysadmin 角色的成员。

注解

如果要将数据库从支持列存储索引的 SQL 实例移动到不支持列存储索引的 SQL 实例,则通常使用 columnStoreIndex 命令。 在这种情况下,需要禁用所有列存储索引,然后才能成功移动数据库。 同样,如果要将数据库移回支持列存储索引的 SQL 实例,则可能需要重新启用列存储索引,以节省空间并获得性能。

示例

以下示例演示如何为在命名实例 上运行的 SQL 实例上运行ContosoMainTeamDatabasesTFS_DefaultCollection名为 的数据库启用列存储索引。

TfsConfig columnStoreIndex /enabled:true /sqlInstance:ContosoMain\TeamDatabases /databaseName:TFS_DefaultCollection

ConfigureMail

将运行 Azure DevOps Server 的服务器配置为使用现有 SMTP 服务器来接收电子邮件警报。

TfsConfig configureMail /Enabled:<true|false> /FromEmailAddress:<emailAddress> /SmtpHost:<SMTPHostName>
选项 说明
FromEmailAddress 指定要从Azure DevOps Server为检查、分配给你的工作项或其他通知发送电子邮件通知的地址。 还会检查此地址的有效性,并且根据服务器配置,可能必须表示邮件服务器上的有效电子邮件帐户。 如果地址不存在或无效,则使用默认电子邮件地址。
SmtpHost 指定承载邮件服务器的服务器的名称。

先决条件

若要使用 configureMail 命令,你必须是 Azure DevOps 应用程序层服务器上的 Team Foundation Administrators 安全组的成员。 有关详细信息,请参阅Azure DevOps Server的权限参考

注解

还可以使用管理控制台将Azure DevOps Server配置为使用 SMTP 服务器。

示例

以下示例演示用于将 from 电子邮件地址 TFS@contoso.com 配置为 并将 SMTP 邮件服务器配置为 ContosoMailServer的语法:

TfsConfig configureMail /FromEmailAddress:TFS@contoso.com /SmtpHost:ContosoMailServer

DBCompression

使用 dbCompression 命令为Azure DevOps Server部署使用的数据库启用或禁用数据库页压缩。

TfsConfig dbCompression /pageCompression:[enable|disable]
	/sqlInstance:<serverName>
	/databaseName:<databaseName>
	[/rebuildNow [/offline]]
选项 说明
pageCompression 指定是要为给定的 SQL 实例和数据库启用或禁用页压缩。
sqlInstance 指定承载要为其启用或禁用页压缩的数据库的服务器的名称,以及使用默认值以外的实例时实例的名称。 如果指定实例,则必须使用以下格式: ServerName\InstanceName
databaseName 指定要为其启用或禁用页压缩的数据库的名称。
rebuildNow 可选。 指定是否应重新生成 (数据库索引,并根据需要立即) 压缩或解压缩数据库索引。 如果未使用索引,则每周运行的后台作业将重新生成索引。
offline 可选。 仅与 /rebuildNow 结合使用。 如果未指定 /offline ,则将联机重新生成索引。 如果指定 了 /offline ,则将脱机重新生成索引。 这会阻止其他操作,但可能比联机索引重新生成更快。

先决条件

若要使用 dbCompression 命令,您必须是指定SQL Server实例的 sysadmin 角色的成员。

注解

如果将数据库从支持压缩的 SQL 实例移动到不支持压缩的 SQL 实例,则通常使用 dbCompression 命令。 在这种情况下,需要禁用压缩并解压缩所有索引,然后才能成功移动数据库。 同样,如果要将数据库移回支持压缩的 SQL 实例,则可能需要重新启用压缩以节省空间。

此命令仅更改Azure DevOps Server是否倾向于使用数据库页压缩 - 数据库仍必须托管在版本支持压缩的 SQL 实例中。 有关详细信息,请参阅 SQL Server 各版本支持的功能

示例

以下示例演示如何立即为 SQL 实例ContosoMainTeamDatabases上名为 TFS_DefaultCollection 的数据库启用页面压缩,并联机重新生成索引。

TfsConfig dbCompression /pageCompression:enable /sqlInstance:ContosoMain\TeamDatabases /databaseName:TFS_DefaultCollection /rebuildNow

DeleteTestResults

使用 deleteTestResults 命令从集合存储中删除旧的存储测试结果。 这样做通常是为了减小存储大小或减少将测试结果迁移到新架构所需的时间。

TfsConfig deleteTestResults /ageInDays:<number> /sqlInstance:<serverName> /databaseName:<databaseName>
    [/type:[automated|manual|all]]
    [/preview]
选项 说明
ageInDays 早于指定天数的测试结果将被删除或预览。
sqlInstance 承载要删除或预览测试结果的数据库的服务器的名称,以及使用默认值以外的实例时实例的名称。 如果指定实例,则必须使用格式: ServerName\InstanceName
databaseName 要删除或预览其测试结果的数据库的名称。
type 可选。 要删除的测试结果的类型。 有效值为 自动值、 手动值和 全部值。
预览 可选。 显示将根据年龄(以天为单位)删除的测试结果数,但不要删除这些结果。

先决条件

若要使用 deleteTestResults 命令,您必须是指定 SQL Server 实例的 sysadmin 角色的成员。

注解

使用 /preview 参数查看按项目名称和年份排序的测试结果,而无需删除这些结果。

示例

以下示例演示如何删除在 SQL 实例上运行的 SQL 实例ContosoMainTeamDatabases上名为 TFS_DefaultCollection 的数据库超过 60 天的手动测试结果。

TfsConfig deleteTestResults /ageInDays:60 /sqlInstance:ContosoMain\TeamDatabases /databaseName:TFS_DefaultCollection /type:manual

DeploymentPool

deploymentPool 命令旨在将所有部署组从一个部署池迁移到另一个部署池。

TfsConfig deploymentpool /migrateDeploymentGroups /fromPool:<source pool name> /toPool:<destination pool name>
选项 说明
fromPool 源池名称。
toPool 目标池名称。

标识

标识命令列出或更改Azure DevOps Server部署中用户和组的安全标识符 (SID) 。 在以下情况中,您可能需要更改或更新用户和组的 SID:

  • 更改部署的域

  • 从工作组更改为域或从域更改为工作组

  • 在 Active Directory 中跨域迁移帐户

注意

如果您要更改同一 Active Directory 林内的域,则不需要运行此命令。 Azure DevOps Server将自动处理同一林中移动的 SID 更改。

TfsConfig identities [/change /fromdomain:<domainName1> /todomain:<domainName2>
    [/account:<accountName> [/toaccount:<accountName>]] [/sqlInstance:<serverName> /databaseName:<databaseName>]
选项 说明
更改 指定要更改标识,而非列出标识。
fromdomain 使用 /change 时是必需的。 指定要更改的标识的原始域。 如果要从某个工作组环境更改,请指定计算机的名称。
todomain 使用 /change 时是必需的。 指定要将标识更改到的域。 如果要更改到某个工作组环境,请指定计算机的名称。
account 指定要为其列出或更改标识的帐户的名称。
toaccount 指定要将标识更改到的帐户的名称。
SQLInstance 如果想要使用默认实例以外的实例,请指定运行SQL Server的服务器的名称和实例的名称。 如果指定一个实例,则你必须使用以下格式:

服务器名称\实例名称
DatabaseName 指定Azure DevOps Server的配置数据库的名称。

先决条件

若要使用 identities 命令,你必须是 Team Foundation 管理员安全组的成员,并且是 Team Foundation Server 使用的所有 SQL Server 实例的 sysadmin 角色的成员。 有关详细信息,请参阅设置Azure DevOps Server的管理员权限

注解

您可以选择指定数据库在您为部署配置应用层服务器之前更改标识。 例如,在克隆 Azure DevOps Server 部署时,可以指定数据库来更改服务帐户。

更改标识时,目标帐户必须已存在于 Windows 中。

您必须等待与 Windows 的下一次标识同步,然后才能更新您使用此命令更改的帐户的属性。 此要求包括组到用户、用户到组以及域帐户到本地帐户的更改。

示例

以下示例演示如何列出存储在 Azure DevOps Server 中的所有 Windows 用户和组的名称,以及如何显示每个用户或组的 SID 是否与 Windows 中的 SID 匹配。 Contoso1 域管理员创建了和 Contoso1\\DevelopersContoso1\\Testers 等域组,以帮助简化跨Azure DevOps Server、SQL Server Reporting Services和 SharePoint 产品的权限管理。

TfsConfig identities

    TFSConfig - Team Foundation Server Configuration Tool
    Copyright � Microsoft Corporation. All rights reserved.

    Account Name Exists (see note 1) Matches (see note 2)
    --------------------------------------------------------------------
    CREATOR OWNER True True
    Contoso1\hholt True True
    BUILTIN\Administrators True True
    Contoso1\Developers True True
    Contoso1\Testers True True
    Contoso1\PMs True True
    Contoso1\jpeoples True True
    Contoso1\Domain Admins True True
    Contoso1\SVCACCT1 True True

    9 security identifiers (SIDs) were found stored in Team Foundation Server. Of these, 9 were found in Windows. 0 had differing SIDs.

以下示例演示如何将 Azure DevOps Server 中所有帐户的 SID 从 Contoso1 域更改为域中名称匹配的帐户的 ContosoPrime SID。 只有匹配的帐户名称已经更新其 SID。 例如,如果hholt帐户以 和 ContosoPrime\hholt的形式Contoso1\hholt存在,则帐户 SID 将更改为 的 ContosoPrime\hholtSID。 ContosoPrime\hholt如果该帐户不存在,则不会为 Contoso1\hholt更新 SID。

TfsConfig identities /change /fromdomain:Contoso1 /todomain:ContosoPrime

以下示例演示如何将单个用户帐户 的帐户 Contoso1\hholt更改为另一个用户帐户 的帐户 ContosoPrime\jpeoples

TfsConfig identities /change /fromdomain:Contoso1 /todomain:ContosoPrime /account:hholt /toaccount:jpeoples

以下示例演示如何在将部署的NT AUTHORITY\NETWORK SERVICE域从 Contoso1ContosoPrime更改为 时更改Azure DevOps Server部署中使用的服务帐户的 SID。 若要更改网络服务之类的系统帐户,您必须执行一个两步过程。 首先将服务帐户从 NT AUTHORITY\NETWORK SERVICE 更改为新域中 TempSVC的域帐户,然后将该帐户更改回新域中服务器上的网络服务。 配置数据库托管在 SQL Server 中命名实例TeamDatabases上命名ContosoMain的服务器上。

TfsConfig identities /change /fromdomain:"NT AUTHORITY" /todomain:ContosoPrime /account:"NETWORK SERVICE"
  /toaccount:TempSVC /SQLInstance:ContosoMain\TeamDatabases /DatabaseName:TFS_ConfigurationDB

TfsConfig identities /change /fromdomain:ContosoPrime /todomain:"NT AUTHORITY" /account:TempSVC
	/toaccount:"NETWORK SERVICE"

作业

可以使用 jobs 命令创建一个日志文件,该日志文件提供特定项目集合的最新作业活动的详细信息,或者为一个或所有项目集合重试作业。

TfsConfig jobs /retry|dumplog [/CollectionName:<collectionName>] [/CollectionId:<id>]
选项 说明
retry 如果未使用 /dumplog ,则为必需项。 指定将为指定的项目集合重新尝试最近的作业。 如果使用此选项,则还必须使用 /CollectionName/CollectionID 选项。
dumplog 如果未使用 /retry ,则为必需。 指定集合的最新作业活动将发送到日志文件。 如果使用此选项,则还必须使用 /CollectionName/CollectionID 选项。
CollectionName 如果未使用 /CollectionID ,则为必需。 指定集合的名称, (/retry) 重试最新作业,或 (/dumplog) 记录该集合的名称。 如果要指定所有集合,可以使用星号 (*) 。
CollectionID 如果未使用 /CollectionName ,则为必需项。 指定集合的标识号,最近的作业将重试 (/retry) 或记录 (/dumplog) 。

先决条件

若要使用 作业 命令,你必须是 Azure DevOps 管理员安全组的成员。 有关详细信息,请参阅Azure DevOps Server的权限参考

注解

若要以交互方式重试作业,可以打开 Azure DevOps 的管理控制台,选择集合的“ 状态 ”选项卡,然后选择“ 重试作业”。 有关详细信息,请参阅 打开 Azure DevOps 管理控制台

示例

以下示例演示如何创建一个日志文件,其中列出了 Azure DevOps Server 中项目集合的最新作业活动Contoso Summer Intern Projects

TfsConfig jobs /dumplog /CollectionName:"Contoso Summer Intern Projects"

OfflineDetach

使用 offlineDetach 命令将脱机收集数据库设置为分离的脱机集合数据库。

TfsConfig offlineDetach /configurationDB:<databaseName>
    /collectionDB:<databaseName>
选项 说明
configurationDB 指定要使用的配置数据库的名称。
collectionDB 指定要分离的集合数据库的名称。

先决条件

若要使用 offlineDetach 命令,必须是指定 SQL Server 实例的 sysadmin 角色的成员。

注解

此命令修改指定集合数据库的架构,绝不应针对 Team Foundation Server 部署正在使用的数据库运行。 如果数据库正由 Team Foundation Server 部署使用,请改用 TfsConfig collection /detach

如果需要从备份还原单个收集数据库,而不还原属于同一Azure DevOps Server部署的其他集合数据库,此命令非常有用。 以前,这需要还原一组完整且一致的数据库 (配置以及) 到过渡环境的所有集合,使用这些数据库配置Azure DevOps Server部署,并分离感兴趣的一个集合。

现在可以还原配置数据库和相关集合数据库的一致副本,并运行 offlineDetach 命令。 然后,可以将分离的集合数据库附加到任何Azure DevOps Server部署(采用适当版本)。

示例

下面的示例演示如何使用名为 的配置数据库分离名为 TFS_PrimaryCollection的集合数据库TFS_Configuration,同时在 SQL 实例上运行的服务器上对命名实例 Backups运行ContosoTemp两者。

TfsConfig offlineDetach /configurationDB:ContosoTemp\Backups;TFS_Configuration /collectionDB:ContosoTemp\Backups;TFS_PrimaryCollection

代理

可以使用 代理 命令更新或更改 Azure DevOps 代理服务器使用的设置。 Azure DevOps 代理服务器通过管理分布式团队位置中下载的版本控制文件的缓存,支持分布式团队使用版本控制。 通过配置 Azure DevOps 代理服务器,可以显著减少跨广域连接所需的带宽。 此外,您不必管理版本文件的下载和缓存;文件的管理对于使用文件的开发人员而言是透明的。 同时,任何元数据交换和文件上传都会继续显示在Azure DevOps Server中。 如果使用 Azure DevOps Services在云中托管开发项目,则可以使用 Proxy 命令不仅管理托管集合中项目的缓存,还可以管理该服务使用的某些设置。

有关安装 Azure DevOps 代理服务器和代理的初始配置的详细信息,

请参阅如何:安装 Azure DevOps 代理服务器并设置远程站点。 有关在客户端计算机上配置代理的详细信息,请参阅 Azure DevOps 版本控制命令参考

TfsConfig proxy /add|delete|change [/Collection:<teamProjectCollectionURL> /account:<accountName>]
	/Server:<TeamFoundationServerURL> [/inputs:Key1=Value1; Key2=Value2;...] [/continue]
选项 说明
add 将指定的服务器或集合添加到 Proxy.config 文件中的代理列表。 可以运行 /add 多次以包含多个集合或服务器。 将 /add 与托管在 Azure DevOps Services 上的集合一起使用时,系统会提示你在Azure DevOps Services输入凭据。
更改 更改存储为Azure DevOps Services的服务帐户的凭据。 /change 选项仅用于Azure DevOps Services;不应将其用于Azure DevOps Server的本地部署。
删除 从 Proxy.config 文件中的代理列表中删除指定的服务器或集合。
account 指定用作 Azure DevOps Services 中代理的服务帐户的帐户。 此选项仅用于与 /change 选项一起Azure DevOps Services。

用于Azure DevOps Services的默认服务帐户为“帐户服务”。
continue 继续该命令的执行,即使验证过程产生警告。
集合 指定托管在 Azure DevOps Services 上的项目集合的 AccountName.DomainName/CollectionName URL(格式)。
account 指定用作Azure DevOps Services的服务帐户的帐户的名称。 如果帐户名包含空格,该名称必须用引号 ("") 引起来。 必须根据命令行语法指定帐户名中的所有特定字符。
account 指定Azure DevOps Server部署的 URL(格式ServerURL:Port/tfs)。
PersonalAccessTokenFile (可选)指定包含个人访问令牌的文件的路径。 注册代理时,此令牌将用于对集合或帐户进行身份验证。 在 TFS 2018 Update 1) 中添加 (
inputs 可选。 指定配置代理时要使用的其他设置和值。!

例如,和 GvfsRepositoryName 的值GvfsProjectName可用于配置 Git 存储库以用于 Git 虚拟文件系统 (GVFS) (在 TFS 2018 Update 1 中添加)

先决条件

若要使用 代理 命令,必须是 Azure DevOps 管理员安全组的成员和代理服务器上的管理员。 有关详细信息,请参阅Azure DevOps Server的权限参考。

注解

使用 proxy 命令更新 Azure DevOps Server Proxy 的现有配置。 不能使用 代理 命令进行代理的初始安装和配置。

示例

以下示例演示如何将名为 FABRIKAM 的 Azure DevOps Server 部署添加到代理列表。

TfsConfig proxy /add /Server:http://www.fabrikam.com:8080/tfs 

以下示例演示如何使用个人访问令牌将托管在 Azure DevOps Services 上的项目集合添加到代理列表以进行身份验证。 此令牌仅用于将代理注册到 Azure DevOps Services 帐户 - 默认服务帐户仍用于运行代理。 TFS 2018 Update 1 中添加了此参数,以支持向 Azure DevOps Services 注册代理,而无需登录提示。

TfsConfig proxy /add /Collection:https://HelenaPetersen.tfs.visualstudio.com/PhoneSaver

以下示例演示如何将项目集合添加到代理列表。 此示例使用个人访问令牌针对使用 /Collection 参数指定的集合进行身份验证。 要使用的个人访问令牌将保存到 位于 的 c:\PersonalAccessToken.txt文件中。

TfsConfig proxy /add /Collection:https://HelenaPetersen.tfs.visualstudio.com/PhoneSaver
	/PersonalAccessTokenFile:c:\PersonalAccessToken.txt

以下示例演示如何更改代理用于托管在 Azure DevOps Services 上的项目集合的服务帐户。 集合名为 PhoneSaver,用于Azure DevOps Services的帐户名称为 HelenaPetersen.fabrikam.com,代理使用的服务帐户将更改为 My Proxy Service Account。 由于帐户名包含空格,因此将使用引号将名称放入其中。

TfsConfig proxy /change /Collection:https://HelenaPetersen.tfs.visualstudio.com/PhoneSaver
	/account:"My Proxy Service Account"

以下示例演示如何添加 Git 存储库以用于 GVFS。

TfsConfig proxy /add /Collection:https://HelenaPetersen.tfs.visualstudio.com/PhoneSaver /inputs:GvfsProjectName=PhoneSaver;GvfsRepositoryName=AnotherRepository

RebuildWarehouse

可以使用 rebuildWarehouse 命令重新生成Azure DevOps Server使用的SQL Server Reporting Services和SQL Server Analysis Services数据库。

TfsConfig rebuildWarehouse /analysisServices | /all [/ReportingDataSourcePassword:Password]
选项 说明
analysisServices 如果未使用 /all ,则是必需的。 指定仅重新生成 Analysis Services 的数据库。 如果不存在 Analysis Services 的数据库,则还必须使用 /reportingDataSourcePassword 选项。
all 如果未使用 /analysisServices, 则为必需项。 指定将重新生成Azure DevOps Server使用的所有报表和分析数据库。
reportingDataSourcePassword 如果 TFS_Analysis 数据库不存在,则是必需的。 指定用作 SQL Server Reporting Services (TFSReports) 数据源帐户的帐户的密码。 有关详细信息,请参阅 Azure DevOps Server 中的服务帐户和依赖项

先决条件

若要使用 rebuildWarehouse 命令,你必须是以下组的成员:

  • 运行 Azure DevOps 管理控制台的服务器上的 Azure DevOps 管理员安全组和管理员安全组

  • 服务器上运行托管数据库的 SQL Server 实例的服务器上 sysadmin 组Azure DevOps Server

有关详细信息,请参阅Azure DevOps Server的权限参考

注解

在移动或拆分项目集合、还原数据或更改部署配置时,可以使用此命令。

若要以交互方式开始重新生成这些数据库,可以使用 Azure DevOps 管理控制台中的“报告”节点。 有关详细信息,请参阅 打开 Azure DevOps 管理控制台

示例

以下示例演示如何为部署 Azure DevOps Server 重新生成 Analysis Services 数据库。

TfsConfig rebuildWarehouse /analysisServices

    TFSConfig - Team Foundation Server Configuration Tool
    Copyright � Microsoft Corporation. All rights reserved.
    The Analysis Services database was successfully rebuilt.

RegisterDB

使用 registerDB 更新在 Azure DevOps Server 中托管配置数据库的服务器的名称。 将配置数据库还原到新的硬件或更改部署的域时,您可使用此命令。

TfsConfig registerDB /sqlInstance:<serverName> /databaseName:<databaseName>
选项 说明
SQLInstance 必需。 指定运行SQL Server的服务器的名称,如果想要使用默认实例以外的实例,则指定实例的名称。 如果指定实例,则必须使用格式: ServerName\InstanceName
databaseName 必需。 指定配置数据库的名称。 默认情况下,此名称为 Tfs_Configuration。

先决条件

若要使用 registerDB 命令,你必须是 Azure DevOps 应用程序层服务器上的 Azure DevOps 管理员组的成员,并且是 Azure DevOps 数据层服务器上SQL Server sysadmin 组的成员。 有关详细信息,请参阅Azure DevOps Server的权限参考

注解

使用此命令之前,请备份Azure DevOps Server数据库。

要使 registerDB 命令成功,必须运行以下应用程序池和程序:

  • Azure DevOps Server应用程序池 (应用程序池)
  • ReportServer (应用程序池)
  • SQL Server Reporting Services (程序)

您必须提供配置数据库的确切名称或地址,然后才能正常运行此命令。 如果必须更改存储此数据库的服务器,必须确保Azure DevOps Server指向新位置。

示例

以下示例将Azure DevOps Server重定向到位于 SQL Server 实例 TeamDatabases中的服务器上的ContosoMain配置数据库。

TfsConfig registerDB /SQLInstance:ContosoMain\TeamDatabases /databaseName:Tfs_Configuration

RemapDB

remapDBs 命令将Azure DevOps Server重定向到其数据库存储在多个服务器上,并且你正在还原、移动或以其他方式更改部署的配置。 例如,如果Azure DevOps Server托管在与配置数据库不同的服务器上,则必须将Azure DevOps Server重定向到项目集合的任何数据库。 还必须将Azure DevOps Server重定向到运行SQL Server Analysis Services或SQL Server Reporting Services的服务器(如果这些数据库托管在配置数据库的单独服务器或实例上)。

TfsConfig remapDBs /DatabaseName:ServerName;DatabaseName /SQLInstances:ServerName1,ServerName2
	[/AnalysisInstance:<serverName>] [/AnalysisDatabaseName:<databaseName>]
	[/preview] [/continue]
选项 说明
DatabaseName 除了数据库本身的名称外,还指定要为Azure DevOps Server映射的数据库的服务器的名称。
SQLInstances 指定运行SQL Server的服务器的名称,如果想要使用默认实例以外的实例,则指定实例的名称。

如果要指定多个服务器,则必须使用逗号分隔多对服务器和实例名称。
AnalysisInstance 可选。 指定承载SQL Server Analysis Services的服务器和实例的名称。 使用此选项可以指定承载 Analysis Services 数据库的服务器和实例。
AnalysisDatabaseName 可选。 如果服务器上有多个使用 /AnalysisInstance 选项指定的此类数据库,则指定要与 Azure DevOps Server 一起使用的 Analysis Services 数据库的名称。
预览 可选。 显示更新配置必须执行的操作。
continue 可选。 指定即使尝试查找一个或多个数据库期间发生错误, RemapDB 命令也应继续。 如果使用 /continue 选项,则任何未在指定的服务器或服务器上找到数据库的集合都将重新配置为使用承载配置数据库的服务器和实例。

先决条件

若要使用 remapDBs 命令,你必须是 Azure DevOps 管理员安全组的成员,并且是Azure DevOps Server使用的任何SQL Server数据库的 sysadmin 安全组的成员。 有关详细信息,请参阅Azure DevOps Server的权限参考

注解

使用 remapDBs 命令将Azure DevOps Server重新配置为使用与原始安装中的服务器和实例不同的服务器和实例SQL Server。

示例

以下示例演示如何将Azure DevOps Server重定向到其配置数据库 TFS_Configuration。 此数据库托管在命名实例 TeamDatabasesContosoMain。 其项目集合数据库存储在 上 ContosoMain\TeamDatabases ,默认实例存储在 上 Contoso2

TfsConfig remapDBs /DatabaseName:ContosoMain\TeamDatabases;TFS_Configuration
	/SQLInstances:ContosoMain\TeamDatabases,Contoso2

RepairJobQueue

使用 repairJobQueue 命令修复已停止为部署和集合主机运行的计划作业。

TfsConfig repairJobQueue

先决条件

若要使用 repairJobQueue 命令,您必须是运行 TfsConfig 的计算机上的本地管理员组的成员。 还必须是Azure DevOps Server部署使用的所有SQL Server实例的 sysadmin 安全角色的成员。

注解

如果发现任何计划的作业未运行,通常会使用 repairJobQueue 命令。
该命令不采用任何参数,并且需要配置Azure DevOps Server部署。

示例

TfsConfig repairJobQueue

设置

可以使用 settings 命令自动更改通知接口使用的统一资源定位符 (URL) ,并为Azure DevOps Server的服务器地址进行更改。 默认情况下,通知接口 URL 和服务器 URL 在 Azure DevOps Server 中匹配,但你可以配置单独的 URL。 例如,你可能希望对Azure DevOps Server生成的自动电子邮件使用不同的 URL。 必须从应用层运行此工具以更新所有服务器,以使它们使用新的 URL。

若要以交互方式更改这些 URL 或仅查看当前设置,可以使用适用于 Azure DevOps 的管理控制台。 请参阅 管理任务快速参考

TfsConfig settings [/publicURL:URL]
选项 说明
publicUrl 指定 Azure DevOps 的应用程序层服务器的 URL。 此值存储在 Azure DevOps 的配置数据库中。

先决条件

必须是 Azure DevOps 管理员安全组和应用程序层服务器上的管理员组的成员。 有关详细信息,请参阅设置Azure DevOps Server的管理员权限

注解

settings 命令更改Azure DevOps Server部署中服务器到服务器通信的连接信息。 /publicURL 中指定的 URL 必须可供部署中的所有服务器使用。

示例

以下示例将 NotificationURL 的值更改为 http://contoso.example.com/tfs ,将 ServerURL 的值更改为 http://contoso.example.com:8080/tfs

TfsConfig settings /publicURL:http://contoso.example.com:8080/tfs

设置

使用 安装程序 命令卸载当前在运行命令的计算机上配置的功能。

TfsConfig setup /uninstall:<feature[,feature,...]>

选项

说明

/uninstall

指定要从运行命令的计算机卸载的一个或多个功能。 选项包括:All、ApplicationTier、搜索 和 VersionControlProxy。

先决条件

若要使用 安装程序 命令,你必须是 Azure DevOps 管理员安全组的成员。

示例

以下示例从当前计算机卸载所有Azure DevOps Server功能。

TfsConfig setup /uninstall:All

以下示例卸载应用程序层并从当前计算机生成功能。

TfsConfig setup /uninstall:ApplicationTier 

TCM

升级到最新版本的 Azure DevOps Server 时,系统会自动尝试升级测试管理组件,包括测试计划和套件。

如果自动迁移失败,请使用 TCM 命令手动将测试计划和测试套件升级到其各自的工作项类型 (WIT) 。

TFSConfig TCM /upgradeTestPlans|upgradeStatus /CollectionName:CollectionName /TeamProject:TeamProjectName

选项

说明

/upgradeTestPlans

除非使用 /upgradeStatus ,否则是必需的。

转换现有测试计划和测试套件以指向基于工作项的测试计划和测试套件。 它还更新现有测试管理数据以及其他现有测试项目之间的链接,例如测试套件、测试运行和测试结果。

/upgradeStatus

除非使用 /upgradeTestPlans ,否则是必需的。

报告指定项目的测试数据的迁移状态。 它还指示指定的项目是否有任何测试计划。

/CollectionName:CollectionName

必需。 指定包含要为其迁移测试数据或检查迁移状态的项目的项目集合。

如果项目集合的名称中有空格,请将名称括在引号中,例如“Fabrikam Fiber Collection”。

/TeamProjectName:TeamProjectName

必需。 指定要为其迁移测试数据或检查迁移状态的项目。 必须在使用 /collectionName 参数指定的集合中定义此项目。

如果项目名称中有空格,请将名称括在引号中,例如“我的项目”。

先决条件

你必须是“Team Foundation Administrators”安全组的成员,而且是应用程序层服务器上的管理员。

请参阅设置Azure DevOps Server的管理员权限

注解

必须将应用程序层服务器升级到最新版本的 Azure DevOps Server 2019 才能使用此命令。

你必须先将测试计划工作项定义和测试计划类别导入该项目,才能使用 TCM 命令。

若要详细了解迁移以及何时使用此命令,请参阅 手动更新以支持测试管理

TCM 命令应用于单个项目。 如果需要升级多个项目中的测试计划,则必须针对每个项目单独运行测试计划。

必须从工具目录运行 TCM 命令才能Azure DevOps Server。 默认情况下,该位置为: drive:\%programfiles%\TFS 12.0\Tools

仅当自动迁移现有测试数据失败时,才使用 TCM 命令。

若要详细了解迁移以及何时使用此命令, 请手动更新以支持测试管理。 如果无法访问在服务器升级之前定义的测试计划或测试套件,请运行 TFSConfig TCM upgradeStatus 来确定迁移状态。

为单个项目运行 TCM 命令。 如果需要升级多个项目,则必须针对每个项目依次运行它。

示例

以下示例演示如何在默认项目集合上托管的 Fabrikam Fiber 项目检查测试计划升级的状态 (DefaultCollection) :

tfsconfig tcm /upgradeStatus /CollectionName:DefaultCollection /TeamProject:"Fabrikam Fiber"

无人参与

命令可用性:Azure DevOps Server 2019

无人参与命令专为熟悉Azure DevOps Server和配置过程以及需要在不同计算机上安装Azure DevOps Server的用户而设计。

例如,如果使用 Azure DevOps 生成,则可以使用 无人参与 命令使用相同的配置文件安装多个生成服务器。

使用 /create 选项创建无人参与文件。 此文件定义Azure DevOps Server安装的所有配置参数。 接下来,使用 /configure 选项实际执行配置。

此过程允许从头到尾配置Azure DevOps Server,而无需在安装过程中提供输入。 在多个安装情况下,这还能帮助确保在多个服务器之间使用完全相同的配置参数。

TfsConfig unattend /create|configure /type:InstallType /unattendfile:ConfigurationFileName 
    [/inputs:Key1=Value1; Key2=Value2;...] [/verify] [/continue]
选项 说明
create 使用你指定的名称和参数创建无人参与文件。
配置 使用指定的无人参与文件和参数配置Azure DevOps Server。 必须对此选项使用 /type 或 /unattendfile。
类型 指定要使用的配置类型。 使用 /configure 时,要求 /type 或 /unattendfile,但是你不能同时使用这二者。
unattendfile 指定要创建或使用的无人参与文件,具体取决于初始参数是 /create 还是 /configure。 使用 /configure 时,要求 /unattendfile 或 /type。
inputs 可选。 如果你使用 /create,则指定创建无人参与文件时要使用的设置和值。 如果你使用 /configure,则指定要与无人参与文件结合使用的其他设置和值。

作为使用 /inputs 的替代方式,你可以使用任何纯文本编辑器手动编辑无人参与文件。 对于某些输入类型(如 ServiceAccountPassword 或 PersonalAccessToken),这是必需的,因为无法使用 /inputs 参数设置这些机密值。
验证 可选。 指定一个配置运行,该运行仅完成基于无人参与文件、输入和配置类型的验证检查。 这是执行完整配置的替代方法。
continue 可选。 指定 /create 或 /configure 应忽略来自验证检查的警告并继续操作。
InstallType 说明
NewServerBasic 为Azure DevOps Server配置基本开发服务。 这包括源代码管理、工作项、生成和可选搜索。
NewServerAdvanced 配置基本开发服务,并允许可选配置与 Reporting Services 集成。
升级 将Azure DevOps Server从受支持的上一版本升级到当前版本。
PreProductionUpgrade 在预生产环境中对现有Azure DevOps Server部署测试升级。 这通常使用从生产备份还原的数据库来完成。 此方案包括其他步骤,以确保新部署不会干扰生产部署。
ApplicationTierOnlyBasic 使用提供的配置数据库中的现有设置配置新的应用程序层。 此选项允许使用现有设置快速启动并运行新的应用程序层。 如果希望能够更改现有设置,请改用 Advanced ApplicationTierOnlyAdvanced 类型。
ApplicationTierOnlyAdvanced 配置可完全控制所有设置的新应用程序层。 设置将默认为提供的配置数据库中的现有值。 如果要保留所有现有设置,请改用 ApplicationTierOnlyBasic 类型。
Clone 配置新的Azure DevOps Server部署,该部署是现有部署的克隆。 这通常使用从生产备份还原的数据库来创建可以测试配置更改、扩展和其他修改的环境。 此方案包括其他步骤,以确保新部署不会干扰生产部署。
代理 配置版本控制代理服务。

先决条件

  • 你必须是安装该软件的计算机上“Administrators”组的成员。

  • 根据安装的类型,你可能还需要其他的管理员权限。

例如,如果使用无人参与命令安装 Azure DevOps Server ,则必须是支持Azure DevOps Server的 SQL Server 实例上的 sysadmin 组的成员。 有关详细信息,请参阅将服务器级别管理员添加到 Azure DevOps Server 中的 Q & A 部分。

注解

在使用无人参与命令配置Azure DevOps Server之前,必须创建将用作部署一部分的服务帐户。 你还必须为选中的安装类型安装任何必备软件。 这包括Azure DevOps Server本身。 必须安装Azure DevOps Server但不必对其进行配置,因为无人参与命令会为你执行此操作。

无人参与命令配置Azure DevOps Server组件。 它不会执行软件的初始安装。 在计算机上存在位后,它将根据你的规范配置软件。

示例

以下示例演示如何为 Azure DevOps Server 的基本安装创建无人参与文件。

TfsConfig unattend /create /type:basic /unattendfile:configTFSBasic.ini

在本示例中,将在与命令相同的目录中创建无人参与文件。 将作为命令的一部分创建日志文件,并且将作为执行命令的一部分,在命令中返回文件的位置。

以下示例演示如何在配置期间指定用于 GVFS 的 Git 存储库。

TfsConfig unattend /configure /type:proxy /inputs:ProjectCollectionUrl=http://FabrikamFiberTFS:8080/tfs/defaultcollection;GvfsProjectName=Fabrikam-Fiber-Git;GvfsRepositoryName=TestGit

以下示例演示如何为 Azure DevOps 代理服务器的配置创建无人参与文件。

重要

在此示例中,如果管理员想要使用个人访问令牌进行身份验证,则需要手动编辑文件以指定个人访问令牌值。 为此,可以在创建的无人参与文件中为个人访问令牌添加一行,例如: PersonalAccessToken=PersonalAccessTokenValue

TfsConfig unattend /create /type:proxy "/inputs:ProjectCollectionUrl=http://FabrikamFiberTFS:8080/tfs/defaultcollection" /unattendFile:c:\unattend.txt

以下示例演示如何使用 作为生成服务帐户在服务器上FabrikamFiber\BuildSVC为 Azure DevOps Server Build 的配置创建无人参与文件,然后使用该无人参与文件配置Azure DevOps Server生成。

重要

在本示例中,在创建无人参与文件后,管理员将手动编辑该文件以指定生成服务帐户的密码。 使用 ServiceAccountPassword=Password; 添加密码作为输入不会将密码信息添加到文件中。

TfsConfig unattend /create /type:build /unattendfile:configTFSBuild.ini
    /inputs:IsServiceAccountBuiltIn=false;ServiceAccountName=FabrikamFiber\\BuildSVCTFSConfig
TfsConfig unattend /configure /unattendfile:configTFSBuild.ini

第一个命令将返回以下信息:

Microsoft (R) TfsConfig - Team Foundation Server Configuration Tool
Copyright (c) Microsoft Corporation. All rights reserved.

Command: unattend
Logging sent to file C:\ProgramData\Microsoft\Team Foundation\Server Configuration\Logs\TFS_Build Configuration_0512_203133.log

第二个命令返回以下信息,包括配置 FabrikamFiberTFS Azure DevOps Build 的服务器的名称以及与控制器 DefaultCollection关联的项目集合:

    Microsoft (R) TfsConfig - Team Foundation Server Configuration Tool
    Copyright (c) Microsoft Corporation. All rights reserved.

    Command: unattend

    ---------------------------------------------
            Inputs:
    ---------------------------------------------

    Feedback
            Send Feedback: True

    Build Resources
            Configuration Type: create
            Agent Count: 1
            New Controller Name: FabrikamFiberTFS - Controller
            Clean Up Resources: False

    Project Collection
            Collection URL: http://FabrikamFiberTFS:8080/tfs/defaultcollection

    Windows Service
            Service Account: FabrikamFiber\BuildSVC
            Service Password: ********

    Advanced Settings *
            Port: 9191

    ---------------------------------------------
            Running Readiness Checks
    ---------------------------------------------

    [1/2] System Verifications
    [2/2] Build Service Verifications

    ---------------------------------------------
            Configuring
    ---------------------------------------------

            root
    [1/4] Install Team Foundation Build Service
            Installing Windows services ...
            Adding service account to groups ...
            Setting ACL on a windows service
    [2/4] Enable Event Logging
            Adding event log sources ...
            Token replace a config file
            RegisterBuildEtwProvider
            Configuring ETW event sources ...
    [3/4] Register with Team Foundation Server
            Registering the build service
    [4/4] Start Team Foundation Build Service
            StartBuildHost
            Starting Windows services ...
            Marking feature configured status
    [Info] [Register with Team Foundation Server] Firewall exception added for port
    9191

    TeamBuild completed successfully.
    Logging sent to file C:\ProgramData\Microsoft\Team Foundation\Server Configuration\Logs\TFS_Build Configuration_0512_203322.log

ZipLogs

ziplogs 命令旨在收集日志,并在 中删除 ProgramData\Microsoft\Azure DevOps\Server Configurationzip。

TfsConfig zipLogs

TfsConfig zipLogs