Skip to main content

Export Entra Private Access App Discovery

Overview​

The Export-EntraPrivateAccessAppDiscovery function exports App Discovery data from Microsoft Entra Private Access to a CSV file compatible with Start-EntraPrivateAccessProvisioning.

App Discovery captures network traffic flowing through the Global Secure Access client, revealing destination hosts and ports that users are actively accessing. This is especially useful for identifying traffic flowing through the Quick Access application (catch-all) that should be converted into dedicated named Enterprise applications for better governance and access control.

For each discovered segment, the function also resolves the list of users who accessed it, populating the EntraUsers column with their UPNs.

Output Structure​

GSA-backup_yyyyMMdd_HHmmss/
└── PrivateAccess/
├── yyyyMMdd_HHmmss_EPA_AppDiscovery.csv
└── yyyyMMdd_HHmmss_Export-EPA-Discovery.log

CSV Columns​

ColumnDescription
SegmentIdAuto-generated ID (SEG-D-000001)
OriginalAppNameGenerated name based on the destination host
EnterpriseAppNamePlaceholder — set this to group segments into apps
destinationHostFQDN or IP address
DestinationTypeFQDN or ipAddress
ProtocolTransport protocol (TCP, UDP)
PortsPort number
EntraGroupsEntra groups to assign (blank — fill in before provisioning)
EntraUsersPre-populated UPNs from discovery data
ConnectorGroupPlaceholder — set to your connector group name
ProvisionNo by default — set to Yes for rows to provision
isQuickAccessAlways no (segments are provisioned into Enterprise apps)
DiscoveryAccessTypeOriginal access type from the API (quickAccess or appAccess)
FirstAccessDateTimeFirst observed access
LastAccessDateTimeLast observed access
TransactionCountNumber of transactions
UserCountNumber of unique users
DeviceCountNumber of unique devices
TotalBytesSent / TotalBytesReceivedTraffic volume
DiscoveredApplicationSegmentIdAPI segment identifier

Prerequisites​

  • PowerShell 7+ with the Migrate2GSA module loaded
  • Microsoft.Graph.Authentication module
  • Active Graph connection with scopes: NetworkAccess.Read.All, NetworkAccessPolicy.Read.All
  • Global Secure Access tenant onboarded with Private Access enabled

Parameters​

-OutputPath​

Type: String | Default: Current directory

Directory where the timestamped backup folder will be created.

-DaysBack​

Type: Int | Default: 30 | Range: 1–180

Number of days back from today for the discovery window.

-AccessTypeFilter​

Type: String | Default: quickAccess | Values: quickAccess, appAccess, all

Filter discovered segments by access type.

-Top​

Type: Int | Default: 500 | Range: 1–5000

Maximum number of records to return (ordered by user count descending).

-LogPath​

Type: String | Default: Auto-generated in backup folder

Custom path for the log file.

Examples​

# Export quickAccess segments from the last 30 days (defaults)
Export-EntraPrivateAccessAppDiscovery

# Export all access types
Export-EntraPrivateAccessAppDiscovery -AccessTypeFilter all

# Last 90 days to a custom location
Export-EntraPrivateAccessAppDiscovery -DaysBack 90 -OutputPath "C:\GSA-Backups"

# Retrieve up to 2000 segments
Export-EntraPrivateAccessAppDiscovery -Top 2000 -AccessTypeFilter all

Workflow: Discovery to Provisioning​

  1. Export discovery data:
    Export-EntraPrivateAccessAppDiscovery -DaysBack 30
  2. Review the CSV and edit:
    • Set EnterpriseAppName to group segments into logical applications
    • Set ConnectorGroup to your connector group name
    • Optionally add EntraGroups for access assignment
    • Set Provision=Yes for rows to provision
  3. Provision the applications:
    Start-EntraPrivateAccessProvisioning -ProvisioningConfigPath ".\GSA-backup_...\PrivateAccess\..._EPA_AppDiscovery.csv"