Устранение неполадок в функции начало работы Виртуального рабочего стола Azure

Функция начала работы Виртуального рабочего стола Azure использует вложенные шаблоны, чтобы развертывать ресурсы Azure для проверки и автоматизации в Виртуальном рабочем столе Azure. Функция начала работы создает две или три группы ресурсов на основе подписки, на которую она работает, имеет существующие службы домен Active Directory (AD DS) или доменные службы Microsoft Entra или нет. Имена всех групп ресурсов начинаются с одного и того же префикса, определяемого пользователем.

Когда вы запускаете вложенные шаблоны, они создают три группы ресурсов и новый шаблон для развертывания ресурсов Azure Resource Manager. Следующий список содержит все эти группы ресурсов и шаблоны, которые они запускают.

Группа ресурсов с постфиксом -deployment запускает следующие шаблоны:

  • easy-button-roleassignment-job-linked-template
  • easy-button-prerequisitecompletion-job-linked-template
  • easy-button-prerequisite-job-linked-template
  • easy-button-inputvalidation-job-linked-template
  • easy-button-deploymentResources-linked-template
  • easy-button-prerequisite-user-setup-linked-template

Примечание.

Шаблон easy-button-prerequisite-user-setup-linked-template является необязательным и отображается, только если вы создали пользователя для проверки.

Группа ресурсов с постфиксом -wvd запускает следующие шаблоны:

  • NSG-linkedTemplate
  • vmCreation-linkedTemplate
  • Workspace-linkedTemplate
  • wvd-resources-linked-template
  • easy-button-wvdsetup-linked-template

Группа ресурсов с постфиксом -prerequisite запускает следующие шаблоны:

  • easy-button-prerequisite-resources-linked-template

Примечание.

Эта группа ресурсов является необязательной и будет отображаться только в том случае, если у вашей подписки нет доменных служб Microsoft Entra или AD DS.

Нет подписок

При этом отображается сообщение об ошибке no subscriptions (Нет подписок) при открытии функции начала работы. Обычно это вызвано тем, что вы открываете эту функцию без активной подписки Azure.

Чтобы устранить эту проблему, проверьте, есть ли у подписки или затронутого пользователя активная подписка Azure. Если ее нет, назначьте этому пользователю роль RBAC (управление доступом на основе ролей) в соответствующей подписке.

У вас нет разрешений

При этом отображается сообщение об ошибке You don't have permissions (У вас нет разрешений) при открытии функции начала работы. Это вызвано тем, что у пользователя, запускающего функцию, нет прав владельца для активной подписки Azure.

Чтобы устранить эту проблему, выполните вход с помощью учетной записи Azure с разрешениями владельца, а затем назначьте роль владельца RBAC затронутой учетной записи.

Поля на вкладке "Виртуальная машина" неактивны

Эта проблема возникает, когда вы открываете вкладку Виртуальная машина и видите, что поля в разделе Do you want users to share this machine? (Вы хотите, чтобы пользователи совместно использовали этот компьютер?) неактивны. Эта проблема не позволяет изменить тип образа, выбрать образ для использования или изменить размер виртуальной машины.

Это вызвано тем, что вы запускаете функцию с префиксом, который уже использовался для запуска развертывания. Вместе с развертыванием эта функция создает объект, представляющий это развертывание в Azure. Определенные значения в объекте, такие как образ, присоединяются к этому объекту, чтобы предотвратить использование одних и тех же образов несколькими объектами.

Чтобы устранить эту проблему, можно удалить все группы ресурсов с указанным префиксом или использовать новый префикс.

Имена пользователей не должны содержать зарезервированные слова

Эта проблема проявляется в том, что функция начала работы не принимает имя пользователя, введенное в соответствующее поле.

Это сообщение об ошибке появляется, так как в Azure не допускаются некоторые слова в именах пользователей для общедоступных конечных точек. Полный список заблокированных слов см. в статье Ошибки имен зарезервированных ресурсов Azure.

Чтобы устранить эту проблему, введите новое слово или добавьте произвольные буквы к заблокированному слову, чтобы имя стало уникальным. Например, вместо заблокированного слова admin попробуйте указать AVDadmin.

Длина значения должна быть от 12 до 72 символов

Это сообщение об ошибке проявляется, если введен слишком короткий или слишком длинный пароль, не соответствующий требованию к длине. Требования Azure к длине и сложности пароля применяется даже к тем полям, которые предназначены для использования в среде Windows с менее строгими требованиями.

Чтобы устранить эту проблему, убедитесь, что вы используете учетную запись, которая соответствует рекомендациям майкрософт по паролям или использует защиту паролей Microsoft Entra.

Сообщения об ошибках для easy-button-prerequisite-user-setup-linked-template

Если у используемой виртуальной машины AD DS уже есть сопоставленное расширение с именем Microsoft.Powershell.DSC, вы увидите сообщение об ошибке следующего вида:

