コード例 #1
0
        /// <summary>
        /// Executes the cmdlet
        /// </summary>
        public override void ExecuteCmdlet()
        {
            var queryOptions = new RestApiModels.QueryOptions
            {
                Top          = MyInvocation.BoundParameters.ContainsKey("Top") ? (int?)Top : null,
                OrderBy      = OrderBy,
                Select       = Select,
                FromProperty = MyInvocation.BoundParameters.ContainsKey("From") ? (DateTime?)From : null,
                To           = MyInvocation.BoundParameters.ContainsKey("To") ? (DateTime?)To : null,
                Filter       = Filter,
                Apply        = Apply
            };

            RestApiModels.PolicyEventsQueryResults policyEventsQueryResults;

            try
            {
                switch (ParameterSetName)
                {
                case ParameterSetNames.ManagementGroupScope:
                    policyEventsQueryResults = PolicyInsightsClient.PolicyEvents.ListQueryResultsForManagementGroup(
                        ManagementGroupName,
                        queryOptions);
                    break;

                case ParameterSetNames.SubscriptionScope:
                    policyEventsQueryResults = PolicyInsightsClient.PolicyEvents.ListQueryResultsForSubscription(
                        SubscriptionId ?? DefaultContext.Subscription.Id,
                        queryOptions);
                    break;

                case ParameterSetNames.ResourceGroupScope:
                    policyEventsQueryResults = PolicyInsightsClient.PolicyEvents.ListQueryResultsForResourceGroup(
                        SubscriptionId ?? DefaultContext.Subscription.Id,
                        ResourceGroupName,
                        queryOptions);
                    break;

                case ParameterSetNames.ResourceScope:
                    policyEventsQueryResults = PolicyInsightsClient.PolicyEvents.ListQueryResultsForResource(
                        ResourceId,
                        queryOptions);
                    break;

                case ParameterSetNames.PolicySetDefinitionScope:
                    policyEventsQueryResults = PolicyInsightsClient.PolicyEvents.ListQueryResultsForPolicySetDefinition(
                        SubscriptionId ?? DefaultContext.Subscription.Id,
                        PolicySetDefinitionName,
                        queryOptions);
                    break;

                case ParameterSetNames.PolicyDefinitionScope:
                    policyEventsQueryResults = PolicyInsightsClient.PolicyEvents.ListQueryResultsForPolicyDefinition(
                        SubscriptionId ?? DefaultContext.Subscription.Id,
                        PolicyDefinitionName,
                        queryOptions);
                    break;

                case ParameterSetNames.SubscriptionLevelPolicyAssignmentScope:
                    policyEventsQueryResults = PolicyInsightsClient.PolicyEvents.ListQueryResultsForSubscriptionLevelPolicyAssignment(
                        SubscriptionId ?? DefaultContext.Subscription.Id,
                        PolicyAssignmentName,
                        queryOptions);
                    break;

                case ParameterSetNames.ResourceGroupLevelPolicyAssignmentScope:
                    policyEventsQueryResults = PolicyInsightsClient.PolicyEvents.ListQueryResultsForResourceGroupLevelPolicyAssignment(
                        SubscriptionId ?? DefaultContext.Subscription.Id,
                        ResourceGroupName,
                        PolicyAssignmentName,
                        queryOptions);
                    break;

                default:
                    throw new PSInvalidOperationException();
                }
            }
            catch (RestApiModels.QueryFailureException e)
            {
                WriteExceptionError(e.Body?.Error != null
                    ? new Exception($"{e.Message} ({e.Body.Error.Code}: {e.Body.Error.Message})")
                    : e);
                return;
            }

            WriteObject(policyEventsQueryResults.Value.Select(policyEvent => new PolicyEvent(policyEvent)), true);
        }
