使用 TFSConfig 在本地管理 Azure DevOps

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

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

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

命令行工具位置

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

  • Azure DevOps Server 2020:%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 命令的完整列表,请使用 帮助 命令:

TFSConfig help

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

TFSConfig help 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]
操作 说明
更新密码 更改用作服务帐户的帐户的密码。 更改现有帐户及所有作为指定帐户运行的帐户类型。
改变 更改被用作服务账户的账号。 将新帐户添加到必要的资源和组,授予所需的权限,然后设置要使用的服务。 这不会从资源中删除旧帐户。

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

默认值为 ApplicationTier

sqlInstance 和 databaseName 仅适用于在配置应用程序层之前将帐户添加到数据库时使用。 这主要适用于灾难恢复场景,在运行“仅 AT 配置向导”之前,需要另一个帐户。

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

注释

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

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

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

ServerName\InstanceName。
数据库名称 仅用于 /ResetOwner

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

先决条件

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

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

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

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

注解

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

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

帐户 命令支持本地 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"

TFS_Warehouse SQL Server 的 ContosoMain 命名实例上 TeamDatabases 数据库的所有权更改为运行命令的用户帐户。

注释

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

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

添加项目报告

注释

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

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

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

先决条件

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

注解

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

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

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

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

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

示例

以下示例演示如何将 Agile 报表添加到 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]

选项

说明

/查看全部

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

/provider:{ NTLM | Negotiate }

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

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

/siteType

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

先决条件

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

注解

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

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

示例

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

TFSConfig Authentication /viewAll

证书

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

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

先决条件

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

注解

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

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

可以使用 证书 命令来配置 Azure DevOps Server 部署所使用的客户端证书,该服务器已被配置为使用 HTTPS/SSL 和证书。 如果使用没有选项的 Certificates 命令,将从运行命令的当前用户上下文中自动选择客户端证书。

例子

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

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

以下示例说明如何通过自动选择从当前用户存储中指定客户端证书。

TfsConfig certificates /autoselect

更改服务器ID

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

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

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

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

  • 你需要在测试实验室或独立环境中对数据库全面测试还原到新硬件,以确保能够还原部署。

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

注释

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

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

先决条件

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

注解

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

示例

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

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

代码索引

使用 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>]
选项 说明
索引状态 显示代码索引服务的状态和配置。
设置索引 :开始为所有更改集编制索引。
关闭:停止为所有更改集编制索引。
keepupOnly:停止对以前创建的更改集进行索引,仅开始对新更改集进行索引。
忽略列表 指定不需要编制索引的代码文件及其路径的列表。

添加:将不希望索引的文件添加到忽略的文件列表中。
删除:从忽略的文件列表中删除要编制索引的文件。
removeAll:清除忽略的文件列表,然后开始索引所有文件。
查看:查看所有未编制索引的文件。
ServerPath:指定代码文件的路径。

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

为此,您需要 Team Foundation Server 2013 和 Update 3
重新索引全部 清除以前编制索引的数据并重启索引编制。
销毁代码索引 删除代码索引并删除所有索引数据。 如果使用 /noPrompt 选项,则不需要确认。
临时数据大小限制 控制 CodeLens 在处理更改集时创建的临时数据量。 默认限制为 6 GB(Update 5 中的 2 GB)。

视图:显示当前大小限制。
SizeInGBs:更改大小限制。
禁用:删除大小限制。

在 CodeLens 处理新的更改集之前,会检查此限制。 如果临时数据超出此限制,CodeLens 将暂停处理过去的更改集,而不是新的更改集。 清理数据并低于此限制后,CodeLens 将重启处理。 清理程序每天自动运行一次。 这意味着,在清理开始运行之前,临时数据可能会超过此限制。

为此,您需要Team Foundation Server 2013 Update 4
指数历史周期 控制更改历史记录的索引持续时间。 这会影响 CodeLens 显示多少历史记录。 默认限制为 12 个月。 这意味着 CodeLens 仅显示过去 12 个月的更改历史记录。

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

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

先决条件

若要使用 codeIndex 命令,你必须是 Azure DevOps Administrators 安全组的成员。 请参阅 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"

