/// <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); }
/// <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)); }
/// <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); }
/// <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); }