コード例 #2
0
        /// <summary>
        /// Executes the cmdlet
        /// </summary>
        public override void Execute()
        {
            var queryOptions = new RestApiModels.QueryOptions
            {
                Top          = MyInvocation.BoundParameters.ContainsKey("Top") ? (int?)Top : null,
                FromProperty = MyInvocation.BoundParameters.ContainsKey("From") ? (DateTime?)From : null,
                To           = MyInvocation.BoundParameters.ContainsKey("To") ? (DateTime?)To : null,
                Filter       = Filter
            };

            RestApiModels.SummarizeResults summarizeResults;

            switch (ParameterSetName)
            {
            case ParameterSetNames.ManagementGroupScope:
                summarizeResults = PolicyInsightsClient.PolicyStates.SummarizeForManagementGroup(
                    ManagementGroupName,
                    queryOptions);
                break;

            case ParameterSetNames.SubscriptionScope:
                summarizeResults = PolicyInsightsClient.PolicyStates.SummarizeForSubscription(
                    SubscriptionId ?? DefaultContext.Subscription.Id,
                    queryOptions);
                break;

            case ParameterSetNames.ResourceGroupScope:
                summarizeResults = PolicyInsightsClient.PolicyStates.SummarizeForResourceGroup(
                    SubscriptionId ?? DefaultContext.Subscription.Id,
                    ResourceGroupName,
                    queryOptions);
                break;

            case ParameterSetNames.ResourceScope:
                summarizeResults = PolicyInsightsClient.PolicyStates.SummarizeForResource(
                    ResourceId,
                    queryOptions);
                break;

            case ParameterSetNames.PolicySetDefinitionScope:
                summarizeResults = PolicyInsightsClient.PolicyStates.SummarizeForPolicySetDefinition(
                    SubscriptionId ?? DefaultContext.Subscription.Id,
                    PolicySetDefinitionName,
                    queryOptions);
                break;

            case ParameterSetNames.PolicyDefinitionScope:
                summarizeResults = PolicyInsightsClient.PolicyStates.SummarizeForPolicyDefinition(
                    SubscriptionId ?? DefaultContext.Subscription.Id,
                    PolicyDefinitionName,
                    queryOptions);
                break;

            case ParameterSetNames.SubscriptionLevelPolicyAssignmentScope:
                summarizeResults = PolicyInsightsClient.PolicyStates.SummarizeForSubscriptionLevelPolicyAssignment(
                    SubscriptionId ?? DefaultContext.Subscription.Id,
                    PolicyAssignmentName,
                    queryOptions);
                break;

            case ParameterSetNames.ResourceGroupLevelPolicyAssignmentScope:
                summarizeResults = PolicyInsightsClient.PolicyStates.SummarizeForResourceGroupLevelPolicyAssignment(
                    SubscriptionId ?? DefaultContext.Subscription.Id,
                    ResourceGroupName,
                    PolicyAssignmentName,
                    queryOptions);
                break;

            default:
                throw new PSInvalidOperationException();
            }

            var summary = summarizeResults.Value.First();

            WriteObject(new PolicyStateSummary(summary));
        }