收集

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

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 的部署中。
创建 创建集合。
分离 如果既未使用 /attach 也未使用 /delete,则为必需。 如果指定此选项,还必须使用 /collectionName 选项。 如果使用 /detach 选项,将停止指定集合的数据库,并且该集合将从 Azure DevOps Server 的部署中分离。
删除 如果未使用 /detach/attach,则为必需。 如果指定此选项,还必须使用 /collectionName 选项。 如果使用 /delete 选项,将停止指定集合的数据库,并且该集合将从 Azure DevOps Server 永久分离。 无法将集合数据库重新附加到此部署或任何其他部署。
集合名称 指定项目集合的名称。 如果集合的名称包含空格,则必须用引号(例如“我的集合”)将名称括起来。 如果使用 /detach/delete,则为必需。 如果将此选项用于 /detach/delete,则它指定将分离或删除的集合。 如果将此选项用于 /attach,则它指定集合的新名称。 如果您同时将此选项用于 /attach/clone,它会指定副本集合的名称。
CollectionDB 如果使用 /attach,则为必需。 此选项指定运行 SQL Server 的服务器的名称以及该服务器上托管的集合数据库的名称。
服务器名称 指定托管 Azure DevOps Server 配置数据库的服务器的名称,如果要使用默认实例以外的实例,则指定实例的名称。 如果指定实例,则必须使用格式:ServerName\InstanceName
数据库名称 指定配置数据库的名称。 默认情况下,此数据库的名称TFS_ConfigurationDB。
克隆 如果指定此选项,原始集合数据库将作为克隆附加到 SQL Server 中,并且此数据库将附加到 Azure DevOps Server。 此选项主要用于拆分项目集合的一部分。

小提示

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

先决条件

若要使用 集合 命令,你必须是 Team Foundation Administrators 安全组的成员以及运行 TfsConfig的计算机上的本地管理员组。 还必须是 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

列存储索引

注释

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

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

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

先决条件

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

注解

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

示例

在以下示例中,演示如何在名为 TFS_DefaultCollection的 SQL 实例上,为位于服务器 ContosoMain 上的运行中的数据库 TeamDatabases 启用列存储索引。

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

邮件配置

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

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

先决条件

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

注解

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

示例

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

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

数据库压缩

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

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

先决条件

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

注解

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

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

示例

以下示例演示如何为服务器 TFS_DefaultCollection 上 SQL 实例 ContosoMain的名为 TeamDatabases 的数据库立即启用页面压缩,并联机重建索引。

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

删除测试结果

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

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

先决条件

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

注解

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

示例

以下示例演示如何删除在服务器 TFS_DefaultCollection 上的 SQL 实例 ContosoMain中名为 TeamDatabases 的数据库里超过 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时是必需的。 指定您要更改身份的域。 如果要更改为工作组环境,请指定计算机的名称。
账户 指定要列出或更改标识的帐户的名称。
到账 指定要更改身份的账户名称。
SQLInstance 如果要使用默认实例以外的实例,请指定运行 SQL Server 的服务器的名称和实例的名称。 如果指定实例,则必须使用以下格式:

ServerName\InstanceName
数据库名称 指定 Azure DevOps Server 的配置数据库的名称。

先决条件

若要使用 标识 命令,你必须是 Team Foundation Administrators 安全组的成员,并且是 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 帐户作为 Contoso1\hholtContosoPrime\hholt存在,则帐户 SID 将更改为 ContosoPrime\hholt的 SID。 如果 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 更改为 Contoso1时,更改 Azure DevOps Server 部署中使用的 ContosoPrime 服务帐户的 SID。 若要更改系统帐户(如网络服务),必须遵循两个阶段的过程。 首先将服务帐户从 NT AUTHORITY\NETWORK SERVICE 更改为新域 TempSVC中的域帐户,然后在新域的服务器上将帐户更改回为 NETWORK SERVICE。 配置数据库托管在名为 ContosoMain 的 SQL Server 服务器上的命名实例 TeamDatabases 中。

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"

职位

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

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

先决条件

若要使用 作业 命令,你必须是 Azure DevOps Administrators 安全组的成员。 有关详细信息,请参阅 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 角色的成员。
  • TFSConfig 工具的版本必须与 Azure DevOps Server 数据库的版本匹配。

注解

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

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

现在,您可以还原配置数据库和相关集合数据库的一致性副本,然后运行 offlineDetach 命令。 然后,已分离的集合数据库可以附加到任何适用于相应版本的 Azure DevOps Server 部署中。

示例