"error": {
        "code": "DeploymentFailed",
        "message": "At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.",
        "details": [
            {
                "code": "Conflict",
                "message": "{\r\n  \"status\": \"Failed\",\r\n  \"error\": {\r\n    \"code\": \"ResourceDeploymentFailure\",\r\n    \"message\": \"The resource operation completed with terminal provisioning state 'Failed'.\",\r\n    \"details\": [\r\n      {\r\n        \"code\": \"VMExtensionProvisioningError\",\r\n        \"message\": \"VM has reported a failure when processing extension 'Microsoft.Powershell.DSC'. Error message: \\\"DSC Configuration 'AddADDSUser' completed with error(s). Following are the first few: PowerShell DSC resource MSFT_ScriptResource  failed to execute Set-TargetResource functionality with error message: Some error occurred in DSC CreateUser SetScript: \\r\\n\\r\\nException             : Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException: Cannot find an object with \\r\\n                        identity: 'Adam S' under: 'DC=GT090617,DC=onmicrosoft,DC=com'.\\r\\n                           at Microsoft.ActiveDirectory.Management.Commands.ADFactoryUtil.GetObjectFromIdentitySearcher(\\r\\n                        ADObjectSearcher searcher, ADEntity identityObj, String searchRoot, AttributeSetRequest attrs, \\r\\n                        CmdletSessionInfo cmdletSessionInfo, String[]& warningMessages)\\r\\n                           at \\r\\n                        Microsoft.ActiveDirectory.Management.Commands.ADFactory`1.GetDirectoryObjectFromIdentity(T \\r\\n                        identityObj, String searchRoot, Boolean showDeleted)\\r\\n                           at \\r\\n                        Microsoft.ActiveDirectory.Management.Commands.SetADGroupMember`1.ValidateMembersParameter()\\r\\nTargetObject          : Adam S\\r\\nCategoryInfo          : ObjectNotFound: (Adam S:ADPrincipal) [Add-ADGroupMember], ADIdentityNotFoundException\\r\\nFullyQualifiedErrorId : SetADGroupMember.ValidateMembersParameter,Microsoft.ActiveDirectory.Management.Commands.AddADGro\\r\\n                        upMember\\r\\nErrorDetails          : \\r\\nInvocationInfo        : System.Management.Automation.InvocationInfo\\r\\nScriptStackTrace      : at <ScriptBlock>, C:\\\\Packages\\\\Plugins\\\\Microsoft.Powershell.DSC\\\\2.83.1.0\\\\DSCWork\\\\DSCADUserCreatio\\r\\n                        nScripts_2020-04-28.2\\\\Script-CreateADDSUser.ps1: line 98\\r\\n                        at <ScriptBlock>, <No file>: line 8\\r\\n                        at ScriptExecutionHelper, C:\\\\Windows\\\\system32\\\\WindowsPowerShell\\\\v1.0\\\\Modules\\\\PSDesiredStateConfi\\r\\n                        guration\\\\DscResources\\\\MSFT_ScriptResource\\\\MSFT_ScriptResource.psm1: line 270\\r\\n                        at Set-TargetResource, C:\\\\Windows\\\\system32\\\\WindowsPowerShell\\\\v1.0\\\\Modules\\\\PSDesiredStateConfigur\\r\\n                        ation\\\\DscResources\\\\MSFT_ScriptResource\\\\MSFT_ScriptResource.psm1: line 144\\r\\nPipelineIterationInfo : {}\\r\\nPSMessageDetails      : \\r\\n\\r\\n\\r\\n\\r\\n  The SendConfigurationApply function did not succeed.\\\"\\r\\n\\r\\nMore information on troubleshooting is available at https://aka.ms/VMExtensionDSCWindowsTroubleshoot \"\r\n      }\r\n    ]\r\n  }\r\n}"
            }
        ]
    }

Чтобы устранить эту проблему, удалите расширение Microsoft.Powershell.DSC и снова запустите функцию начала работы.

Сообщения об ошибках для easy-button-prerequisite-job-linked-template

Если вы увидите подобное сообщение об ошибке, значит операцию с ресурсом в шаблоне easy-button-prerequisite-job-linked-template не удалось завершить успешно:

{
    "status": "Failed",
    "error": {
        "code": "DeploymentFailed",
        "message": "At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.",
        "details": [
            {
                "code": "Conflict",
                "message": "{\r\n  \"status\": \"Failed\",\r\n  \"error\": {\r\n    \"code\": \"ResourceDeploymentFailure\",\r\n    \"message\": \"The resource operation completed with terminal provisioning state 'Failed'.\"\r\n  }\r\n}"
            }
        ]
    }
}

