Beispiel #1
0
        protected override void ProcessRecord()
        {
            base.ProcessRecord();

            if (String.IsNullOrEmpty(Name))
            {
                Name = DscExtensionCmdletConstants.ExtensionPublishedNamespace + "." + DscExtensionCmdletConstants.ExtensionPublishedName;
            }

            if (ShouldProcess(string.Format(CultureInfo.CurrentUICulture, Microsoft.Azure.Commands.Compute.Properties.Resources.DscExtensionRemovalConfirmation, Name), Microsoft.Azure.Commands.Compute.Properties.Resources.DscExtensionRemovalCaption))
            {
                //Add retry logic due to CRP service restart known issue CRP bug: 3564713
                var count = 1;
                DeleteOperationResponse op = null;
                while (count <= 2)
                {
                    op = VirtualMachineExtensionClient.Delete(ResourceGroupName, VMName, Name);

                    if (ComputeOperationStatus.Failed.Equals(op.Status) && op.Error != null && "InternalExecutionError".Equals(op.Error.Code))
                    {
                        count++;
                    }
                    else
                    {
                        break;
                    }
                }
                var result = Mapper.Map <PSComputeLongRunningOperation>(op);
                WriteObject(result);
            }
        }
Beispiel #2
0
        protected override void ProcessRecord()
        {
            base.ProcessRecord();

            if (String.IsNullOrEmpty(Name))
            {
                Name = VirtualMachineSqlServerExtensionContext.ExtensionPublishedNamespace + "." + VirtualMachineSqlServerExtensionContext.ExtensionPublishedName;
            }

            var result    = VirtualMachineExtensionClient.GetWithInstanceView(ResourceGroupName, VMName, Name);
            var extension = result.ToPSVirtualMachineExtension(ResourceGroupName);

            if (
                extension.Publisher.Equals(VirtualMachineSqlServerExtensionContext.ExtensionPublishedNamespace,
                                           StringComparison.InvariantCultureIgnoreCase) &&
                extension.ExtensionType.Equals(VirtualMachineSqlServerExtensionContext.ExtensionPublishedName,
                                               StringComparison.InvariantCultureIgnoreCase))
            {
                WriteObject(GetSqlServerExtensionContext(extension));
            }
            else
            {
                WriteObject(null);
            }
        }
Beispiel #3
0
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            if (String.IsNullOrEmpty(Name))
            {
                Name = DscExtensionCmdletConstants.ExtensionPublishedNamespace + "." + DscExtensionCmdletConstants.ExtensionPublishedName;
            }

            if (ShouldProcess(string.Format(CultureInfo.CurrentUICulture, Microsoft.Azure.Commands.Compute.Properties.Resources.DscExtensionRemovalConfirmation, Name), Microsoft.Azure.Commands.Compute.Properties.Resources.DscExtensionRemovalCaption))
            {
                //Add retry logic due to CRP service restart known issue CRP bug: 3564713
                var count = 1;
                Rest.Azure.AzureOperationResponse op = null;
                while (count <= 2)
                {
                    op = VirtualMachineExtensionClient.DeleteWithHttpMessagesAsync(
                        ResourceGroupName,
                        VMName,
                        Name).GetAwaiter().GetResult();

                    if ("Failed".Equals(op.Response.StatusCode))
                    //&& op.Error != null && "InternalExecutionError".Equals(op.Error.Code))
                    {
                        count++;
                    }
                    else
                    {
                        break;
                    }
                }
                var result = Mapper.Map <PSAzureOperationResponse>(op);
                WriteObject(result);
            }
        }