下面的示例展示了如何使用名为 TFS_PrimaryCollection的配置数据库来分离名为 TFS_Configuration的集合数据库,这些数据库都在服务器 ContosoTemp 上的名为 Backups的 SQL 实例中运行。

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]
选项 说明
将指定的服务器或集合添加到 Proxy.config 文件中的代理列表中。 可以多次运行 /add 以包含更多集合或服务器。 在 Azure DevOps Services 上托管的集合中使用 /add 时,系统会提示你在 Azure DevOps Services 上输入凭据。
更改 更改存储为 Azure DevOps Services 服务帐户的凭据信息。 /change 选项仅用于 Azure DevOps Services;它不应用于 Azure DevOps Server 的本地部署。
删除 从 Proxy.config 文件中的代理列表中删除指定的服务器或集合。
账户 指定作为 Azure DevOps Services 中代理的服务帐户的帐户。 此选项仅用于 Azure DevOps Services,与 /change 选项一起使用。

用于 Azure DevOps Services 的默认服务帐户是“帐户服务”。
继续 即使验证过程生成警告,也继续执行命令。
收集 AccountName.DomainName/CollectionName 格式指定托管在 Azure DevOps Services 上的项目集合的 URL。
账户 指定用作 Azure DevOps Services 服务服务帐户的帐户的名称。 如果帐户名称有空格,则必须将名称括在引号(“)中。 必须按照命令行语法指定帐户名中的所有特殊字符。
账户 ServerURL:Port/tfs 格式指定 Azure DevOps Server 部署的 URL。
个人访问令牌文件 (可选)指定包含个人访问令牌的文件的路径。 注册代理时,此令牌将用于对集合或帐户进行身份验证。 (在 TFS 2018 Update 1 中添加)
输入 可选。 指定配置代理时要使用的其他设置和值。!
例如,
GvfsProjectNameGvfsRepositoryName 的值可用于配置 Git 存储库,以便与 Git 虚拟文件系统(GVFS)一起使用(在 TFS 2018 Update 1 中添加)

先决条件

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

注解

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

例子

以下示例演示如何将名为 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"

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

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 选项。
所有 如果未使用 /analysisServices,则为必需。 指定将重新生成 Azure DevOps Server 使用的所有报告和分析数据库。
报告数据源密码 如果TFS_Analysis数据库不存在,则为必需。 指定用作 SQL Server Reporting Services(TFSReports)数据源帐户的帐户的密码。 有关详细信息,请参阅 Azure DevOps Server 中的服务帐户和依赖项。

先决条件

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

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

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

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

注解

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

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

示例

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

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
数据库名称 必填。 指定配置数据库的名称。 默认情况下,这是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 实例中的服务器 ContosoMain 的配置数据库 TeamDatabases

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

重新映射数据库

remapDBs 命令用于在数据库存储在多个服务器上时,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]
选项 说明
数据库名称 指定托管要在 Azure DevOps Server 中映射的数据库的服务器名称,以及数据库本身的名称。
SQLInstances 指定运行 SQL Server 的服务器的名称,如果想要使用默认实例以外的实例,则还指定实例的名称。

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

先决条件

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

注解

您可以使用 remapDBs 命令重新配置 Azure DevOps Server,以便使用不同的服务器和 SQL Server 实例,而不是原始安装中的服务器和实例。

示例

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

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

设置

可以使用 设置 命令自动更改通知接口使用的统一资源定位符(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设置管理员权限。

注解

设置命令 可以更改 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,...]>

选项

说明

/卸载

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

先决条件

若要使用 设置 命令,你必须是 Azure DevOps Administrators 安全组的成员。

例子

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

TfsConfig setup /uninstall:All

以下示例从当前计算机中移除应用程序层和构建功能。

TfsConfig setup /uninstall:ApplicationTier 

中医

升级到最新版本的 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 管理员安全组的成员,并且是应用程序层服务器上的管理员。

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

注解

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

在使用 TCM 命令之前,必须先将测试计划工作项定义和测试计划类别导入项目中。

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

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

必须从 Azure DevOps Server 的工具目录中运行 TCM 命令。 默认情况下,该位置为: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 Build,则可以使用 无人参与 命令来使用相同的配置文件安装多个生成服务器。

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

此过程允许从头到尾配置 Azure DevOps Server,而无需在安装过程中提供输入。 对于多个安装,这也有助于确保跨多个服务器使用相同的配置参数。

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

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

重要

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

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

第二个命令返回以下信息,包括配置 Azure DevOps Build 的服务器的名称 FabrikamFiberTFS 以及与控制器 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 命令旨在收集日志,并将生成一个 zip 文件放在 ProgramData\Microsoft\Azure DevOps\Server Configuration

TfsConfig zipLogs

TfsConfig zipLogs