Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pull] master from KelvinTegelaar:master #4

Merged
merged 14 commits into from
Feb 13, 2025
30 changes: 30 additions & 0 deletions .github/workflows/dev_cippjta72-proc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Docs for the Azure Web Apps Deploy action: https://github.com/azure/functions-action
# More GitHub Actions for Azure: https://github.com/Azure/actions

name: Build and deploy Powershell project to Azure Function App - cippjta72-proc

on:
push:
branches:
- dev
workflow_dispatch:

env:
AZURE_FUNCTIONAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root

jobs:
deploy:
runs-on: windows-latest

steps:
- name: 'Checkout GitHub Action'
uses: actions/checkout@v4

- name: 'Run Azure Functions Action'
uses: Azure/functions-action@v1
id: fa
with:
app-name: 'cippjta72-proc'
slot-name: 'Production'
package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_A53AC5C52A55459DA0A3D8F1716638CB }}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Function Invoke-ExecEditTemplate {
$OriginalTemplate = Get-CIPPAzDataTableEntity @Table -Filter "PartitionKey eq 'IntuneTemplate' and RowKey eq '$GUID'"
$OriginalTemplate = ($OriginalTemplate.JSON | ConvertFrom-Json -Depth 100)
$RawJSON = $OriginalTemplate.RAWJson
Set-CIPPIntuneTemplate -RawJSON $RawJSON -GUID $GUID -DisplayName $Request.body.displayName -Description $Request.body.description -templateType $OriginalTemplate.Type
Set-CIPPIntuneTemplate -RawJSON $RawJSON -GUID $GUID -DisplayName $Request.body.displayName -Description $Request.body.description -templateType $OriginalTemplate.Type -Headers $Request.Headers
} else {
$Table.Force = $true

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Function Invoke-ExecAssignPolicy {

$results = try {
if ($AssignTo) {
$assign = Set-CIPPAssignedPolicy -PolicyId $ID -TenantFilter $tenant -GroupName $AssignTo -Type $Request.body.Type
$assign = Set-CIPPAssignedPolicy -PolicyId $ID -TenantFilter $tenant -GroupName $AssignTo -Type $Request.body.Type -Headers $Request.Headers
Write-LogMessage -headers $Request.Headers -API $APINAME -tenant $($Tenant) -message "Assigned policy $($Displayname) to $AssignTo" -Sev 'Info'
}
"Successfully edited policy for $($Tenant)"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ Function Invoke-ListBPATemplates {
$Templates = Get-CIPPAzDataTableEntity @Table -Filter $Filter

if ($Request.Query.RawJson) {
$Templates
$Templates = $Templates.JSON | ConvertFrom-Json
} else {
$Templates = $Templates | ForEach-Object {
$Template = $_.JSON | ConvertFrom-Json
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ function Invoke-ExecGitHubAction {
$Configuration = ((Get-CIPPAzDataTableEntity @Table).config | ConvertFrom-Json).GitHub

if (!$Configuration.Enabled) {
$Response = Invoke-RestMethod -Uri 'https://cippy.azurewebsites.net/api/ExecGitHubAction' -Method POST -Body ($Action | ConvertTo-Json -Depth 10) -ContentType 'application/json'
$Response = Invoke-RestMethod -Uri 'https://cippy.azurewebsites.net/api/ExecGitHubAction' -Method POST -Body ($Parameters | ConvertTo-Json -Depth 10) -ContentType 'application/json'
$Results = $Response.Results
$Metadata = $Response.Metadata
} else {
Expand Down
2 changes: 1 addition & 1 deletion Modules/CIPPCore/Public/New-CIPPRestore.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ function New-CIPPRestore {
Write-Host "Scheduled Restore psproperties: $(([pscustomobject]$RestoreValues).psobject.Properties)"
Write-LogMessage -headers $Headers -API $APINAME -message 'Restored backup' -Sev 'Debug'
$RestoreData = foreach ($ScheduledBackup in ([pscustomobject]$RestoreValues).psobject.Properties.Name | Where-Object { $_ -notin 'email', 'webhook', 'psa', 'backup', 'overwrite' }) {
New-CIPPRestoreTask -Task $ScheduledBackup -TenantFilter $TenantFilter -backup $RestoreValues.backup.value -overwrite $RestoreValues.overwrite
New-CIPPRestoreTask -Task $ScheduledBackup -TenantFilter $TenantFilter -backup $RestoreValues.backup.value -overwrite $RestoreValues.overwrite -Headers $Headers -APIName $APIName
}
return $RestoreData
}
Expand Down
18 changes: 10 additions & 8 deletions Modules/CIPPCore/Public/New-CIPPRestoreTask.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ function New-CIPPRestoreTask {
$Task,
$TenantFilter,
$backup,
$overwrite
$overwrite,
$APINAME,
$Headers
)
$Table = Get-CippTable -tablename 'ScheduledBackup'
$BackupData = Get-CIPPAzDataTableEntity @Table -Filter "RowKey eq '$backup'"
Expand Down Expand Up @@ -99,7 +101,7 @@ function New-CIPPRestoreTask {
$BackupConfig = $BackupData.intuneconfig | ConvertFrom-Json
foreach ($backup in $backupConfig) {
try {
Set-CIPPIntunePolicy -TemplateType $backup.Type -TenantFilter $TenantFilter -DisplayName $backup.DisplayName -Description $backup.Description -RawJSON ($backup.TemplateJson) -ErrorAction SilentlyContinue
Set-CIPPIntunePolicy -TemplateType $backup.Type -TenantFilter $TenantFilter -DisplayName $backup.DisplayName -Description $backup.Description -RawJSON ($backup.TemplateJson) -Headers $Headers -APINAME $APINAME -ErrorAction SilentlyContinue
} catch {
$ErrorMessage = Get-CippException -Exception $_
"Could not restore Intune Configuration $DisplayName : $($ErrorMessage.NormalizedError) "
Expand All @@ -112,7 +114,7 @@ function New-CIPPRestoreTask {
$BackupConfig = $BackupData.intunecompliance | ConvertFrom-Json
foreach ($backup in $backupConfig) {
try {
Set-CIPPIntunePolicy -TemplateType $backup.Type -TenantFilter $TenantFilter -DisplayName $backup.DisplayName -Description $backup.Description -RawJSON ($backup.TemplateJson) -ErrorAction SilentlyContinue
Set-CIPPIntunePolicy -TemplateType $backup.Type -TenantFilter $TenantFilter -DisplayName $backup.DisplayName -Description $backup.Description -RawJSON ($backup.TemplateJson) -Headers $Headers -APINAME $APINAME -ErrorAction SilentlyContinue
} catch {
$ErrorMessage = Get-CippException -Exception $_
"Could not restore Intune Compliance $DisplayName : $($ErrorMessage.NormalizedError) "
Expand All @@ -126,7 +128,7 @@ function New-CIPPRestoreTask {
$BackupConfig = $BackupData.intuneprotection | ConvertFrom-Json
foreach ($backup in $backupConfig) {
try {
Set-CIPPIntunePolicy -TemplateType $backup.Type -TenantFilter $TenantFilter -DisplayName $backup.DisplayName -Description $backup.Description -RawJSON ($backup.TemplateJson) -ErrorAction SilentlyContinue
Set-CIPPIntunePolicy -TemplateType $backup.Type -TenantFilter $TenantFilter -DisplayName $backup.DisplayName -Description $backup.Description -RawJSON ($backup.TemplateJson) -Headers $Headers -APINAME $APINAME -ErrorAction SilentlyContinue
} catch {
$ErrorMessage = Get-CippException -Exception $_
"Could not restore Intune Protection $DisplayName : $($ErrorMessage.NormalizedError) "
Expand Down Expand Up @@ -281,7 +283,7 @@ function New-CIPPRestoreTask {
foreach ($param in $ruleparams) {
if ($rule.PSObject.Properties[$param]) {
if ($param -eq 'Enabled') {
$cmdparams[$param] = if ($rule.State -eq 'Enabled') {$true} else {$false}
$cmdparams[$param] = if ($rule.State -eq 'Enabled') { $true } else { $false }
} else {
$cmdparams[$param] = $rule.$param
}
Expand All @@ -301,7 +303,7 @@ function New-CIPPRestoreTask {
foreach ($param in $ruleparams) {
if ($rule.PSObject.Properties[$param]) {
if ($param -eq 'Enabled') {
$cmdparams[$param] = if ($rule.State -eq 'Enabled') {$true} else {$false}
$cmdparams[$param] = if ($rule.State -eq 'Enabled') { $true } else { $false }
} else {
$cmdparams[$param] = $rule.$param
}
Expand Down Expand Up @@ -438,7 +440,7 @@ function New-CIPPRestoreTask {
foreach ($param in $ruleparams) {
if ($rule.PSObject.Properties[$param]) {
if ($param -eq 'Enabled') {
$cmdparams[$param] = if ($rule.State -eq 'Enabled') {$true} else {$false}
$cmdparams[$param] = if ($rule.State -eq 'Enabled') { $true } else { $false }
} else {
$cmdparams[$param] = $rule.$param
}
Expand All @@ -458,7 +460,7 @@ function New-CIPPRestoreTask {
foreach ($param in $ruleparams) {
if ($rule.PSObject.Properties[$param]) {
if ($param -eq 'Enabled') {
$cmdparams[$param] = if ($rule.State -eq 'Enabled') {$true} else {$false}
$cmdparams[$param] = if ($rule.State -eq 'Enabled') { $true } else { $false }
} else {
$cmdparams[$param] = $rule.$param
}
Expand Down
20 changes: 10 additions & 10 deletions Modules/CIPPCore/Public/Set-CIPPIntunePolicy.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@ function Set-CIPPIntunePolicy {
$RawJSON,
$AssignTo,
$Headers,
$APINAME,
$tenantFilter
)
$ReturnValue = try {
try {
switch ($TemplateType) {
'AppProtection' {
$TemplateType = ($RawJSON | ConvertFrom-Json).'@odata.type' -replace '#microsoft.graph.', ''
Expand Down Expand Up @@ -39,13 +40,13 @@ function Set-CIPPIntunePolicy {
$PostType = 'edited'
$ExistingID = $CheckExististing | Where-Object -Property displayName -EQ $displayname
$CreateRequest = New-GraphPOSTRequest -uri "https://graph.microsoft.com/beta/deviceManagement/$TemplateTypeURL/$($ExistingID.Id)" -tenantid $tenantFilter -type PATCH -body $RawJSON
Write-LogMessage -headers $Request.Headers -API $APINAME -tenant $($tenantFilter) -message "Updated policy $($DisplayName) to template defaults" -Sev 'info'
Write-LogMessage -headers $Headers -API $APINAME -tenant $($tenantFilter) -message "Updated policy $($DisplayName) to template defaults" -Sev 'info'
$CreateRequest = $CheckExististing | Where-Object -Property displayName -EQ $DisplayName
} else {
$RawJSON = ConvertTo-Json -InputObject $JSON -Depth 20 -Compress
$PostType = 'added'
$CreateRequest = New-GraphPOSTRequest -uri "https://graph.microsoft.com/beta/deviceManagement/$TemplateTypeURL" -tenantid $tenantFilter -type POST -body $RawJSON
Write-LogMessage -headers $Request.Headers -API $APINAME -tenant $($tenantFilter) -message "Added policy $($DisplayName) via template" -Sev 'info'
Write-LogMessage -headers $Headers -API $APINAME -tenant $($tenantFilter) -message "Added policy $($DisplayName) via template" -Sev 'info'
}
}
'Admin' {
Expand All @@ -62,13 +63,13 @@ function Set-CIPPIntunePolicy {
$DeleteRequest = New-GraphPOSTRequest -uri "https://graph.microsoft.com/beta/deviceManagement/$TemplateTypeURL('$($ExistingID.id)')/updateDefinitionValues" -tenantid $tenantFilter -type POST -body $DeleteJson
$CreateRequest = New-GraphPOSTRequest -uri "https://graph.microsoft.com/beta/deviceManagement/$TemplateTypeURL('$($ExistingID.id)')/updateDefinitionValues" -tenantid $tenantFilter -type POST -body $RawJSON
$CreateRequest = $CheckExististing | Where-Object -Property displayName -EQ $DisplayName
Write-LogMessage -headers $Request.Headers -API $APINAME -tenant $($tenantFilter) -message "Updated policy $($Displayname) to template defaults" -Sev 'info'
Write-LogMessage -headers $Headers -API $APINAME -tenant $($tenantFilter) -message "Updated policy $($Displayname) to template defaults" -Sev 'info'
$PostType = 'edited'
} else {
$PostType = 'added'
$CreateRequest = New-GraphPOSTRequest -uri "https://graph.microsoft.com/beta/deviceManagement/$TemplateTypeURL" -tenantid $tenantFilter -type POST -body $CreateBody
$UpdateRequest = New-GraphPOSTRequest -uri "https://graph.microsoft.com/beta/deviceManagement/$TemplateTypeURL('$($CreateRequest.id)')/updateDefinitionValues" -tenantid $tenantFilter -type POST -body $RawJSON
Write-LogMessage -headers $Request.Headers -API $APINAME -tenant $($tenantFilter) -message "Added policy $($Displayname) to template defaults" -Sev 'info'
Write-LogMessage -headers $Headers -API $APINAME -tenant $($tenantFilter) -message "Added policy $($Displayname) to template defaults" -Sev 'info'

}
}
Expand All @@ -86,11 +87,11 @@ function Set-CIPPIntunePolicy {
Write-Host "Raw JSON is $RawJSON"
$CreateRequest = New-GraphPOSTRequest -uri "https://graph.microsoft.com/beta/deviceManagement/$TemplateTypeURL/$($ExistingID.Id)" -tenantid $tenantFilter -type PATCH -body $RawJSON
$CreateRequest = $CheckExististing | Where-Object -Property displayName -EQ $DisplayName
Write-LogMessage -headers $Request.Headers -API $APINAME -tenant $($tenantFilter) -message "Updated policy $($DisplayName) to template defaults" -Sev 'info'
Write-LogMessage -headers $Headers -API $APINAME -tenant $($tenantFilter) -message "Updated policy $($DisplayName) to template defaults" -Sev 'info'
} else {
$PostType = 'added'
$CreateRequest = New-GraphPOSTRequest -uri "https://graph.microsoft.com/beta/deviceManagement/$TemplateTypeURL" -tenantid $tenantFilter -type POST -body $RawJSON
Write-LogMessage -headers $Request.Headers -API $APINAME -tenant $($tenantFilter) -message "Added policy $($DisplayName) via template" -Sev 'info'
Write-LogMessage -headers $Headers -API $APINAME -tenant $($tenantFilter) -message "Added policy $($DisplayName) via template" -Sev 'info'

}
}
Expand All @@ -106,7 +107,7 @@ function Set-CIPPIntunePolicy {
} else {
$PostType = 'added'
$CreateRequest = New-GraphPOSTRequest -uri "https://graph.microsoft.com/beta/deviceManagement/$TemplateTypeURL" -tenantid $tenantFilter -type POST -body $RawJSON
Write-LogMessage -headers $Request.Headers -API $APINAME -tenant $($tenantFilter) -message "Added policy $($DisplayName) via template" -Sev 'info'
Write-LogMessage -headers $Headers -API $APINAME -tenant $($tenantFilter) -message "Added policy $($DisplayName) via template" -Sev 'info'
}
}
'windowsDriverUpdateProfiles' {
Expand All @@ -124,7 +125,7 @@ function Set-CIPPIntunePolicy {
} else {
$PostType = 'added'
$CreateRequest = New-GraphPOSTRequest -uri "https://graph.microsoft.com/beta/deviceManagement/$TemplateTypeURL" -tenantid $tenantFilter -type POST -body $RawJSON
Write-LogMessage -headers $Request.Headers -API $APINAME -tenant $($tenantFilter) -message "Added policy $($DisplayName) via template" -Sev 'info'
Write-LogMessage -headers $Headers -API $APINAME -tenant $($tenantFilter) -message "Added policy $($DisplayName) via template" -Sev 'info'
}
}

Expand All @@ -142,5 +143,4 @@ function Set-CIPPIntunePolicy {
Write-LogMessage -headers $Headers -API $APINAME -tenant $($tenantFilter) -message "Failed $($PostType) policy $($Displayname). Error: $($ErrorMessage.NormalizedError)" -Sev 'Error' -LogData $ErrorMessage
throw "Failed to add or set policy for $($tenantFilter) with display name $($Displayname): $($ErrorMessage.NormalizedError)"
}

}
5 changes: 3 additions & 2 deletions Modules/CIPPCore/Public/Set-CIPPIntuneTemplate.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ function Set-CIPPIntuneTemplate {
$GUID,
$DisplayName,
$Description,
$templateType
$templateType,
$Headers
)
Write-Host "Received $DisplayName, $Description, $RawJSON, $templateType"
if (!$DisplayName) { throw 'You must enter a displayname' }
Expand All @@ -26,7 +27,7 @@ function Set-CIPPIntuneTemplate {
GUID = "$GUID"
PartitionKey = 'IntuneTemplate'
}
Write-LogMessage -Headers $Request.Headers -API $APINAME -message "Created intune policy template named $($Request.body.displayname) with GUID $GUID" -Sev 'Debug'
Write-LogMessage -Headers $Headers -API $APINAME -message "Created intune policy template named $($Request.body.displayname) with GUID $GUID" -Sev 'Debug'

return 'Successfully added template'
}
7 changes: 4 additions & 3 deletions Modules/CIPPCore/Public/Set-CIPPUserLicense.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ function Set-CIPPUserLicense {
[Parameter(Mandatory)][string]$UserId,
[Parameter(Mandatory)][string]$TenantFilter,
[Parameter()][array]$AddLicenses = @(),
[Parameter()][array]$RemoveLicenses = @()
[Parameter()][array]$RemoveLicenses = @(),
$Headers
)

# Build the addLicenses array
Expand All @@ -30,10 +31,10 @@ function Set-CIPPUserLicense {
$null = New-GraphPostRequest -uri "https://graph.microsoft.com/beta/users/$UserId/assignLicense" -tenantid $TenantFilter -type POST -body $LicenseBodyJson -Verbose
} catch {
$ErrorMessage = Get-CippException -Exception $_
Write-LogMessage -Headers $Request.Headers -API $APIName -tenant $TenantFilter -message "Failed to assign the license. Error: $($ErrorMessage.NormalizedError)" -Sev Error -LogData $ErrorMessage
Write-LogMessage -Headers $Headers -API $APIName -tenant $TenantFilter -message "Failed to assign the license. Error: $($ErrorMessage.NormalizedError)" -Sev Error -LogData $ErrorMessage
throw "Failed to assign the license. $($ErrorMessage.NormalizedError)"
}

Write-LogMessage -Headers $Request.Headers -API $APIName -tenant $TenantFilter -message "Assigned licenses to user $UserId. Added: $AddLicenses; Removed: $RemoveLicenses" -Sev 'Info'
Write-LogMessage -Headers $Headers -API $APIName -tenant $TenantFilter -message "Assigned licenses to user $UserId. Added: $AddLicenses; Removed: $RemoveLicenses" -Sev 'Info'
return 'Set licenses successfully'
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ function Invoke-CIPPStandardConditionalAccessTemplate {
$Table = Get-CippTable -tablename 'templates'
$Filter = "PartitionKey eq 'CATemplate' and RowKey eq '$($Setting.TemplateList.value)'"
$JSONObj = (Get-CippAzDataTableEntity @Table -Filter $Filter).JSON
$null = New-CIPPCAPolicy -TenantFilter $tenant -state $Setting.state -RawJSON $JSONObj -Overwrite $true -APIName $APIName -Headers $Request.Headers -ReplacePattern 'displayName'
$null = New-CIPPCAPolicy -replacePattern 'displayName' -TenantFilter $tenant -state $Setting.state -RawJSON $JSONObj -Overwrite $true -APIName $APIName -Headers $Request.Headers
} catch {
$ErrorMessage = Get-NormalizedError -Message $_.Exception.Message
Write-LogMessage -API 'Standards' -tenant $tenant -message "Failed to create or update conditional access rule $($JSONObj.displayName). Error: $ErrorMessage" -sev 'Error'
Expand Down
Loading