Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature Request: Add Support for Listing Enterprise Applications in Get-EntraApplication #1108

Open
HCRitter opened this issue Sep 24, 2024 · 4 comments
Labels

Comments

@HCRitter
Copy link
Contributor

Describe the feature

I would like to extend the functionality of the Get-EntraApplication cmdlet to list either App Registrations or Enterprise Applications within an Entra Tenant. To achieve this, a new switch parameter (e.g., -EnterpriseApps) could be introduced, allowing users to specify whether they want to retrieve Enterprise Applications instead of the default App Registrations. This approach would eliminate the need for a separate command while enhancing versatility.

How will this feature enhance your project and further the project’s overall goals? Who will benefit from this feature (i.e. all users; the project team)?

This feature will significantly streamline workflows for companies that often need to list Enterprise Applications instead of just App Registrations. It will help users who frequently switch between managing these two types of applications. Adding this parameter will benefit not only users but also the project team by reducing the need for workarounds and custom scripts, making the cmdlet more comprehensive and user-friendly.

  • All users of the Get-EntraApplication cmdlet, especially those in large organizations or enterprise environments that need to frequently query both App Registrations and Enterprise Applications.
  • Project maintainers who can avoid creating a separate command for this purpose, keeping the command set more streamlined and maintainable.

Describe alternatives you've considered

Currently, the alternative is applying a filter to the Get-EntraApplication command to list Enterprise Applications by filtering for the WindowsAzureActiveDirectoryIntegratedApp tag. However, this filter is not intuitive, and users often need to reference external documentation or scripts to apply it correctly. An example filter:

Get-EntraApplication -Filter "tags/Any(x: x eq 'WindowsAzureActiveDirectoryIntegratedApp')"

While functional, this approach lacks the simplicity and ease of use that a dedicated switch parameter would provide.

Additional context

I have written a small PowerShell script to simplify listing Enterprise Applications. However, it would be beneficial to have this feature built directly into the cmdlet. You can find the script in this Gist.

Additionally, @stevemutungi suggested reaching out here for further discussion and to potentially get this feature implemented.
I have written a little script to list them because at least for me it's a tough thing to remember the filter.

@HCRitter
Copy link
Contributor Author

I’ve successfully implemented the switch in the psm1 file on my local machine. Additionally, I ensured that any pre-existing filters are properly extended to accommodate the new switch without overriding previous settings.

Param Section

    param (
    [Parameter(ParameterSetName = "GetVague", ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
    [System.String] $SearchString,
    [Parameter(ParameterSetName = "GetQuery", ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
    [System.Nullable`1[System.Int32]] $Top,
    [Parameter(ParameterSetName = "GetById", Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
    [System.String] $ObjectId,
    [Parameter(ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
    [switch] $All,
    [Parameter(ParameterSetName = "GetQuery", ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
    [System.String] $Filter,
    [Parameter(Mandatory = $false, ValueFromPipeline = $false, ValueFromPipelineByPropertyName = $true)]
    [System.String[]] $Property,
    [switch]$EnterpriseApp
    )

** Process Section **

    if($EnterpriseApp)
    {
        if($Params.ContainsKey("Filter")){
            $Params["Filter"] = $Params["Filter"] + " and tags/Any(x: x eq 'WindowsAzureActiveDirectoryIntegratedApp')"
        }
        else{
            $Params["Filter"] = "tags/Any(x: x eq 'WindowsAzureActiveDirectoryIntegratedApp')"
        }
        $response = Get-MgServicePrincipal @params -Headers $customHeaders
    }
    else
    {
        $response = Get-MgApplication @params -Headers $customHeaders
    }

@SteveMutungi254
Copy link
Contributor

Hi, @HCRitter: We're currently reviewing your feature request. Thank you so much for your valuable contribution!

@HCRitter
Copy link
Contributor Author

@SteveMutungi254 You're very welcome! I would have loved to create a PR, but I'm unsure how to commit my changes to the repo since the parameter section seems to be generated during the build process. Instead, I applied the changes to my local module and shared the details via an issue here for your review.

@SteveMutungi254
Copy link
Contributor

@HCRitter: We apologize for the delay and appreciate your patience. We haven’t forgotten about this—we’re conducting further analysis to add more options (cmdlet switches) to additional commands for improved usability.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants