class ServiceConnection { [string] $Id = "" [string] $Name = "" [string] $OperationStatus = "" [string] $AuthorizationScheme = "" [string] $ServicePrincipalApplicationId = "" [string] $ServicePrincipalObjectId = "" [string] $ServicePrincipalName = "" [string] $ServicePrincipalEndDateTime = "" } [string] $date = Get-Date -Format "yyyy-MM-dd HHmm" $fileName = ".\$date serviceconnections.csv" Write-Host "========================================================================================================================================================================" Write-Host "Creating service connection overview." Write-Host "========================================================================================================================================================================" $token = "adlgsqh2uoedv6rf44hjd47z3ssuo5zonrqicif4ctjqlqqtlhdq" $token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)")) $organization = "effectory" $project = "Survey%20Software" $url="https://dev.azure.com/$organization/$project/_apis/serviceendpoint/endpoints?api-version=6.0-preview.4" $head = @{ Authorization =" Basic $token" } $response = Invoke-RestMethod -Uri $url -Method GET -Headers $head [ServiceConnection[]]$Result = @() $response.value | ForEach-Object { [ServiceConnection] $serviceConnection = [ServiceConnection]::new() $serviceConnection.Id = $_.id $serviceConnection.Name = $_.name $serviceConnection.OperationStatus = $_.operationStatus $serviceConnection.AuthorizationScheme = $_.authorization.scheme $principalid = $_.authorization.parameters.serviceprincipalid if ($null -ne $principalid) { $principal = Get-AzADServicePrincipal -ApplicationId $principalid $credential = Get-AzADAppCredential -ApplicationId $principalid $serviceConnection.ServicePrincipalApplicationId = $principalid $serviceConnection.ServicePrincipalObjectId = $principal.Id $serviceConnection.ServicePrincipalName = $principal.DisplayName $serviceConnection.ServicePrincipalEndDateTime = $credential.EndDateTime } $Result += $serviceConnection } $Result | Export-Csv -Path $fileName -Append -NoTypeInformation Write-Host "========================================================================================================================================================================" Write-Host "Done."