Beispiel #4
0
        protected void ExecuteVirtualMachineExtensionListVersionsMethod(object[] invokeMethodInputParameters)
        {
            string publisherName = (string)ParseParameter(invokeMethodInputParameters[0]);
            string extensionName = (string)ParseParameter(invokeMethodInputParameters[1]);

            var result = VirtualMachineExtensionClient.ListVersions(publisherName, extensionName);

            WriteObject(result);
        }
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            if (String.IsNullOrEmpty(Name))
            {
                Name = DscExtensionCmdletConstants.ExtensionPublishedNamespace + "." + DscExtensionCmdletConstants.ExtensionPublishedName;
            }

            if (ShouldProcess(string.Format(CultureInfo.CurrentUICulture, Microsoft.Azure.Commands.Compute.Properties.Resources.DscExtensionRemovalConfirmation, Name), Microsoft.Azure.Commands.Compute.Properties.Resources.DscExtensionRemovalCaption))
            {
                //Add retry logic due to CRP service restart known issue CRP bug: 3564713
                var count = 1;
                Rest.Azure.AzureOperationResponse op = null;

                if (NoWait.IsPresent)
                {
                    op = VirtualMachineExtensionClient.BeginDeleteWithHttpMessagesAsync(
                        ResourceGroupName,
                        VMName,
                        Name).GetAwaiter().GetResult();
                }
                else
                {
                    while (true)
                    {
                        try
                        {
                            op = VirtualMachineExtensionClient.DeleteWithHttpMessagesAsync(
                                ResourceGroupName,
                                VMName,
                                Name).GetAwaiter().GetResult();
                            break;
                        }
                        catch (Rest.Azure.CloudException ex)
                        {
                            var errorReturned = JsonConvert.DeserializeObject <PSComputeLongRunningOperation>(ex.Response.Content);

                            if ("Failed".Equals(errorReturned.Status) &&
                                errorReturned.Error != null && "InternalExecutionError".Equals(errorReturned.Error.Code))
                            {
                                count++;
                                if (count <= 2)
                                {
                                    continue;
                                }
                            }
                            ThrowTerminatingError(new ErrorRecord(ex, "InvalidResult", ErrorCategory.InvalidResult, null));
                        }
                    }
                }

                var result = ComputeAutoMapperProfile.Mapper.Map <PSAzureOperationResponse>(op);
                WriteObject(result);
            }
        }
Beispiel #6
0
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            if (string.IsNullOrEmpty(this.Location))
            {
                this.Location = GetLocationFromVm(this.ResourceGroupName, this.VMName);
            }

            var parameters = new VirtualMachineExtension
            {
                Location  = this.Location,
                Publisher = VirtualMachineSqlServerExtensionContext.ExtensionPublishedNamespace,
                VirtualMachineExtensionType = VirtualMachineSqlServerExtensionContext.ExtensionPublishedName,
                TypeHandlerVersion          = string.IsNullOrEmpty(this.Version) ? VirtualMachineSqlServerExtensionContext.ExtensionDefaultVersion : this.Version,
                Settings          = this.GetPublicConfiguration(),
                ProtectedSettings = this.GetPrivateConfiguration(),
            };

            // Add retry logic due to CRP service restart known issue CRP bug: 3564713
            // Similair approach taken in DSC cmdlet as well
            var count = 1;

            Rest.Azure.AzureOperationResponse <VirtualMachineExtension> op = null;
            while (count <= 2)
            {
                try
                {
                    op = VirtualMachineExtensionClient.CreateOrUpdateWithHttpMessagesAsync(
                        ResourceGroupName,
                        VMName,
                        Name ?? VirtualMachineSqlServerExtensionContext.ExtensionPublishedNamespace + "." + VirtualMachineSqlServerExtensionContext.ExtensionPublishedName,
                        parameters).GetAwaiter().GetResult();
                }
                catch (Rest.Azure.CloudException ex)
                {
                    var errorReturned = JsonConvert.DeserializeObject <ComputeLongRunningOperationError>(ex.Response.Content);

                    if ("Failed".Equals(errorReturned.Status) &&
                        errorReturned.Error != null && "InternalExecutionError".Equals(errorReturned.Error.Code))
                    {
                        count++;
                    }
                    else
                    {
                        break;
                    }
                }
            }
            var result = Mapper.Map <PSAzureOperationResponse>(op);

            WriteObject(result);
        }