Чтобы убедиться, что проблема именно в этом, сделайте следующее:

  1. Выберите easy-button-prerequisite-job-linked-template и щелкните Ok на появившемся сообщении об ошибке.

  2. Перейдите в группу ресурсов <prefix>-deployment и выберите resourceSetupRunbook.

  3. Щелкните значение Сбой в поле состояния.

  4. Выберите вкладку Исключение. Появится сообщение об ошибке следующего вида:

    The running command stopped because the preference variable "ErrorActionPreference" or common parameter is set to Stop: Error while creating and adding validation user <your-username-here> to group <your-resource-group-here>
    

Сейчас нет возможности полностью устранить эту проблему. В качестве временного решения можно снова запустить функцию начала работы, не создавая пользователя для проверки. После этого создайте всех новых пользователей вручную.

Проверки существования имени субъекта-пользователя администратора домена для нового профиля

Чтобы убедиться, что проблему с шаблоном вызывает имя субъекта-пользователя администратора домена, сделайте следующее:

  1. Выберите easy-button-prerequisite-job-linked-template и щелкните проблемный шаг. Подтвердите сообщение об ошибке.

  2. Перейдите к группе ресурсов <prefix>-deployment и щелкните resourceSetupRunbook.

  3. Щелкните значение Сбой в поле состояния.

  4. Выберите вкладку Выходные данные.

Если имя субъекта-пользователя администратора домена уже существует в новой подписке, это может быть вызвано двумя причинами:

  • Функция начало работы не смогла создать профиль администратора домена, так как пользователь уже существует. Чтобы устранить эту проблему, снова запустите функцию начало работы с другим именем пользователя, которое еще не существует в используемом поставщике удостоверений.
  • Функция начала работы не смогла создать профиль пользователя для проверки. Чтобы устранить эту проблему, снова запустите функцию начала работы без пользователей для проверки. После этого создайте всех новых пользователей вручную.

Сообщения об ошибках для easy-button-inputvalidation-job-linked-template

Если возникнет проблема с шаблоном easy-button-inputvalidation-job-linked-template, вы увидите сообщение об ошибке следующего вида:

{
    "status": "Failed",
    "error": {
        "code": "ResourceDeploymentFailure",
        "message": "The resource operation completed with terminal provisioning state 'Failed'."
    }
}

Чтобы убедиться, что проблема именно в этом, сделайте следующее:

  1. Откройте группу ресурсов <prefix>-deployment и найдите inputValidationRunbook.

  2. В списке недавно выполненных заданий будет задание со статусом "Сбой". Щелкните состояние Сбой.

  3. В окне сведений о задании выберите Исключение.

Эта ошибка возникает, если введено недопустимое имя субъекта-пользователя администратора Azure. Чтобы устранить эту проблему, убедитесь, что вы ввели правильные имя пользователя и пароль, а затем повторите попытку.

Несколько расширений виртуальной машины на один обработчик не поддерживаются

При запуске функции начала работы в подписке с доменными службами Microsoft Entra или AD DS функция будет использовать расширение Microsoft.Powershell.DSC для создания пользователей проверки и настройки FSLogix. Но виртуальные машины Windows в Azure не могут выполнять одновременно несколько расширений одного типа.

При попытке запустить несколько версий Microsoft.Powershell.DSC вы получите сообщение об ошибке следующего вида:

{
    "status": "Failed",
    "error": {
        "code": "BadRequest",
        "message": "Multiple VMExtensions per handler not supported for OS type 'Windows'. VMExtension 'Microsoft.Powershell.DSC' with handler 'Microsoft.Powershell.DSC' already added or specified in input."
    }
}

Чтобы устранить эту проблему, перед запуском функции начала работы обязательно найдите и удалите существующий экземпляр Microsoft.Powershell.DSC из контроллера домена виртуальной машины.

Ошибка в easy-button-prerequisitecompletion-job-linked-template

Группа пользователей для пользователей проверки расположена в контейнере USERS. Однако для правильной работы группы пользователей необходимо синхронизировать с идентификатором Microsoft Entra. Если это не так, вы получите сообщение об ошибке следующего вида:

{
    "status": "Failed",
    "error": {
        "code": "ResourceDeploymentFailure",
        "message": "The resource operation completed with terminal provisioning state ‘Failed’."
    }
}

Чтобы убедиться, что проблема связана с отсутствием синхронизации группы пользователей для проверки, откройте группу ресурсов <prefix>-prerequisites и найдите в ней файл с именем prerequisiteSetupCompletionRunbook. Выберите runbook и щелкните Все журналы.

Для разрешения этой проблемы:

  1. Включите синхронизацию с идентификатором Microsoft Entra для контейнера USERS.

  2. Создайте группу AVDValidationUsers в подразделении организации, которое синхронизируется с Azure.

Следующие шаги

Дополнительные сведения о функции начала работы см. в статье Развертывание Виртуального рабочего стола Azure с помощью функции начала работы.