public/entraid/Get-EidConditionalAccessPolicy.ps1
function Get-EidConditionalAccessPolicy { <# .SYNOPSIS Get all conditional access policies from Microsoft Entra ID. .DESCRIPTION Sanitize the results to include only relevant information. .EXAMPLE Get-EidConditionalAccessPolicy; #> [cmdletbinding()] [OutputType([System.Collections.ArrayList])] param ( ) begin { # Write to log. $customProgress = Write-CustomProgress -Activity $MyInvocation.MyCommand.Name -CurrentOperation 'Retrieving conditional access policies from Microsoft Entra ID'; # New arraylist to store results. $results = New-Object -TypeName System.Collections.ArrayList; # Get all conditional access policies. $entraConditionalAccessPolicies = Get-EntraConditionalAccessPolicy; } process { # Forach conditional access policy. foreach ($entraConditionalAccessPolicy in $entraConditionalAccessPolicies) { # Create result object. $result = [PSCustomObject]@{ Id = $entraConditionalAccessPolicy.Id; DisplayName = $entraConditionalAccessPolicy.DisplayName; State = ''; Description = $entraConditionalAccessPolicy.Description; CreatedDateTime = $entraConditionalAccessPolicy.CreatedDateTime; ModifiedDateTime = $entraConditionalAccessPolicy.ModifiedDateTime; Users = $null; TargetResources = $null; Network = $null; Conditions = $null; Grant = $null; Session = $null; }; # Set state. switch ($entraConditionalAccessPolicy.State) { # If the policy is enabled. 'enabled' { # Set state to Enabled. $result.State = 'Enabled'; } # If the policy is disabled. 'disabled' { # Set state to Disabled. $result.State = 'Disabled'; } # If the policy is enabled for reporting but not enforced. 'enabledForReportingButNotEnforced' { # Set state to ReportOnly. $result.State = 'ReportOnly'; } } # Get user assignment. $result.Users = Get-EidConditionalAccessPolicyUser ` -PolicyId $entraConditionalAccessPolicy.Id; # Get target resources. $result.TargetResources = Get-EidConditionalAccessPolicyTargetResource ` -PolicyId $entraConditionalAccessPolicy.Id; # Get network. $result.Network = Get-EidConditionalAccessPolicyNetwork ` -PolicyId $entraConditionalAccessPolicy.Id; # Get conditions. $result.Conditions = Get-EidConditionalAccessPolicyCondition ` -PolicyId $entraConditionalAccessPolicy.Id; # Get grant. $result.Grant = Get-EidConditionalAccessPolicyGrant ` -PolicyId $entraConditionalAccessPolicy.Id; # Get session. $result.Session = Get-EidConditionalAccessPolicySession ` -PolicyId $entraConditionalAccessPolicy.Id; # Add result to results arraylist. $null = $results.Add($result); } } end { # Write to log. Write-CustomProgress @customProgress; # Return results. return $results; } } |