Запуск сценария powershell на виртуальной машине Azure с помощью Azure Fluent API.

Я пытаюсь запустить команду powershell для установки mysql на AzureVM, но у меня не получается.

var windowsVmAccessExtensionName = "VMAccessAgent";
            var windowsVmAccessExtensionPublisherName = "Microsoft.Compute";
            var windowsVmAccessExtensionTypeName = "VMAccessAgent";
            var windowsVmAccessExtensionVersionName = "2.3";
            var mySqlScriptWindowsInstallCommand = "powershell.exe -ExecutionPolicy Unrestricted -File installMySQL.ps1";
            var mySQLWindowsInstallScriptFileUris = new List<string>()
        {
            "https://raw.githubusercontent.com/Azure/azure-libraries-for-net/master/Samples/Asset/installMySQL.ps1"
        };

            //azure.VirtualMachines.RunPowerShellScript(rgName, vmName, mySQLWindowsInstallScriptFileUris, asdf);

            var windowsVM = azure.VirtualMachines.GetByResourceGroup(rgName, vmName);

            windowsVM.Update()
                       .DefineNewExtension(windowsVmAccessExtensionName)
                           .WithPublisher(windowsVmAccessExtensionPublisherName)
                           .WithType(windowsVmAccessExtensionTypeName)
                           .WithVersion(windowsVmAccessExtensionVersionName)
                           .WithPublicSetting("fileUris", mySQLWindowsInstallScriptFileUris)
                           .WithPublicSetting("commandToExecute", mySqlScriptWindowsInstallCommand)
                       .Attach()
                       .Apply();

этот код даже не выдает никаких ошибок, и когда я проверяю виртуальную машину, на виртуальной машине не установлено никаких mysql или choco.

Предложите или помогите API Azure Fluent выполнить команду powershell на виртуальной машине Azure.

ОБНОВЛЕНИЕ

Обновите приведенный ниже код, чтобы запустить скрипт powershell.

var scriptUris = new List<string>()
        {
            "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1"
        };

        var windowsVM = azure.VirtualMachines.GetByResourceGroup(rgName, vmName);
        windowsVM.Update()
                   .UpdateExtension("CustomScriptExtension")
                    //.WithPublisher(windowsVmAccessExtensionPublisherName)
                    //.WithType(windowsVmAccessExtensionTypeName)
                    //.WithVersion(windowsVmAccessExtensionVersionName)
                       .WithPublicSetting("fileUris", scriptUris)
                       .WithPublicSetting("commandToExecute", "powershell -ExecutionPolicy Unrestricted -File configure-music-app.ps1")
                    //.Attach()
                    //.Apply();
                    .Parent()
                    .Apply();

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

Произошла одна или несколько ошибок. (Длительная операция завершилась неудачно со статусом «Ошибка». Дополнительная информация: «VM сообщила об ошибке при обработке расширения «CustomScriptExtension». Сообщение об ошибке: завершено выполнение команды.

Дополнительные сведения об устранении неполадок доступны по адресу https://aka.ms/VMExtensionCSEWindowsTroubleshoot.


person Saurin Vala    schedule 17.12.2019    source источник
comment
Не могли бы вы предоставить свой сценарий powershell?   -  person Jim Xu    schedule 18.12.2019
comment
Кроме того, не могли бы вы сказать мне, можете ли вы установить mysql со скриптом вручную?   -  person Jim Xu    schedule 18.12.2019
comment
@JimXu, вот .ps1: raw.githubusercontent.com/Azure/azure-libraries-for-net/master/ Работает вручную,   -  person Saurin Vala    schedule 18.12.2019
comment
Ok. я проверю   -  person Jim Xu    schedule 18.12.2019
comment
Не могли бы вы убедиться, что вы можете установить mysql со скриптом? Когда я использую его, вы получаете ошибку.   -  person Jim Xu    schedule 18.12.2019
comment
Кроме того, вы используете виртуальную машину Azure Windows Server?   -  person Jim Xu    schedule 18.12.2019
comment
Да, это Windows 2016-Datacenter. Я изменил windowsVmAccessExtensionName на CustomScriptExtension, после чего начал выполняться сценарий powershell. но теперь я получаю эту ошибку: Произошла одна или несколько ошибок. (Длительная операция завершилась со статусом «Сбой». Дополнительная информация: «VM сообщила об ошибке при обработке расширения «CustomScriptExtension». Сообщение об ошибке: Завершено выполнение команды. Дополнительные сведения об устранении неполадок доступны по адресу aka.ms/VMExtensionCSEWindowsTroubleshoot   -  person Saurin Vala    schedule 18.12.2019
comment
Насколько я понимаю, вы можете установить mysql со скриптом в ВН самостоятельно. Но вы не можете установить mysql со скриптом CustomScriptExtension. Это правильно?   -  person Jim Xu    schedule 18.12.2019
comment
Джим Сюй, да. Я обновил API-вызов azure-fluent и сценарий PowerShell: — raw.githubusercontent.com/sw-ms-saurinvala/ Частично работает, установил Firefox, но не VLC.   -  person Saurin Vala    schedule 18.12.2019


Ответы (1)


Согласно моему тесту, мы можем использовать следующий код для установки MySQL с пользовательским расширением скрипта.

var credentials = SdkContext.AzureCredentialsFactory.FromServicePrincipal(clientId, clientSecret, tenantId, AzureEnvironment.AzureGlobalCloud);
             var azure = Microsoft.Azure.Management.Fluent.Azure.Configure()
                         .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
                         .Authenticate(credentials)
                         .WithSubscription(SubscriptionId);
            var windowsVmAccessExtensionName = "installmysql";
            var windowsVmAccessExtensionPublisherName = "Microsoft.Compute";
            var windowsVmAccessExtensionTypeName = "CustomScriptExtension";
            var windowsVmAccessExtensionVersionName = "1.9";
            var mySqlScriptWindowsInstallCommand = "powershell.exe -ExecutionPolicy Unrestricted -File installMySQL.ps1";
            var mySQLWindowsInstallScriptFileUris = new List<string>()
        {
            "https://raw.githubusercontent.com/Azure/azure-libraries-for-net/master/Samples/Asset/installMySQL.ps1"
        };

            //azure.VirtualMachines.RunPowerShellScript(rgName, vmName, mySQLWindowsInstallScriptFileUris, asdf);

            var windowsVM = azure.VirtualMachines.GetByResourceGroup("testInstance", "test");

            windowsVM.Update()
                       .DefineNewExtension(windowsVmAccessExtensionName)
                           .WithPublisher(windowsVmAccessExtensionPublisherName)
                           .WithType(windowsVmAccessExtensionTypeName)
                           .WithVersion(windowsVmAccessExtensionVersionName)
                           .WithPublicSetting("fileUris", mySQLWindowsInstallScriptFileUris)
                           .WithProtectedSetting("commandToExecute", mySqlScriptWindowsInstallCommand)
                       .Attach()
                       .Apply();

введите здесь описание изображения введите здесь описание изображения

person Jim Xu    schedule 19.12.2019