Functions/Get-SkypeForBusinessOnlineSettingObjects.ps1

<#
.SYNOPSIS
    This function returns objects representing the various settings which can be retrieved from Skype For Business Online.
.DESCRIPTION
    This function returns objects representing the various settings which can be retrieved from Skype For Business Online.
    Each object contains a description of the setting, a script block which returns the value of the setting, and the name of the setting which is suitable for a variable name.
#>

function Get-SkypeForBusinessOnlineSettingObjects {
    [CmdletBinding(PositionalBinding=$false)]
    [OutputType([PSCustomObject[]])]
    param ()

    # Return the setting objects
    return @(
        [PSCustomObject]@{
            Description = "broadcast meeting configurations"
            ScriptBlock = {
                Get-CSBroadcastMeetingConfiguration | Select-Object -Property * -ExcludeProperty "RunspaceId" | Sort-Object -Property "Identity"
            }
            VariableName = "BroadcastMeetingConfigurations"
        },
        [PSCustomObject]@{
            Description = "broadcast meeting policies"
            ScriptBlock = {
                Get-CSBroadcastMeetingPolicy | Select-Object -Property * -ExcludeProperty "RunspaceId" | Sort-Object -Property "Identity"
            }
            VariableName = "BroadcastMeetingPolicy"
        },
        [PSCustomObject]@{
            Description = "calling line identities"
            ScriptBlock = {
                Get-CSCallingLineIdentity | Select-Object -Property * -ExcludeProperty "RunspaceId" | Sort-Object -Property "Identity"
            }
            VariableName = "CallingLineIdentities"
        },
        [PSCustomObject]@{
            Description = "hunt groups"
            ScriptBlock = {
                Get-CSHuntGroup | Select-Object -Property * -ExcludeProperty "RunspaceId" | Sort-Object -Property "Identity"
            }
            VariableName = "HuntGroups"
        },
        [PSCustomObject]@{
            Description = "client policies"
            ScriptBlock = {
                Get-CSClientPolicy | Select-Object -Property * -ExcludeProperty "PolicyEntry", "RunspaceId" | Sort-Object -Property "Identity"
            }
            VariableName = "ClientPolicies"
        },
        [PSCustomObject]@{
            Description = "conferencing policies"
            ScriptBlock = {
                Get-CSConferencingPolicy | Select-Object -Property * -ExcludeProperty "RunspaceId" | Sort-Object -Property "Identity"
            }
            VariableName = "ConferencingPolicies"
        },
        [PSCustomObject]@{
            Description = "IP phone policies"
            ScriptBlock = {
                Get-CSIPPhonePolicy | Select-Object -Property * -ExcludeProperty "RunspaceId" | Sort-Object -Property "Identity"
            }
            VariableName = "IPPhonePolicies"
        },
        [PSCustomObject]@{
            Description = "mobility policies"
            ScriptBlock = {
                Get-CSMobilityPolicy | Select-Object -Property * -ExcludeProperty "RunspaceId" | Sort-Object -Property "Identity"
            }
            VariableName = "MobilityPolicies"
        },
        [PSCustomObject]@{
            Description = "dial in conferencing bridges"
            ScriptBlock = {
                Get-CSOnlineDialInConferencingBridge | Select-Object -Property * -ExcludeProperty "DefaultServiceNumber", "RunspaceId", "ServiceNumbers" | Sort-Object -Property "Name"
            }
            VariableName = "DialInConferencingBridges"
        },
        [PSCustomObject]@{
            Description = "dial in conferencing languages supported"
            ScriptBlock = {
                Get-CSOnlineDialInConferencingLanguagesSupported | Select-Object -Property * -ExcludeProperty "RunspaceId" | Sort-Object -Property "Name"
            }
            VariableName = "DialInConferencingLanguagesSupported"
        },
        [PSCustomObject]@{
            Description = "dial in conferencing service numbers"
            ScriptBlock = {
                Get-CSOnlineDialInConferencingServiceNumber | Select-Object -Property * -ExcludeProperty "RunspaceId" | Sort-Object -Property "City"
            }
            VariableName = "DialInConferencingServiceNumbers"
        },
        [PSCustomObject]@{
            Description = "dial in conferencing tenant configurations"
            ScriptBlock = {
                Get-CSOnlineDialInConferencingTenantConfiguration | Select-Object -Property * -ExcludeProperty "RunspaceId" | Sort-Object -Property "Identity"
            }
            VariableName = "DialInConferencingTenantConfigurations"
        },
        [PSCustomObject]@{
            Description = "dial in conferencing tenant settings"
            ScriptBlock = {
                Get-CSOnlineDialInConferencingTenantSettings | Select-Object -Property * -ExcludeProperty "RunspaceId" | Sort-Object -Property "Identity"
            }
            VariableName = "DialInConferencingTenantSettings"
        },
        [PSCustomObject]@{
            Description = "directory tenants"
            ScriptBlock = {
                Get-CSOnlineDirectoryTenant | Select-Object -Property * -ExcludeProperty "Bridges", "RunspaceId" | Sort-Object -Property "Id"
            }
            VariableName = "DirectoryTenants"
        },
        [PSCustomObject]@{
            Description = "directory tenant number cities"
            ScriptBlock = {
                Get-CSOnlineDirectoryTenantNumberCities | Select-Object -Property * -ExcludeProperty "RunspaceId" | Sort-Object -Property "Identity"
            }
            VariableName = "DirectoryTenantNumberCities"
        },
        [PSCustomObject]@{
            Description = "LIS civic addresses"
            ScriptBlock = {
                Get-CSOnlineLisCivicAddress | Select-Object -Property * -ExcludeProperty "RunspaceId" | Sort-Object -Property "Identity"
            }
            VariableName = "LisCivicAddresses"
        },
        [PSCustomObject]@{
            Description = "voicemail policies"
            ScriptBlock = {
                Get-CSOnlineVoicemailPolicy | Select-Object -Property * -ExcludeProperty "RunspaceId" | Sort-Object -Property "Identity"
            }
            VariableName = "VoicemailPolicies"
        },
        [PSCustomObject]@{
            Description = "organizational auto attendants"
            ScriptBlock = {
                Get-CSOrganizationalAutoAttendant | Select-Object -Property * -ExcludeProperty "RunspaceId" | Sort-Object -Property "Identity"
            }
            VariableName = "OrganizationalAutoAttendants"
        },
        [PSCustomObject]@{
            Description = "organizational auto attendants' statuses"
            ScriptBlock = {
                foreach ($uri in (Get-CSOrganizationalAutoAttendant).PrimaryURI.OriginalString) {
                    Get-CSOrganizationalAutoAttendantStatus -PrimaryURI $uri | Select-Object -Property * -ExcludeProperty "RunspaceId"
                }
            }
            VariableName = "OrganizationalAutoAttendantsStatuses"
        },
        [PSCustomObject]@{
            Description = "organizational auto attendant supported languages"
            ScriptBlock = {
                Get-CSOrganizationalAutoAttendantSupportedLanguage | Select-Object -Property * -ExcludeProperty "Voices", "RunspaceId" | Sort-Object -Property "DisplayName"
            }
            VariableName = "OrganizationalAutoAttendantSupportedLanguages"
        },
        [PSCustomObject]@{
            Description = "organizational auto attendant supported time zones"
            ScriptBlock = {
                Get-CSOrganizationalAutoAttendantSupportedTimeZone | Select-Object -Property * -ExcludeProperty "RunspaceId" | Sort-Object -Property "DisplayName"
            }
            VariableName = "OrganizationalAutoAttendantSupportedTimeZones"
        },
        [PSCustomObject]@{
            Description = "tenant dial plans"
            ScriptBlock = {
                Get-CSTenantDialPlan | Select-Object -Property * -ExcludeProperty "RunspaceId" | Sort-Object -Property "Identity"
            }
            VariableName = "TenantDialPlans"
        },
        [PSCustomObject]@{
            Description = "tenant hybrid configuration"
            ScriptBlock = {
                Get-CSTenantHybridConfiguration | Select-Object -Property * -ExcludeProperty "TenantUpdateTimeWindows", "RunspaceId" | Sort-Object -Property "Identity"
            }
            VariableName = "TenantHybridConfiguration"
        },
        [PSCustomObject]@{
            Description = "voice routing policies"
            ScriptBlock = {
                Get-CSVoiceRoutingPolicy | Select-Object -Property * -ExcludeProperty "RunspaceId" | Sort-Object -Property "Identity"
            }
            VariableName = "VoiceRoutingPolicies"
        }
    )
}