So, hope someone can help me across the finish line with this. I've cobbled together a bit of code, basically something I got from a much smarter forum user for a similar purpose.
I'm trying to take all the App Registrations and their secrets/certificate expiry dates and put that information into a PSCustomObject.
This is the bit of code that does the work
# Loop through all apps and add to PSCustomObject$uri = 'https://graph.microsoft.com/beta/applications?$select=displayName, passwordCredentials, id'$result = do { $Data = Invoke-RestMethod -Method Get -Uri $uri -Headers $Headers $uri = $Data.'@odata.nextLink' foreach ($app in $Data.value) { $appUri = 'https://graph.microsoft.com/beta/applications?$select=displayName, passwordCredentials, id' $allAppSecretsExpiry = do { $cred = Invoke-RestMethod -Method Get -Uri $appUri -Headers $Headers $appUri = $cred.'@odata.nextLink' if ($cred) { $cred.value.passwordCredentials.endDateTime } } while ($appUri) [pscustomobject]@{ displayName = $app.displayName id = $app.id Credentials = $allAppSecretsExpiry } }}while ($uri)
Then, what I get is a list of all apps and their ID, but the property for expiration date, I get all expiry dates for all apps, something like this
APP1 {2025-05-15 17:55:57, 2024-08-13 08:55:07, 2026-04-15 09:06:50, 202…APP2 {2025-05-15 17:55:57, 2024-08-13 08:55:07, 2026-04-15 09:06:50, 202…APP3 {2025-05-15 17:55:57, 2024-08-13 08:55:07, 2026-04-15 09:06:50, 202…APP4 {2025-05-15 17:55:57, 2024-08-13 08:55:07, 2026-04-15 09:06:50, 202…
I'm sure I've made a mistake in the foreach loop, but I can't see where.
Hopefully some kind soul can help me out and I'll learn something along the way.