gpt4 book ai didi

tfs - 如何禁用\启用 Team Foundation Server (TFS) Active Directory 同步

转载 作者:行者123 更新时间:2023-12-05 04:10:49 24 4
gpt4 key购买 nike

执行 TFS 用户从一个域到另一个域的迁移时,TFSConfig Identities 命令允许您按照此处指定的方式在 TFS 内迁移用户: https://www.visualstudio.com/en-us/docs/setup-admin/tfs/command-line/tfsconfig-cmd#identities

使用此命令的一个注意事项是 TFS 无法“知道”新用户帐户。一旦 TFS“知道”某个用户,您就永远无法将其删除......并且您无法使用 TFSConfig Identities 将旧用户迁移到 TFS 中的新用户。

默认情况下,TFS 作业代理在整点运行其 AD 同步。因此,如果您使用 AD 组来提供访问权限……帐户将迁移到……并且 TFS AD 同步过程运行,在您可以运行 TFSConfig Identities 之前选择新用户,然后您就被清理了。它选取的新帐户无法删除,您也无法运行 TFSConfig Identities 命令在 TFS 中迁移用户。

那么,如何在 TFS 中关闭 AD Sync 进程。答案在互联网上并不容易找到……因此这篇问答式的帖子。

最佳答案

有一个 Web 服务接口(interface)和 .NET 程序集,可用于更改 TFS 后台代理中运行的作业。我发现使用 PowerShell 加载 .NET 程序集和使用对象模型更容易。请注意,我的程序集版本是 11.0.0.0,因为我使用 TFS 2013 运行它。其他 TFS 版本中的程序集版本不同。

在 AD 帐户迁移之前,您应该禁用 AD 同步作业。在 TFS 应用层服务器上,禁用 AD 同步作业所需的 Powershell 代码是...

[Reflection.Assembly]::Load("Microsoft.TeamFoundation.Client, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
[Reflection.Assembly]::Load("Microsoft.TeamFoundation.Common, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")

$TFSConfigurationServer = New-Object Microsoft.TeamFoundation.Client.TfsConfigurationServer(New-Object System.Uri("http://YourTFSServer:8080/tfs"))
$TFSJobService = $TFSConfigurationServer.GetService([Microsoft.TeamFoundation.Framework.Client.ITeamFoundationJobService])

<#
Team Foundation Server Periodic Identity Synchronization
544dd581-f72a-45a9-8de0-8cd3a5f29dfe
#>

foreach($Job in $TFSJobService.QueryJobs())
{
if($Job.JobId -eq "544dd581-f72a-45a9-8de0-8cd3a5f29dfe") { break }
}

$CurrentJobState = $Job.EnabledState
$NewState = [Microsoft.TeamFoundation.Framework.Common.TeamFoundationJobEnabledState]::FullyDisabled
$Job.EnabledState = $NewState
$TFSJobService.UpdateJob($Job)

用户帐户迁移后,您可以运行 TFSConfig Identities 以在 TFS 中进行必要的更新。然后运行更多 PowerShell 以重新打开 AD 同步作业...

[Reflection.Assembly]::Load("Microsoft.TeamFoundation.Client, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
[Reflection.Assembly]::Load("Microsoft.TeamFoundation.Common, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")

$TFSConfigurationServer = New-Object Microsoft.TeamFoundation.Client.TfsConfigurationServer(New-Object System.Uri("http://YourTFSServer:8080/tfs"))
$TFSJobService = $TFSConfigurationServer.GetService([Microsoft.TeamFoundation.Framework.Client.ITeamFoundationJobService])

<#
Team Foundation Server Periodic Identity Synchronization
544dd581-f72a-45a9-8de0-8cd3a5f29dfe
#>

foreach($Job in $TFSJobService.QueryJobs())
{
if($Job.JobId -eq "544dd581-f72a-45a9-8de0-8cd3a5f29dfe") { break }
}

$CurrentJobState = $Job.EnabledState
$NewState = [Microsoft.TeamFoundation.Framework.Common.TeamFoundationJobEnabledState]::Enabled
$Job.EnabledState = $NewState
$TFSJobService.UpdateJob($Job)

另一个有用的项目是您可以使用 QueryLatestJobHistory 方法查看最近运行的 AD 同步作业的状态。

$TFSJobService.QueryLatestJobHistory("544dd581-f72a-45a9-8de0-8cd3a5f29dfe")

请注意,它在重新启用后的整点钟之前不会再次运行。

关于tfs - 如何禁用\启用 Team Foundation Server (TFS) Active Directory 同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43899732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com