Skip to content

Commit 102fd82

Browse files
authored
Merge pull request KelvinTegelaar#1342 from KelvinTegelaar/dev
Dev to hotfix
2 parents d019386 + 1c9bc22 commit 102fd82

36 files changed

+256
-160
lines changed

Modules/CIPPCore/Public/Authentication/Test-CIPPAccess.ps1

+6-3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ function Test-CIPPAccess {
1212
# Check help for role
1313
$APIRole = $Help.Role
1414

15+
$AnyTenantAllowedFunctions = @('ListTenants', 'ListUserSettings', 'ListUserPhoto', 'GetCippAlerts', 'GetVersion')
16+
1517
if ($Request.Headers.'x-ms-client-principal-idp' -eq 'aad' -and $Request.Headers.'x-ms-client-principal-name' -match '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$') {
1618
# Direct API Access
1719
$ForwardedFor = $Request.Headers.'x-forwarded-for' -split ',' | Select-Object -First 1
@@ -106,13 +108,14 @@ function Test-CIPPAccess {
106108
}
107109

108110
if ($APIAllowed) {
111+
$TenantFilter = $Request.Query.tenantFilter ?? $Request.Body.tenantFilter ?? $env:TenantID
109112
# Check tenant level access
110113
if (($Role.BlockedTenants | Measure-Object).Count -eq 0 -and $Role.AllowedTenants -contains 'AllTenants') {
111114
$TenantAllowed = $true
112-
} elseif ($Request.Query.TenantFilter -eq 'AllTenants' -or $Request.Body.TenantFilter -eq 'AllTenants') {
115+
} elseif ($TenantFilter -eq 'AllTenants') {
113116
$TenantAllowed = $false
114117
} else {
115-
$Tenant = ($Tenants | Where-Object { $Request.Query.TenantFilter -eq $_.customerId -or $Request.Body.TenantFilter -eq $_.customerId -or $Request.Query.TenantFilter -eq $_.defaultDomainName -or $Request.Body.TenantFilter -eq $_.defaultDomainName }).customerId
118+
$Tenant = ($Tenants | Where-Object { $TenantFilter -eq $_.customerId -or $TenantFilter -eq $_.defaultDomainName }).customerId
116119
if ($Role.AllowedTenants -contains 'AllTenants') {
117120
$AllowedTenants = $Tenants.customerId
118121
} else {
@@ -132,7 +135,7 @@ function Test-CIPPAccess {
132135
if (!$APIAllowed) {
133136
throw "Access to this CIPP API endpoint is not allowed, the '$($Role.Role)' custom role does not have the required permission: $APIRole"
134137
}
135-
if (!$TenantAllowed) {
138+
if (!$TenantAllowed -and $AnyTenantAllowedFunctions -notcontains $Request.Params.CIPPEndpoint) {
136139
throw 'Access to this tenant is not allowed'
137140
} else {
138141
return $true

Modules/CIPPCore/Public/Entrypoints/Activity Triggers/Graph Requests/Push-ListGraphRequestQueue.ps1

+3-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ function Push-ListGraphRequestQueue {
3939
}
4040

4141
$RawGraphRequest = try {
42-
Get-GraphRequestList @GraphRequestParams
42+
$Results = Get-GraphRequestList @GraphRequestParams
43+
$Results | Select-Object -First ($Results.Count - 1)
4344
} catch {
4445
$CippException = Get-CippException -Exception $_.Exception
4546
[PSCustomObject]@{
@@ -57,6 +58,7 @@ function Push-ListGraphRequestQueue {
5758
Data = [string]$Json
5859
}
5960
Add-CIPPAzDataTableEntity @Table -Entity $GraphResults -Force | Out-Null
61+
return $true
6062
} catch {
6163
Write-Warning "Queue Error: $($_.Exception.Message)"
6264
#Write-Information ($GraphResults | ConvertTo-Json -Depth 10 -Compress)

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/CIPP/Core/Invoke-ExecSetCIPPAutoBackup.ps1

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Function Invoke-ExecSetCIPPAutoBackup {
1515
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'
1616

1717
$unixtime = [int64](([datetime]::UtcNow) - (Get-Date '1/1/1970')).TotalSeconds
18-
if ($Request.Body.Enabled -eq 'True') {
18+
if ($Request.Body.Enabled -eq $true) {
1919
$Table = Get-CIPPTable -TableName 'ScheduledTasks'
2020
$AutomatedCIPPBackupTask = Get-AzDataTableEntity @table -Filter "Name eq 'Automated CIPP Backup'"
2121
$task = @{

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/CIPP/Core/Invoke-ListGraphBulkRequest.ps1

+2
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@ function Invoke-ListGraphBulkRequest {
1515
$TenantFilter = $Request.Body.tenantFilter
1616
$AsApp = $Request.Body.asApp
1717
$Requests = $Request.Body.requests
18+
$NoPaginateIds = $Request.Body.noPaginateIds
1819

1920
$GraphRequestParams = @{
2021
tenantid = $TenantFilter
2122
Requests = @()
23+
NoPaginateIds = $NoPaginateIds ?? @()
2224
}
2325

2426
if ($AsApp) {

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/CIPP/Scheduler/Invoke-ListScheduledItems.ps1

+4-2
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ Function Invoke-ListScheduledItems {
4444
}
4545
$Tasks = Get-CIPPAzDataTableEntity @Table -Filter $Filter | Where-Object { $_.Hidden -ne $HiddenTasks }
4646
if ($Type) {
47-
$Tasks.Command
4847
$Tasks = $Tasks | Where-Object { $_.command -eq $Type }
4948
}
5049

@@ -61,13 +60,16 @@ Function Invoke-ListScheduledItems {
6160
} else {
6261
$Task | Add-Member -NotePropertyName Parameters -NotePropertyValue @{}
6362
}
63+
if ($Task.Recurrence -eq 0 -or [string]::IsNullOrEmpty($Task.Recurrence)) {
64+
$Task.Recurrence = 'Once'
65+
}
6466
$Task
6567
}
6668

6769
# Associate values to output bindings by calling 'Push-OutputBinding'.
6870
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
6971
StatusCode = [HttpStatusCode]::OK
70-
Body = @($ScheduledTasks)
72+
Body = @($ScheduledTasks | Sort-Object -Property ExecutedTime -Descending)
7173
})
7274

7375
}

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/Email-Exchange/Administration/Invoke-ExecHideFromGAL.ps1

+4-6
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ Function Invoke-ExecHideFromGAL {
1010
[CmdletBinding()]
1111
param($Request, $TriggerMetadata)
1212

13-
$Headers = $Request.Headers
1413
$APIName = $Request.Params.CIPPEndpoint
14+
$Headers = $Request.Headers
1515
Write-LogMessage -Headers $Headers -API $APINAME -message 'Accessed this API' -Sev 'Debug'
1616

1717

@@ -22,19 +22,17 @@ Function Invoke-ExecHideFromGAL {
2222
$HideFromGAL = [System.Convert]::ToBoolean($HideFromGAL)
2323

2424
Try {
25-
$HideResults = Set-CIPPHideFromGAL -tenantFilter $TenantFilter -UserID $UserId -hidefromgal $Hidden -Headers $Request.Headers -APIName $APIName
26-
$Results = [pscustomobject]@{'Results' = $HideResults }
25+
$Result = Set-CIPPHideFromGAL -tenantFilter $TenantFilter -UserID $UserId -hidefromgal $HideFromGAL -Headers $Headers -APIName $APIName
2726
$StatusCode = [HttpStatusCode]::OK
2827

2928
} catch {
30-
$ErrorMessage = Get-CippException -Exception $_
31-
$Results = [pscustomobject]@{'Results' = "Failed. $($ErrorMessage.NormalizedError)" }
29+
$Result = $_.Exception.Message
3230
$StatusCode = [HttpStatusCode]::Forbidden
3331
}
3432
# Associate values to output bindings by calling 'Push-OutputBinding'.
3533
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
3634
StatusCode = $StatusCode
37-
Body = $Results
35+
Body = @{ 'Results' = $Result }
3836
})
3937

4038
}

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/Email-Exchange/Administration/Invoke-ExecStartManagedFolderAssistant.ps1

-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ Function Invoke-ExecStartManagedFolderAssistant {
2424

2525
$ExoParams = @{
2626
Identity = $Identity
27-
AggMailboxCleanup = $true
2827
FullCrawl = $true
2928
}
3029

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/Email-Exchange/Administration/Invoke-ListMailboxes.ps1

+4-2
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,11 @@ Function Invoke-ListMailboxes {
1111
param($Request, $TriggerMetadata)
1212

1313
$APIName = $Request.Params.CIPPEndpoint
14-
Write-LogMessage -headers $Request.Headers -API $APINAME -message 'Accessed this API' -Sev 'Debug'
14+
$Headers = $Request.Headers
15+
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'
1516

1617
# Interact with query parameters or the body of the request.
17-
$TenantFilter = $Request.Query.TenantFilter
18+
$TenantFilter = $Request.Query.tenantFilter
1819
try {
1920
$Select = 'id,ExchangeGuid,ArchiveGuid,UserPrincipalName,DisplayName,PrimarySMTPAddress,RecipientType,RecipientTypeDetails,EmailAddresses,WhenSoftDeleted,IsInactiveMailbox,ForwardingSmtpAddress,DeliverToMailboxAndForward,ForwardingAddress,HiddenFromAddressListsEnabled,ExternalDirectoryObjectId,MessageCopyForSendOnBehalfEnabled,MessageCopyForSentAsEnabled'
2021
$ExoRequest = @{
@@ -32,6 +33,7 @@ Function Invoke-ListMailboxes {
3233
@{Parameter = 'PublicFolder'; Type = 'Bool' }
3334
@{Parameter = 'RecipientTypeDetails'; Type = 'String' }
3435
@{Parameter = 'SoftDeletedMailbox'; Type = 'Bool' }
36+
@{Parameter = 'Identity'; Type = 'String' }
3537
)
3638

3739
foreach ($Param in $Request.Query.PSObject.Properties.Name) {

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/Endpoint/MEM/Invoke-ListIntunePolicy.ps1

+15
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,16 @@ Function Invoke-ListIntunePolicy {
4343
method = 'GET'
4444
url = "/deviceManagement/windowsFeatureUpdateProfiles?`$expand=assignments&top=200"
4545
}
46+
@{
47+
id = 'windowsQualityUpdatePolicies'
48+
method = 'GET'
49+
url = "/deviceManagement/windowsQualityUpdatePolicies?`$expand=assignments&top=200"
50+
}
51+
@{
52+
id = 'windowsQualityUpdateProfiles'
53+
method = 'GET'
54+
url = "/deviceManagement/windowsQualityUpdateProfiles?`$expand=assignments&top=200"
55+
}
4656
@{
4757
id = 'GroupPolicyConfigurations'
4858
method = 'GET'
@@ -78,6 +88,11 @@ Function Invoke-ListIntunePolicy {
7888
'*microsoft.graph.macOSEndpointProtectionConfiguration*' { 'MacOS Endpoint Protection' }
7989
'*microsoft.graph.androidWorkProfileGeneralDeviceConfiguration*' { 'Android Configuration' }
8090
'*windowsFeatureUpdateProfiles*' { 'Feature Update' }
91+
'*windowsQualityUpdatePolicies*' { 'Quality Update' }
92+
'*windowsQualityUpdateProfiles*' { 'Quality Update' }
93+
'*iosUpdateConfiguration*' { 'iOS Update Configuration' }
94+
'*windowsDriverUpdateProfiles*' { 'Driver Update' }
95+
'*configurationPolicies*' { 'Device Configuration' }
8196
default { $_.'[email protected]' }
8297
}
8398
$Assignments = $_.assignments.target | Select-Object -Property '@odata.type', groupId
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,47 @@
1-
function Invoke-ExecDismissRiskyUser {
2-
<#
3-
.FUNCTIONALITY
4-
Entrypoint
5-
.ROLE
6-
Identity.User.ReadWrite
7-
#>
8-
[CmdletBinding()]
9-
param($Request, $TriggerMetadata)
10-
11-
$APIName = $Request.Params.CIPPEndpoint
12-
$Headers = $Request.Headers
13-
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'
14-
15-
# Interact with the query or body of the request
16-
$TenantFilter = $Request.Query.tenantFilter ?? $Request.Body.tenantFilter
17-
$SuspectUser = $Request.Query.userId ?? $Request.Body.userId
18-
$userDisplayName = $Request.Query.userDisplayName ?? $Request.Body.userDisplayName
19-
20-
$GraphRequest = @{
21-
'uri' = 'https://graph.microsoft.com/beta/riskyUsers/dismiss'
22-
'tenantid' = $TenantFilter
23-
'type' = 'POST'
24-
'contentType' = 'application/json; charset=utf-8'
25-
'body' = @{
26-
'userIds' = @($SuspectUser)
27-
} | ConvertTo-Json
28-
}
29-
30-
try {
31-
$GraphResults = New-GraphPostRequest @GraphRequest
32-
Write-LogMessage -API $APIName -tenant $TenantFilter -message "Dismissed user risk for $userDisplayName" -sev 'Info'
33-
$Result = "Successfully dismissed User Risk for user $userDisplayName. $GraphResults"
34-
$StatusCode = [HttpStatusCode]::OK
35-
} catch {
36-
$ErrorMessage = Get-CippException -Exception $_
37-
$Result = "Failed to dismiss user risk for $userDisplayName. $($ErrorMessage.NormalizedError)"
38-
Write-LogMessage -API $APIName -tenant $TenantFilter -message $Result -sev 'Error' -LogData $ErrorMessage
39-
$StatusCode = [HttpStatusCode]::InternalServerError
40-
}
41-
42-
# Associate values to output bindings by calling 'Push-OutputBinding'.
43-
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
44-
StatusCode = $StatusCode
45-
Body = @{ 'Results' = $Result }
46-
})
47-
}
1+
function Invoke-ExecDismissRiskyUser {
2+
<#
3+
.FUNCTIONALITY
4+
Entrypoint
5+
.ROLE
6+
Identity.User.ReadWrite
7+
#>
8+
[CmdletBinding()]
9+
param($Request, $TriggerMetadata)
10+
11+
$APIName = $Request.Params.CIPPEndpoint
12+
$Headers = $Request.Headers
13+
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'
14+
15+
# Interact with the query or body of the request
16+
$TenantFilter = $Request.Query.tenantFilter ?? $Request.Body.tenantFilter
17+
$SuspectUser = $Request.Query.userId ?? $Request.Body.userId
18+
$userDisplayName = $Request.Query.userDisplayName ?? $Request.Body.userDisplayName
19+
20+
$GraphRequest = @{
21+
'uri' = 'https://graph.microsoft.com/beta/riskyUsers/dismiss'
22+
'tenantid' = $TenantFilter
23+
'type' = 'POST'
24+
'contentType' = 'application/json; charset=utf-8'
25+
'body' = @{
26+
'userIds' = @($SuspectUser)
27+
} | ConvertTo-Json
28+
}
29+
30+
try {
31+
$GraphResults = New-GraphPostRequest @GraphRequest
32+
Write-LogMessage -API $APIName -tenant $TenantFilter -message "Dismissed user risk for $userDisplayName" -sev 'Info'
33+
$Result = "Successfully dismissed User Risk for user $userDisplayName. $GraphResults"
34+
$StatusCode = [HttpStatusCode]::OK
35+
} catch {
36+
$ErrorMessage = Get-CippException -Exception $_
37+
$Result = "Failed to dismiss user risk for $userDisplayName. $($ErrorMessage.NormalizedError)"
38+
Write-LogMessage -API $APIName -tenant $TenantFilter -message $Result -sev 'Error' -LogData $ErrorMessage
39+
$StatusCode = [HttpStatusCode]::InternalServerError
40+
}
41+
42+
# Associate values to output bindings by calling 'Push-OutputBinding'.
43+
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
44+
StatusCode = $StatusCode
45+
Body = @{ 'Results' = $Result }
46+
})
47+
}

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/Identity/Administration/Users/Invoke-ListUserMailboxDetails.ps1

+14-1
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,20 @@ Function Invoke-ListUserMailboxDetails {
183183
AutoExpandingArchive = $AutoExpandingArchiveEnabled
184184
RecipientTypeDetails = $MailboxDetailedRequest.RecipientTypeDetails
185185
Mailbox = $MailboxDetailedRequest
186-
}
186+
MailboxActionsData = ($MailboxDetailedRequest | Select-Object id, ExchangeGuid, ArchiveGuid, WhenSoftDeleted, @{ Name = 'UPN'; Expression = { $_.'UserPrincipalName' } },
187+
@{ Name = 'displayName'; Expression = { $_.'DisplayName' } },
188+
@{ Name = 'primarySmtpAddress'; Expression = { $_.'PrimarySMTPAddress' } },
189+
@{ Name = 'recipientType'; Expression = { $_.'RecipientType' } },
190+
@{ Name = 'recipientTypeDetails'; Expression = { $_.'RecipientTypeDetails' } },
191+
@{ Name = 'AdditionalEmailAddresses'; Expression = { ($_.'EmailAddresses' | Where-Object { $_ -clike 'smtp:*' }).Replace('smtp:', '') -join ', ' } },
192+
@{Name = 'ForwardingSmtpAddress'; Expression = { $_.'ForwardingSmtpAddress' -replace 'smtp:', '' } },
193+
@{Name = 'InternalForwardingAddress'; Expression = { $_.'ForwardingAddress' } },
194+
DeliverToMailboxAndForward,
195+
HiddenFromAddressListsEnabled,
196+
ExternalDirectoryObjectId,
197+
MessageCopyForSendOnBehalfEnabled,
198+
MessageCopyForSentAsEnabled)
199+
} # Select statement taken from ListMailboxes to save a EXO request
187200

188201
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
189202
StatusCode = [HttpStatusCode]::OK

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/Tenant/Standards/Invoke-ListBPATemplates.ps1

+7-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,9 @@ Function Invoke-ListBPATemplates {
1818
$Table = Get-CippTable -tablename 'templates'
1919

2020
$Templates = Get-ChildItem 'Config\*.BPATemplate.json' | ForEach-Object {
21+
$TemplateJson = Get-Content $_ | ConvertFrom-Json | ConvertTo-Json -Compress -Depth 10
2122
$Entity = @{
22-
JSON = "$(Get-Content $_)"
23+
JSON = "$TemplateJson"
2324
RowKey = "$($_.name)"
2425
PartitionKey = 'BPATemplate'
2526
GUID = "$($_.name)"
@@ -31,10 +32,14 @@ Function Invoke-ListBPATemplates {
3132
$Templates = Get-CIPPAzDataTableEntity @Table -Filter $Filter
3233

3334
if ($Request.Query.RawJson) {
35+
foreach ($Template in $Templates) {
36+
$Template.JSON = $Template.JSON -replace '"parameters":', '"Parameters":'
37+
}
3438
$Templates = $Templates.JSON | ConvertFrom-Json
3539
} else {
3640
$Templates = $Templates | ForEach-Object {
37-
$Template = $_.JSON | ConvertFrom-Json
41+
$TemplateJson = $_.JSON -replace '"parameters":', '"Parameters":'
42+
$Template = $TemplateJson | ConvertFrom-Json
3843
@{
3944
GUID = $_.GUID
4045
Data = $Template.fields

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/Tenant/Tools/Invoke-AddBPATemplate.ps1

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ Function Invoke-AddBPATemplate {
1818
$Table = Get-CippTable -tablename 'templates'
1919
$Table.Force = $true
2020
Add-CIPPAzDataTableEntity @Table -Entity @{
21-
JSON = "$($Request.body | ConvertTo-Json -Depth 10)"
21+
JSON = "$($Request.body | ConvertTo-Json -Depth 10 -Compress)"
2222
RowKey = $Request.body.name
2323
PartitionKey = 'BPATemplate'
2424
GUID = $Request.body.name

Modules/CIPPCore/Public/Entrypoints/Invoke-ListCSPsku.ps1

+11-5
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,19 @@ Function Invoke-ListCSPsku {
1414
Write-LogMessage -headers $Request.Headers -API $APINAME -message 'Accessed this API' -Sev 'Debug'
1515
$TenantFilter = $Request.Query.tenantFilter
1616

17-
if ($Request.Query.currentSkuOnly) {
18-
$GraphRequest = Get-SherwebCurrentSubscription -TenantFilter $TenantFilter
19-
} else {
20-
$GraphRequest = Get-SherwebCatalog -TenantFilter $TenantFilter
17+
try {
18+
if ($Request.Query.currentSkuOnly) {
19+
$GraphRequest = Get-SherwebCurrentSubscription -TenantFilter $TenantFilter
20+
} else {
21+
$GraphRequest = Get-SherwebCatalog -TenantFilter $TenantFilter
22+
}
23+
} catch {
24+
$GraphRequest = [PSCustomObject]@{
25+
name = @(@{value = 'Error getting catalog' })
26+
sku = $_.Exception.Message
27+
}
2128
}
2229

23-
2430
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
2531
StatusCode = [HttpStatusCode]::OK
2632
Body = @($GraphRequest)

Modules/CIPPCore/Public/Get-CIPPLAPSPassword.ps1

+5-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ function Get-CIPPLapsPassword {
1212
$GraphRequest = (New-GraphGetRequest -noauthcheck $true -uri "https://graph.microsoft.com/beta/directory/deviceLocalCredentials/$($device)?`$select=credentials" -tenantid $TenantFilter).credentials | Select-Object -First 1 | ForEach-Object {
1313
$PlainText = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($_.passwordBase64))
1414
$date = $_.BackupDateTime
15-
"The password for $($_.AccountName) is $($PlainText) generated at $($date)"
15+
[PSCustomObject]@{
16+
resultText = "LAPS password retrieved, generated at $($date). Copy the password by clicking the copy button"
17+
copyField = $PlainText
18+
state = 'success'
19+
}
1620
}
1721
if ($GraphRequest) { return $GraphRequest } else { return "No LAPS password found for $device" }
1822
} catch {

Modules/CIPPCore/Public/GraphHelper/New-ExoRequest.ps1

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ function New-ExoRequest {
3131
[Parameter(ParameterSetName = 'AvailableCmdlets')]
3232
[switch]$AvailableCmdlets,
3333

34-
$ModuleVersion = '3.5.1',
34+
$ModuleVersion = '3.7.1',
3535
[switch]$AsApp
3636
)
3737
if ((Get-AuthorisedRequest -TenantID $tenantid) -or $NoAuthCheck -eq $True) {

0 commit comments

Comments
 (0)