mirror of
https://github.com/Gerenios/AADInternals
synced 2026-06-08 11:09:38 +00:00
47 lines
1.5 KiB
PowerShell
47 lines
1.5 KiB
PowerShell
# This file contains utility functions for Admin operations.
|
|
|
|
# Invoke Admin API
|
|
# Dec 11th 2021
|
|
function Invoke-AdminAPI
|
|
{
|
|
[cmdletbinding()]
|
|
Param(
|
|
[Parameter(Mandatory=$False)]
|
|
[String]$AccessToken,
|
|
[Parameter(Mandatory=$False)]
|
|
$Body,
|
|
[Parameter(Mandatory=$True)]
|
|
[String]$Url,
|
|
[Parameter(Mandatory=$True)]
|
|
[ValidateSet('Get','Post','Patch','Put','Delete')]
|
|
[String]$Method,
|
|
[Parameter(Mandatory=$False)]
|
|
[Microsoft.PowerShell.Commands.WebRequestSession]$WebSession
|
|
)
|
|
Process
|
|
{
|
|
$headers=@{}
|
|
|
|
# If we got WebSession, no need for Access Token
|
|
if($WebSession -eq $null)
|
|
{
|
|
# Get from cache if not provided
|
|
$AccessToken = Get-AccessTokenFromCache -AccessToken $AccessToken -Resource "https://admin.microsoft.com" -ClientId "d3590ed6-52b3-4102-aeff-aad2292ab01c"
|
|
|
|
# Set the headers
|
|
$headers["Authorization"] = "Bearer $AccessToken"
|
|
|
|
# Create a new web session
|
|
$WebSession = New-Object Microsoft.PowerShell.Commands.WebRequestSession
|
|
}
|
|
|
|
# Set cookie maximun size the returned cookies exceeds the normal maximum size 4096
|
|
$WebSession.Cookies.MaxCookieSize=65536
|
|
|
|
# Invoke the command
|
|
$response = Invoke-RestMethod -UseBasicParsing -Method $Method -Uri "https://admin.microsoft.com/$Url" -Headers $headers -Body $body -WebSession $WebSession
|
|
|
|
$response
|
|
}
|
|
}
|