Wrapps around the ServiceDiagnosticSettings
        protected override void ProcessRecordInternal()
        {
            var result = new PSLogProfileCollection();
            if (string.IsNullOrWhiteSpace(this.Name))
            {
                LogProfileListResponse resultList = this.InsightsManagementClient.LogProfilesOperations.ListAsync(CancellationToken.None).Result;

                result.AddRange(resultList.LogProfileCollection.Value.Select(x => new PSLogProfile(x.Id, x.Name, x.Properties)));
            }
            else
            {
                LogProfileGetResponse logProfiles = this.InsightsManagementClient.LogProfilesOperations.GetAsync(this.Name, CancellationToken.None).Result;
                var psResult = new PSLogProfile(logProfiles.Id, this.Name, logProfiles.Properties);
                result.Add(psResult);
            }

            WriteObject(result);
        }
        protected override void ProcessRecordInternal()
        {
            var putParameters = new LogProfileCreatOrUpdateParameters();

            if (this.Categories == null)
            {
                this.Categories = new List<string>(ValidCategories);
            }

            putParameters.Properties = new LogProfile
            {
                Categories = this.Categories,
                Locations = this.Locations,
                RetentionPolicy = new RetentionPolicy
                {
                    Days = this.RetentionInDays.HasValue ? this.RetentionInDays.Value : 0,
                    Enabled = this.RetentionInDays.HasValue
                },
                ServiceBusRuleId = this.ServiceBusRuleId,
                StorageAccountId = this.StorageAccountId
            };

            this.InsightsManagementClient.LogProfilesOperations.CreateOrUpdateAsync(
                this.Name,
                putParameters,
                CancellationToken.None).Wait();

            PSLogProfile psResult = new PSLogProfile(
                "/subscriptions/{0}/providers/microsoft.insights/logprofiles/{1}"
                    .FormatInvariant(DefaultContext.Subscription.Id.ToString(), this.Name), 
                this.Name,
                putParameters.Properties);
            WriteObject(psResult);
        }