Beispiel #7
0
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            if (String.IsNullOrEmpty(Name))
            {
                Name = DscExtensionCmdletConstants.ExtensionPublishedNamespace + "." + DscExtensionCmdletConstants.ExtensionPublishedName;
            }

            if (Status)
            {
                var result    = VirtualMachineExtensionClient.GetWithInstanceView(ResourceGroupName, VMName, Name);
                var extension = result.ToPSVirtualMachineExtension(this.ResourceGroupName, this.VMName);

                if (
                    extension.Publisher.Equals(DscExtensionCmdletConstants.ExtensionPublishedNamespace,
                                               StringComparison.InvariantCultureIgnoreCase) &&
                    extension.ExtensionType.Equals(DscExtensionCmdletConstants.ExtensionPublishedName,
                                                   StringComparison.InvariantCultureIgnoreCase))
                {
                    WriteObject(GetDscExtensionContext(extension));
                }
                else
                {
                    WriteObject(null);
                }
            }
            else
            {
                var result    = VirtualMachineExtensionClient.Get(ResourceGroupName, VMName, Name);
                var extension = result.ToPSVirtualMachineExtension(this.ResourceGroupName, this.VMName);

                if (
                    extension.Publisher.Equals(
                        DscExtensionCmdletConstants.ExtensionPublishedNamespace,
                        StringComparison.InvariantCultureIgnoreCase) &&
                    extension.ExtensionType.Equals(
                        DscExtensionCmdletConstants.ExtensionPublishedName,
                        StringComparison.InvariantCultureIgnoreCase))
                {
                    WriteObject(GetDscExtensionContext(extension));
                }
                else
                {
                    WriteObject(null);
                }
            }
        }
Beispiel #8
0
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            if (string.IsNullOrEmpty(this.Location))
            {
                this.Location = GetLocationFromVm(this.ResourceGroupName, this.VMName);
            }

            var parameters = new VirtualMachineExtension
            {
                Location           = this.Location,
                Name               = Name ?? VirtualMachineSqlServerExtensionContext.ExtensionPublishedNamespace + "." + VirtualMachineSqlServerExtensionContext.ExtensionPublishedName,
                Type               = VirtualMachineExtensionType,
                Publisher          = VirtualMachineSqlServerExtensionContext.ExtensionPublishedNamespace,
                ExtensionType      = VirtualMachineSqlServerExtensionContext.ExtensionPublishedName,
                TypeHandlerVersion = string.IsNullOrEmpty(this.Version) ? VirtualMachineSqlServerExtensionContext.ExtensionDefaultVersion : this.Version,
                Settings           = this.GetPublicConfiguration(),
                ProtectedSettings  = this.GetPrivateConfiguration(),
            };

            // Add retry logic due to CRP service restart known issue CRP bug: 3564713
            // Similair approach taken in DSC cmdlet as well
            var count = 1;
            ComputeLongRunningOperationResponse op = null;

            while (count <= 2)
            {
                op = VirtualMachineExtensionClient.CreateOrUpdate(
                    ResourceGroupName,
                    VMName,
                    parameters);

                if (ComputeOperationStatus.Failed.Equals(op.Status) && op.Error != null && "InternalExecutionError".Equals(op.Error.Code))
                {
                    count++;
                }
                else
                {
                    break;
                }
            }
            var result = Mapper.Map <PSComputeLongRunningOperation>(op);

            WriteObject(result);
        }
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            if (String.IsNullOrEmpty(Name))
            {
                Name = DscExtensionCmdletConstants.ExtensionPublishedNamespace + "." + DscExtensionCmdletConstants.ExtensionPublishedName;
            }

            var result = VirtualMachineExtensionClient.GetWithInstanceView(ResourceGroupName, VMName, Name);
            if (result != null && result.Body != null)
            {
                WriteObject(GetDscExtensionStatusContext(result.Body, ResourceGroupName, VMName));
            }
            else
            {
                WriteObject(null);
            }
        }
Beispiel #10
0
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            if (String.IsNullOrEmpty(Name))
            {
                VirtualMachine vm = ComputeClient.ComputeManagementClient.VirtualMachines.Get(this.ResourceGroupName, this.VMName);
                if (vm != null)
                {
                    VirtualMachineExtension virtualMachineExtension = vm.Resources.Where(x => x.Publisher.Equals(VirtualMachineSqlServerExtensionContext.ExtensionPublishedNamespace)).FirstOrDefault();
                    if (virtualMachineExtension != null)
                    {
                        this.Name = virtualMachineExtension.Name;
                    }
                }

                if (String.IsNullOrEmpty(Name))
                {
                    Name = VirtualMachineSqlServerExtensionContext.ExtensionPublishedName;
                }
            }

            var result    = VirtualMachineExtensionClient.GetWithInstanceView(ResourceGroupName, VMName, Name);
            var extension = result.ToPSVirtualMachineExtension(this.ResourceGroupName, this.VMName);

            if (
                extension.Publisher.Equals(VirtualMachineSqlServerExtensionContext.ExtensionPublishedNamespace,
                                           StringComparison.InvariantCultureIgnoreCase) &&
                extension.ExtensionType.Equals(VirtualMachineSqlServerExtensionContext.ExtensionPublishedType,
                                               StringComparison.InvariantCultureIgnoreCase))
            {
                WriteObject(GetSqlServerExtensionContext(extension));
            }
            else
            {
                WriteObject(null);
            }
        }
