Azure 数据迁移工具验证时出错;必须配置窗口句柄(MsalClientException)

问题描述 投票:0回答:1

我正在将本地 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 命令

azure-devops tfs
1个回答
0
投票

我今天 04/03/2024 看到同样的错误。

我昨天使用了旧版本,迁移成功了。

今天我正在测试2024年3月29日发布的最新版本的ADO迁移工具DataMigrationTool_AzureDevOps2022.1_19.225.27309233。

这是新版ADO迁移工具中的一个bug。

© www.soinside.com 2019 - 2024. All rights reserved.