コード例 #3
0
        /// <summary>
        /// Executes the cmdlet
        /// </summary>
        public override void Execute()
        {
            var queryOptions = new RestApiModels.QueryOptions
            {
                Top          = MyInvocation.BoundParameters.ContainsKey("Top") ? (int?)Top : null,
                OrderBy      = OrderBy,
                Select       = Select,
                FromProperty = MyInvocation.BoundParameters.ContainsKey("From") ? (DateTime?)From : null,
                To           = MyInvocation.BoundParameters.ContainsKey("To") ? (DateTime?)To : null,
                Filter       = Filter,
                Apply        = Apply,
                Expand       = Expand
            };

            RestApiModels.PolicyStatesQueryResults policyStatesQueryResults;

            var policyStatesResource = !All.IsPresent
                ? RestApiModels.PolicyStatesResource.Latest
                : RestApiModels.PolicyStatesResource.Default;

            switch (ParameterSetName)
            {
            case ParameterSetNames.ManagementGroupScope:
                policyStatesQueryResults = PolicyInsightsClient.PolicyStates.ListQueryResultsForManagementGroup(
                    policyStatesResource,
                    ManagementGroupName,
                    queryOptions);
                break;

            case ParameterSetNames.SubscriptionScope:
                policyStatesQueryResults = PolicyInsightsClient.PolicyStates.ListQueryResultsForSubscription(
                    policyStatesResource,
                    SubscriptionId ?? DefaultContext.Subscription.Id,
                    queryOptions);
                break;

            case ParameterSetNames.ResourceGroupScope:
                policyStatesQueryResults = PolicyInsightsClient.PolicyStates.ListQueryResultsForResourceGroup(
                    policyStatesResource,
                    SubscriptionId ?? DefaultContext.Subscription.Id,
                    ResourceGroupName,
                    queryOptions);
                break;

            case ParameterSetNames.ResourceScope:
                policyStatesQueryResults = PolicyInsightsClient.PolicyStates.ListQueryResultsForResource(
                    policyStatesResource,
                    ResourceId,
                    queryOptions);
                break;

            case ParameterSetNames.PolicySetDefinitionScope:
                policyStatesQueryResults = PolicyInsightsClient.PolicyStates.ListQueryResultsForPolicySetDefinition(
                    policyStatesResource,
                    SubscriptionId ?? DefaultContext.Subscription.Id,
                    PolicySetDefinitionName,
                    queryOptions);
                break;

            case ParameterSetNames.PolicyDefinitionScope:
                policyStatesQueryResults = PolicyInsightsClient.PolicyStates.ListQueryResultsForPolicyDefinition(
                    policyStatesResource,
                    SubscriptionId ?? DefaultContext.Subscription.Id,
                    PolicyDefinitionName,
                    queryOptions);
                break;

            case ParameterSetNames.SubscriptionLevelPolicyAssignmentScope:
                policyStatesQueryResults = PolicyInsightsClient.PolicyStates.ListQueryResultsForSubscriptionLevelPolicyAssignment(
                    policyStatesResource,
                    SubscriptionId ?? DefaultContext.Subscription.Id,
                    PolicyAssignmentName,
                    queryOptions);
                break;

            case ParameterSetNames.ResourceGroupLevelPolicyAssignmentScope:
                policyStatesQueryResults = PolicyInsightsClient.PolicyStates.ListQueryResultsForResourceGroupLevelPolicyAssignment(
                    policyStatesResource,
                    SubscriptionId ?? DefaultContext.Subscription.Id,
                    ResourceGroupName,
                    PolicyAssignmentName,
                    queryOptions);
                break;

            default:
                throw new PSInvalidOperationException();
            }

            WriteObject(policyStatesQueryResults.Value.Select(policyState => new PolicyState(policyState)), true);
        }