Beispiel #11
0
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            string virtualMachineName = "";
            string resourceGroup      = "";

            if (this.ParameterSetName.Equals(VMParameterSetName))
            {
                virtualMachineName = this.VM.Name;
                if (this.VM.ResourceGroupName == null)
                {
                    WriteError("The incoming virtual machine must have a 'resourceGroupName'.", this.VM);
                }
                resourceGroup = this.VM.ResourceGroupName;
            }
            else
            {
                virtualMachineName = VMName;
                resourceGroup      = ResourceGroupName;
            }

            if (String.IsNullOrEmpty(Name))
            {
                Name = DscExtensionCmdletConstants.ExtensionPublishedNamespace + "." + DscExtensionCmdletConstants.ExtensionPublishedName;
            }

            var result = VirtualMachineExtensionClient.GetWithInstanceView(resourceGroup, virtualMachineName, Name);

            if (result != null && result.Body != null)
            {
                WriteObject(GetDscExtensionStatusContext(result.Body, resourceGroup, virtualMachineName));
            }
            else
            {
                WriteObject(null);
            }
        }
Beispiel #12
0
        private void CreateConfiguration()
        {
            var publicSettings  = new DscExtensionPublicSettings();
            var privateSettings = new DscExtensionPrivateSettings();

            publicSettings.WmfVersion = string.IsNullOrEmpty(WmfVersion) ? "latest" : WmfVersion;

            if (!string.IsNullOrEmpty(ArchiveBlobName))
            {
                ConfigurationUris configurationUris = UploadConfigurationDataToBlob();

                publicSettings.SasToken              = configurationUris.SasToken;
                publicSettings.ModulesUrl            = configurationUris.ModulesUrl;
                publicSettings.ConfigurationFunction = string.Format(
                    CultureInfo.InvariantCulture,
                    "{0}\\{1}",
                    Path.GetFileNameWithoutExtension(ArchiveBlobName),
                    ConfigurationName);
                Tuple <DscExtensionPublicSettings.Property[], Hashtable> settings =
                    DscExtensionSettingsSerializer.SeparatePrivateItems(ConfigurationArgument);
                publicSettings.Properties = settings.Item1;
                privateSettings.Items     = settings.Item2;

                privateSettings.DataBlobUri = configurationUris.DataBlobUri;
            }

            if (string.IsNullOrEmpty(this.Location))
            {
                this.Location = GetLocationFromVm(this.ResourceGroupName, this.VMName);
            }

            var parameters = new VirtualMachineExtension
            {
                Location           = this.Location,
                Name               = Name ?? DscExtensionCmdletConstants.ExtensionPublishedNamespace + "." + DscExtensionCmdletConstants.ExtensionPublishedName,
                Type               = VirtualMachineExtensionType,
                Publisher          = DscExtensionCmdletConstants.ExtensionPublishedNamespace,
                ExtensionType      = DscExtensionCmdletConstants.ExtensionPublishedName,
                TypeHandlerVersion = Version,
                // Define the public and private property bags that will be passed to the extension.
                Settings = DscExtensionSettingsSerializer.SerializePublicSettings(publicSettings),
                //PrivateConfuguration contains sensitive data in a plain text
                ProtectedSettings       = DscExtensionSettingsSerializer.SerializePrivateSettings(privateSettings),
                AutoUpgradeMinorVersion = AutoUpdate.IsPresent
            };

            //Add retry logic due to CRP service restart known issue CRP bug: 3564713
            var count = 1;
            ComputeLongRunningOperationResponse op = null;

            while (count <= 2)
            {
                op = VirtualMachineExtensionClient.CreateOrUpdate(
                    ResourceGroupName,
                    VMName,
                    parameters);

                if (ComputeOperationStatus.Failed.Equals(op.Status) && op.Error != null && "InternalExecutionError".Equals(op.Error.Code))
                {
                    count++;
                }
                else
                {
                    break;
                }
            }
            var result = Mapper.Map <PSComputeLongRunningOperation>(op);

            WriteObject(result);
        }
