Private/Get-CAIQGuestUserTypes.ps1
Function Get-CAIQGuestUserTypes { <# .SYNOPSIS Get the guest user types for a given value .DESCRIPTION This function takes a value and returns the guest user types for that value .PARAMETER Value The value to get the guest user types for .EXAMPLE Get-CAIQGuestUserTypes -Value 1 Returns "Local guest users" .EXAMPLE Get-CAIQGuestUserTypes -Value 11 Returns "Local guest users", "B2B Collaboration guest users", "B2B Direct connect users" .EXAMPLE Get-CAIQGuestUserTypes -Value 100 Returns "Unknown external user type" .INPUTS System.Int32 .OUTPUTS System.Collections.Generic.List[System.String] #> [CmdletBinding()] [OutputType([System.Collections.Generic.List[System.String]])] param ( [Parameter(Mandatory=$true)] [int]$Value ) Begin { # Define the guest user type mappings $guest_types = @{} $guest_types["1"] = "Local guest users" $guest_types["2"] = "B2B Collaboration guest users" $guest_types["4"] = "B2B Collaboration members users" $guest_types["8"] = "B2B Direct connect users" $guest_types["16"] = "Other external users" $guest_types["32"] = "Service provider users" # Initialize results list $results = [System.Collections.Generic.List[string]]::new() # Calculate max valid value $valid_flags = $guest_types.Keys $max_value = ($valid_flags | Measure-Object -Sum).Sum } Process { # Check for invalid values if ($value -le 0 -or $value -gt $max_value) { [void]$results.Add($value.ToString()) return $results } # Return null for value of 0 if ($value -eq 0) { [void]$results.Add($null) return $results } # Check for invalid combinations $remaining = $value foreach ($flag in $valid_flags | Sort-Object -Descending) { if ($remaining -band $flag) { $remaining = $remaining - $flag } } # If there are any remaining bits, the value is invalid if ($remaining -ne 0) { [void]$results.Add($value.ToString()) return $results } # If we get here, process valid flags foreach ($flag in $guest_types.Keys | Sort-Object) { if ($value -band $flag) { [void]$results.Add($guest_types[$flag]) } } # Return the results return $results } End { } } |