コード例 #4
0
        /// <summary>
        /// Executes the cmdlet
        /// </summary>
        public override void Execute()
        {
            const int PageSize = 1000;

            int numberOfResults = MyInvocation.BoundParameters.ContainsKey("Top") ? Top : int.MaxValue;

            // Using the $top as a query parameter for the policy states API will cause it to return all results in a single page, which may exceed the response size limits.
            // Therefore, only pass a $top value if the requested number of results is below the size of a single page. If more than one page is needed, make paged requests until enough results were returned.
            var queryOptions = new RestApiModels.QueryOptions
            {
                Top          = numberOfResults <= PageSize ? (int?)numberOfResults : null,
                OrderBy      = OrderBy,
                Select       = Select,
                FromProperty = MyInvocation.BoundParameters.ContainsKey("From") ? (DateTime?)From : null,
                To           = MyInvocation.BoundParameters.ContainsKey("To") ? (DateTime?)To : null,
                Filter       = Filter,
                Apply        = Apply,
                Expand       = Expand
            };

            var policyStatesQueryResults = new List <RestApiModels.PolicyState>();

            var policyStatesResource = !All.IsPresent
                ? RestApiModels.PolicyStatesResource.Latest
                : RestApiModels.PolicyStatesResource.Default;

            switch (ParameterSetName)
            {
            case ParameterSetNames.ManagementGroupScope:
                PaginationHelper.ForEach(
                    getFirstPage: () => PolicyInsightsClient.PolicyStates.ListQueryResultsForManagementGroup(policyStatesResource, ManagementGroupName, queryOptions),
                    getNextPage: nextLink => PolicyInsightsClient.PolicyStates.ListQueryResultsForManagementGroupNext(nextLink),
                    action: results => policyStatesQueryResults.AddRange(results),
                    numberOfResults: numberOfResults,
                    cancellationToken: this.CancellationToken);

                break;

            case ParameterSetNames.SubscriptionScope:
                PaginationHelper.ForEach(
                    getFirstPage: () => PolicyInsightsClient.PolicyStates.ListQueryResultsForSubscription(policyStatesResource, SubscriptionId ?? DefaultContext.Subscription.Id, queryOptions),
                    getNextPage: nextLink => PolicyInsightsClient.PolicyStates.ListQueryResultsForSubscriptionNext(nextLink),
                    action: results => policyStatesQueryResults.AddRange(results),
                    numberOfResults: numberOfResults,
                    cancellationToken: this.CancellationToken);

                break;

            case ParameterSetNames.ResourceGroupScope:
                PaginationHelper.ForEach(
                    getFirstPage: () => PolicyInsightsClient.PolicyStates.ListQueryResultsForResourceGroup(policyStatesResource, SubscriptionId ?? DefaultContext.Subscription.Id, ResourceGroupName, queryOptions),
                    getNextPage: nextLink => PolicyInsightsClient.PolicyStates.ListQueryResultsForResourceGroupNext(nextLink),
                    action: results => policyStatesQueryResults.AddRange(results),
                    numberOfResults: numberOfResults,
                    cancellationToken: this.CancellationToken);

                break;

            case ParameterSetNames.ResourceScope:
                PaginationHelper.ForEach(
                    getFirstPage: () => PolicyInsightsClient.PolicyStates.ListQueryResultsForResource(policyStatesResource, ResourceId, queryOptions),
                    getNextPage: nextLink => PolicyInsightsClient.PolicyStates.ListQueryResultsForResourceNext(nextLink),
                    action: results => policyStatesQueryResults.AddRange(results),
                    numberOfResults: numberOfResults,
                    cancellationToken: this.CancellationToken);

                break;

            case ParameterSetNames.PolicySetDefinitionScope:
                PaginationHelper.ForEach(
                    getFirstPage: () => PolicyInsightsClient.PolicyStates.ListQueryResultsForPolicySetDefinition(policyStatesResource, SubscriptionId ?? DefaultContext.Subscription.Id, PolicySetDefinitionName, queryOptions),
                    getNextPage: nextLink => PolicyInsightsClient.PolicyStates.ListQueryResultsForPolicySetDefinitionNext(nextLink),
                    action: results => policyStatesQueryResults.AddRange(results),
                    numberOfResults: numberOfResults,
                    cancellationToken: this.CancellationToken);

                break;

            case ParameterSetNames.PolicyDefinitionScope:
                PaginationHelper.ForEach(
                    getFirstPage: () => PolicyInsightsClient.PolicyStates.ListQueryResultsForPolicyDefinition(policyStatesResource, SubscriptionId ?? DefaultContext.Subscription.Id, PolicyDefinitionName, queryOptions),
                    getNextPage: nextLink => PolicyInsightsClient.PolicyStates.ListQueryResultsForPolicyDefinitionNext(nextLink),
                    action: results => policyStatesQueryResults.AddRange(results),
                    numberOfResults: numberOfResults,
                    cancellationToken: this.CancellationToken);

                break;

            case ParameterSetNames.SubscriptionLevelPolicyAssignmentScope:
                PaginationHelper.ForEach(
                    getFirstPage: () => PolicyInsightsClient.PolicyStates.ListQueryResultsForSubscriptionLevelPolicyAssignment(policyStatesResource, SubscriptionId ?? DefaultContext.Subscription.Id, PolicyAssignmentName, queryOptions),
                    getNextPage: nextLink => PolicyInsightsClient.PolicyStates.ListQueryResultsForSubscriptionLevelPolicyAssignmentNext(nextLink),
                    action: results => policyStatesQueryResults.AddRange(results),
                    numberOfResults: numberOfResults,
                    cancellationToken: this.CancellationToken);

                break;

            case ParameterSetNames.ResourceGroupLevelPolicyAssignmentScope:
                PaginationHelper.ForEach(
                    getFirstPage: () => PolicyInsightsClient.PolicyStates.ListQueryResultsForResourceGroupLevelPolicyAssignment(policyStatesResource, SubscriptionId ?? DefaultContext.Subscription.Id, ResourceGroupName, PolicyAssignmentName, queryOptions),
                    getNextPage: nextLink => PolicyInsightsClient.PolicyStates.ListQueryResultsForResourceGroupLevelPolicyAssignmentNext(nextLink),
                    action: results => policyStatesQueryResults.AddRange(results),
                    numberOfResults: numberOfResults,
                    cancellationToken: this.CancellationToken);

                break;

            default:
                throw new PSInvalidOperationException();
            }

            WriteObject(policyStatesQueryResults.Select(policyState => new PolicyState(policyState)), true);
        }