我正在将本地 Azure DevOps Server 2022.1 迁移到 Azure DevOps 服务,并且正在遵循 Azure DevOps 迁移指南的数据迁移工具。
我正在从运行 DevOps 服务器且运行 Windows Server 2022 Datacenter 的同一台计算机运行迁移。
我有一个在命令中指定的设置 Azure Entra,并且我使用有权创建组织的帐户登录到源计算机。身份通过 Azure AD Connect 与域同步。
在第一步验证期间,我正在执行迁移命令,如下所示。
Migrator.exe validate /collection:"http://localhost:8080/tfs/{Collection}" /region:{region} /output:"C:\temp" /tenantdomainname:{name}
我收到的错误是
A window handle must be configured. See https://aka.ms/msal-net-wam#parent-window-handles (type MsalClientException)
粘贴下面的日志文件结果。
[Info @15:44:03.314] [Info] Data migration tool for Azure DevOps version 19.225.34715.1
[Info] Copyright (C) Microsoft Corporation. All rights reserved.
[Info] Executing at 2024-04-02T13:43:59.8879578Z:
[Info] Migrator.exe validate /collection:**{}** /region:**{}** /output:"C:\temp" /tenantdomainname:**{}**
[Info] Connection string not specified, trying to use the one from the Application Tier's web.config
[Info] Using the framework connection **{}**
[Info] The database type is Configuration
[Info] The database service level is Dev19.M225.3
[Info] Azure DevOps Server version Dev19.M225.3
[Info @15:44:03.314] Loading Validations
[Info @15:44:03.314] Validate Identities, (Microsoft.VisualStudio.Services.Identity.Import.IdentityImportValidation)
[Info @15:44:03.314] Validate Build Identities and Scopes, (Microsoft.VisualStudio.Services.Identity.IdentityImport.BuildImportValidation)
[Info @15:44:03.314] Populate License Information, (Microsoft.TeamFoundation.Admin.Deploy.Application.LicenseImportValidation)
[Info @15:44:03.314] Validate Project Status, (Microsoft.TeamFoundation.Server.Deploy.TFCollection.DataImport.ValidateProjectStatus)
[Info @15:44:03.314] Validate Project Names, (Microsoft.TeamFoundation.Server.Deploy.TFCollection.DataImport.ValidateProjectNames)
[Info @15:44:03.314] Validate Collection Database collation, (Microsoft.VisualStudio.Services.Cloud.ValidateDatabaseCollation)
[Info @15:44:03.314] Validate Database Milestone, (Microsoft.VisualStudio.Services.Cloud.ValidateDatabaseTfsVersion)
[Info @15:44:03.314] Validate Collection Database Usage, (Microsoft.VisualStudio.Services.Cloud.ValidateDatabaseUsage)
[Info @15:44:03.314] Validate Properties Were Loaded, (Microsoft.VisualStudio.Services.Cloud.ValidatePropertiesWereLoaded)
[Info @15:44:03.314] Validate Collection Database Size, (Microsoft.VisualStudio.Services.Cloud.ValidateDatabaseSize)
[Info @15:44:03.314] Validate Minimum Supported TfsMigrator version, (Microsoft.VisualStudio.Services.DataImport.Extensions.ValidateMinTfsMigratorVersion)
[Info @15:44:03.314] Validate File Content Migration Job, (Microsoft.VisualStudio.Services.DataImport.Extensions.ValidateFileContentMigrationJob)
[Info @15:44:03.314] Validate File Content Consistency, (Microsoft.VisualStudio.Services.DataImport.Extensions.ValidateFileServiceConsistency)
[Info @15:44:03.314] Validate Single Partition, (Microsoft.VisualStudio.Services.DataImport.Extensions.ValidateSinglePartition)
[Info @15:44:03.314] Validate TFVC files are in File Service, (Microsoft.VisualStudio.Services.DataImport.Extensions.ValidateTfvcInFileService)
[Info @15:44:03.314] Validate Project Processes, (Microsoft.TeamFoundation.WorkItemTracking.Server.PlugIns.DataImport.ProcessMapImportValidator)
[Info @15:44:03.330] Value of extended property TFS_DATAIMPORT_COLLECTIONID=**{}**
[Info @15:44:03.345] Executing Microsoft Graph Request
[Error @15:44:04.991] Encountered an unexpected exception. Retry will not be attempted. CurrentRetryCount: 0, RemainingRetries: 5, Exception: Microsoft.VisualStudio.Services.Identity.Plugins.DataImport.Types.AadGraphServiceException: Request failed with exception ---> System.AggregateException: One or more errors occurred. ---> Microsoft.Identity.Client.MsalClientException: A window handle must be configured. See https://aka.ms/msal-net-wam#parent-window-handles
at Microsoft.Identity.Client.Platforms.Features.RuntimeBroker.RuntimeBroker.<AcquireTokenInteractiveAsync>d__12.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Identity.Client.Internal.Broker.BrokerInteractiveRequestComponent.<FetchTokensAsync>d__9.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Identity.Client.Internal.Requests.InteractiveRequest.<FetchTokensFromBrokerAsync>d__10.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Identity.Client.Internal.Requests.InteractiveRequest.<GetTokenResponseAsync>d__11.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Identity.Client.Internal.Requests.InteractiveRequest.<ExecuteAsync>d__9.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Identity.Client.Internal.Requests.RequestBase.<RunAsync>d__12.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Identity.Client.ApiConfig.Executors.PublicClientExecutor.<ExecuteAsync>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.VisualStudio.Services.Identity.Plugins.DataImport.AadClient.ActiveDirectoryClientBuilder.<AcquireTokenAsync>d__4.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.VisualStudio.Services.Identity.Plugins.DataImport.AadClient.ActiveDirectoryClientBuilder.BuildClient()
at Microsoft.VisualStudio.Services.Identity.Plugins.DataImport.AadGraphService.BuildGraphClient(AadServiceRequestContext requestContext)
at Microsoft.VisualStudio.Services.Identity.Plugins.DataImport.AadGraphService.<GetTenant>d__1.MoveNext()
--- End of inner exception stack trace ---
--- End of inner exception stack trace ---
at Microsoft.VisualStudio.Services.Identity.DataImport.AadIdentityMapper.<>c__DisplayClass4_0`1.<ExecuteGraphRequest>g__executeRequest|1()
at Microsoft.TeamFoundation.Framework.Server.BackoffRetryManager.Invoke(Action action)
[Error @15:44:05.007] Exception Message: Request failed with exception (type AadGraphServiceException)
Exception Stack Trace: at Microsoft.VisualStudio.Services.Identity.DataImport.AadIdentityMapper.<>c__DisplayClass4_0`1.<ExecuteGraphRequest>g__executeRequest|1()
at Microsoft.TeamFoundation.Framework.Server.BackoffRetryManager.Invoke(Action action)
at Microsoft.VisualStudio.Services.Identity.DataImport.AadIdentityMapper.ExecuteGraphRequest[T](Func`2 request)
at Microsoft.VisualStudio.Services.Identity.DataImport.AadIdentityMapper.GetAadTenantId()
at TfsMigrator.TfsMigratorCommandValidate.PopulateDataImportPropertiesOnContext()
at TfsMigrator.TfsMigratorCommandValidate.PopulateValidationItems(DataImportValidationContext context)
at TfsMigrator.TfsMigratorCommandValidate.RunValidations(Boolean requireNetwork, Boolean validateFiles)
at TfsMigrator.TfsMigratorCommandValidate.RunImpl()
at TfsMigrator.TfsMigratorCommand.Run()
Inner Exception Details:
Exception Message: One or more errors occurred. (type AggregateException)
Exception Stack Trace:
Inner Exception Details:
Exception Message: A window handle must be configured. See https://aka.ms/msal-net-wam#parent-window-handles (type MsalClientException)
Exception Stack Trace: at Microsoft.Identity.Client.Platforms.Features.RuntimeBroker.RuntimeBroker.<AcquireTokenInteractiveAsync>d__12.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Identity.Client.Internal.Broker.BrokerInteractiveRequestComponent.<FetchTokensAsync>d__9.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Identity.Client.Internal.Requests.InteractiveRequest.<FetchTokensFromBrokerAsync>d__10.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Identity.Client.Internal.Requests.InteractiveRequest.<GetTokenResponseAsync>d__11.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Identity.Client.Internal.Requests.InteractiveRequest.<ExecuteAsync>d__9.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Identity.Client.Internal.Requests.RequestBase.<RunAsync>d__12.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Identity.Client.ApiConfig.Executors.PublicClientExecutor.<ExecuteAsync>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.VisualStudio.Services.Identity.Plugins.DataImport.AadClient.ActiveDirectoryClientBuilder.<AcquireTokenAsync>d__4.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.VisualStudio.Services.Identity.Plugins.DataImport.AadClient.ActiveDirectoryClientBuilder.BuildClient()
at Microsoft.VisualStudio.Services.Identity.Plugins.DataImport.AadGraphService.BuildGraphClient(AadServiceRequestContext requestContext)
at Microsoft.VisualStudio.Services.Identity.Plugins.DataImport.AadGraphService.<GetTenant>d__1.MoveNext()
[Info @15:44:05.007] Execution Time: 0:00:05.1723274
[Info @15:44:05.007] Output Folder: C:\temp\Logs\**{}**\20240402_154403
该进程似乎正在搜索窗口句柄以提示输入用户名,但在“Microsoft Graph 请求”期间失败?
有什么想法吗?
DevOps Server 正在计算机上运行,因为我尝试输入无效的集合。这导致了不同的错误。
我尝试以管理员/当前用户/身份在cmd上通过powershell运行命令。
在使用 Connect-AzAccount 进行身份验证后,我还尝试在 powershell 中使用 az 命令
我今天 04/03/2024 看到同样的错误。
我昨天使用了旧版本,迁移成功了。
今天我正在测试2024年3月29日发布的最新版本的ADO迁移工具DataMigrationTool_AzureDevOps2022.1_19.225.27309233。
这是新版ADO迁移工具中的一个bug。