Beispiel #13
0
        private void CreateConfiguration()
        {
            var publicSettings  = new DscExtensionPublicSettings();
            var privateSettings = new DscExtensionPrivateSettings();

            if (!string.IsNullOrEmpty(ArchiveBlobName))
            {
                ConfigurationUris configurationUris = UploadConfigurationDataToBlob();

                publicSettings.SasToken   = configurationUris.SasToken;
                publicSettings.ModulesUrl = configurationUris.ModulesUrl;

                Hashtable privacySetting = new Hashtable();
                privacySetting.Add("DataCollection", DataCollection);
                publicSettings.Privacy = privacySetting;

                publicSettings.ConfigurationFunction = string.Format(
                    CultureInfo.InvariantCulture,
                    "{0}\\{1}",
                    Path.GetFileNameWithoutExtension(ArchiveBlobName),
                    ConfigurationName);
                Tuple <DscExtensionPublicSettings.Property[], Hashtable> settings =
                    DscExtensionSettingsSerializer.SeparatePrivateItems(ConfigurationArgument);
                publicSettings.Properties = settings.Item1;
                privateSettings.Items     = settings.Item2;

                privateSettings.DataBlobUri = configurationUris.DataBlobUri;

                if (!string.IsNullOrEmpty(WmfVersion))
                {
                    publicSettings.WmfVersion = WmfVersion;
                }
            }

            if (string.IsNullOrEmpty(this.Location))
            {
                this.Location = GetLocationFromVm(this.ResourceGroupName, this.VMName);
            }

            var parameters = new VirtualMachineExtension
            {
                Location  = this.Location,
                Publisher = DscExtensionCmdletConstants.ExtensionPublishedNamespace,
                VirtualMachineExtensionType = DscExtensionCmdletConstants.ExtensionPublishedName,
                TypeHandlerVersion          = Version,
                // Define the public and private property bags that will be passed to the extension.
                Settings = publicSettings,
                //PrivateConfuguration contains sensitive data in a plain text
                ProtectedSettings       = privateSettings,
                AutoUpgradeMinorVersion = AutoUpdate.IsPresent
            };

            //Add retry logic due to CRP service restart known issue CRP bug: 3564713
            var count = 1;

            Rest.Azure.AzureOperationResponse <VirtualMachineExtension> op = null;

            while (true)
            {
                try
                {
                    op = VirtualMachineExtensionClient.CreateOrUpdateWithHttpMessagesAsync(
                        ResourceGroupName,
                        VMName,
                        Name ?? DscExtensionCmdletConstants.ExtensionPublishedNamespace + "." + DscExtensionCmdletConstants.ExtensionPublishedName,
                        parameters).GetAwaiter().GetResult();

                    break;
                }
                catch (Rest.Azure.CloudException ex)
                {
                    var errorReturned = JsonConvert.DeserializeObject <PSComputeLongRunningOperation>(
                        ex.Response.Content);

                    if ("Failed".Equals(errorReturned.Status) &&
                        errorReturned.Error != null && "InternalExecutionError".Equals(errorReturned.Error.Code))
                    {
                        count++;
                        if (count <= 2)
                        {
                            continue;
                        }
                    }

                    ThrowTerminatingError(new ErrorRecord(ex, "InvalidResult", ErrorCategory.InvalidResult, null));
                }
            }

            var result = ComputeAutoMapperProfile.Mapper.Map <PSAzureOperationResponse>(op);

            WriteObject(result);
        }
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();


            VirtualMachine vm = ComputeClient.ComputeManagementClient.VirtualMachines.Get(this.ResourceGroupName, this.VMName);

            if (vm != null && vm.Resources != null)
            {
                VirtualMachineExtension extension = vm.Resources.Where(x => x.Publisher.Equals(VirtualMachineSqlServerExtensionContext.ExtensionPublishedNamespace)).FirstOrDefault();
                if (extension != null)
                {
                    this.Name    = extension.Name;
                    this.Version = extension.TypeHandlerVersion;
                }

                this.Location = vm.Location;
            }

            var parameters = new VirtualMachineExtension
            {
                Location  = this.Location,
                Publisher = VirtualMachineSqlServerExtensionContext.ExtensionPublishedNamespace,
                VirtualMachineExtensionType = VirtualMachineSqlServerExtensionContext.ExtensionPublishedType,
                TypeHandlerVersion          = string.IsNullOrEmpty(this.Version) ? VirtualMachineSqlServerExtensionContext.ExtensionDefaultVersion : this.Version,
                Settings          = this.GetPublicConfiguration(),
                ProtectedSettings = this.GetPrivateConfiguration(),
            };

            // Add retry logic due to CRP service restart known issue CRP bug: 3564713
            // Similair approach taken in DSC cmdlet as well
            var count = 1;

            Rest.Azure.AzureOperationResponse <VirtualMachineExtension> op = null;
            while (count <= 2)
            {
                try
                {
                    op = VirtualMachineExtensionClient.CreateOrUpdateWithHttpMessagesAsync(
                        ResourceGroupName,
                        VMName,
                        Name ?? VirtualMachineSqlServerExtensionContext.ExtensionPublishedName,
                        parameters).GetAwaiter().GetResult();
                    break;
                }
                catch (Rest.Azure.CloudException ex)
                {
                    var errorReturned = JsonConvert.DeserializeObject <PSComputeLongRunningOperation>(ex.Response.Content);
                    if ("Failed".Equals(errorReturned.Status) &&
                        errorReturned.Error != null && "InternalExecutionError".Equals(errorReturned.Error.Code))
                    {
                        count++;
                    }
                    else
                    {
                        base.ThrowTerminatingError(new ErrorRecord(ex, "InvalidResult", ErrorCategory.InvalidResult, null));
                    }
                }
            }
            var result = Mapper.Map <PSAzureOperationResponse>(op);

            WriteObject(result);
        }
Beispiel #15
0
        protected void ExecuteVirtualMachineExtensionListMethod(object[] invokeMethodInputParameters)
        {
            var result = VirtualMachineExtensionClient.List();

            WriteObject(result);
        }
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            string virtualMachineName = "";
            string resourceGroup      = "";

            if (this.ParameterSetName.Equals(VMParameterSetName))
            {
                virtualMachineName = this.VM.Name;
                if (this.VM.ResourceGroupName == null)
                {
                    WriteError("The incoming virtual machine must have a 'resourceGroupName'.", this.VM);
                }
                resourceGroup = this.VM.ResourceGroupName;
            }
            else
            {
                virtualMachineName = VMName;
                resourceGroup      = ResourceGroupName;
            }

            if (String.IsNullOrEmpty(Name))
            {
                Name = DscExtensionCmdletConstants.ExtensionPublishedNamespace + "." + DscExtensionCmdletConstants.ExtensionPublishedName;
            }

            if (Status)
            {
                var result    = VirtualMachineExtensionClient.GetWithInstanceView(resourceGroup, virtualMachineName, Name);
                var extension = result.ToPSVirtualMachineExtension(resourceGroup, virtualMachineName);

                if (
                    extension.Publisher.Equals(DscExtensionCmdletConstants.ExtensionPublishedNamespace,
                                               StringComparison.InvariantCultureIgnoreCase) &&
                    extension.ExtensionType.Equals(DscExtensionCmdletConstants.ExtensionPublishedName,
                                                   StringComparison.InvariantCultureIgnoreCase))
                {
                    WriteObject(GetDscExtensionContext(extension));
                }
                else
                {
                    WriteObject(null);
                }
            }
            else
            {
                var result    = VirtualMachineExtensionClient.Get(resourceGroup, virtualMachineName, Name);
                var extension = result.ToPSVirtualMachineExtension(resourceGroup, virtualMachineName);

                if (
                    extension.Publisher.Equals(
                        DscExtensionCmdletConstants.ExtensionPublishedNamespace,
                        StringComparison.InvariantCultureIgnoreCase) &&
                    extension.ExtensionType.Equals(
                        DscExtensionCmdletConstants.ExtensionPublishedName,
                        StringComparison.InvariantCultureIgnoreCase))
                {
                    WriteObject(GetDscExtensionContext(extension));
                }
                else
                {
                    WriteObject(null);
                }
            }
        }