1- Function Invoke-AddOfficeApp {
1+ function Invoke-AddOfficeApp {
22 <#
33 . FUNCTIONALITY
44 Entrypoint
@@ -10,15 +10,17 @@ Function Invoke-AddOfficeApp {
1010
1111 # Input bindings are passed in via param block.
1212 $Tenants = $Request.body.selectedTenants.defaultDomainName
13+ $Headers = $Request.Headers
14+ $APIName = $Request.Params.CIPPEndpoint
1315 if (' AllTenants' -in $Tenants ) { $Tenants = (Get-Tenants ).defaultDomainName }
14- $AssignTo = if ($request .body.Assignto -ne ' on' ) { $request .body.Assignto }
16+ $AssignTo = if ($Request .Body.AssignTo -ne ' on' ) { $Request .Body.AssignTo }
1517
16- $results = foreach ($Tenant in $tenants ) {
18+ $Results = foreach ($Tenant in $Tenants ) {
1719 try {
18- $ExistingO365 = New-graphGetRequest - Uri ' https://graph.microsoft.com/beta/deviceAppManagement/mobileApps' - tenantid $tenant | Where-Object { $_.displayname -eq ' Microsoft 365 Apps for Windows 10 and later' }
20+ $ExistingO365 = New-GraphGetRequest - Uri ' https://graph.microsoft.com/beta/deviceAppManagement/mobileApps' - tenantid $Tenant | Where-Object { $_.displayName -eq ' Microsoft 365 Apps for Windows 10 and later' }
1921 if (! $ExistingO365 ) {
2022 # Check if custom XML is provided
21- if ($request .body .useCustomXml -and $request .body .customXml ) {
23+ if ($Request .Body .useCustomXml -and $Request .Body .customXml ) {
2224 # Use custom XML configuration
2325 $ObjBody = [pscustomobject ]@ {
2426 ' @odata.type' = ' #microsoft.graph.officeSuiteApp'
@@ -35,10 +37,9 @@ Function Invoke-AddOfficeApp {
3537 'value' = 'iVBORw0KGgoAAAANSUhEUgAAAF0AAAAeCAMAAAEOZNKlAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJhUExURf////7z7/i9qfF1S/KCW/i+qv3q5P/9/PrQwfOMae1RG+s8AOxGDfBtQPWhhPvUx/759/zg1vWgg+9fLu5WIvKFX/rSxP728/nCr/FyR+tBBvOMaO1UH+1RHOs+AvSScP3u6f/+/v3s5vzg1+xFDO9kNPOOa/i7pvzj2/vWyes9Af76+Pzh2PrTxf/6+f7y7vOGYexHDv3t5+1SHfi8qPOIZPvb0O1NFuxDCe9hMPSVdPnFs/3q4/vaz/STcu5VIe5YJPWcfv718v/9/e1MFfF4T/F4TvF2TP3o4exECvF0SexIEPONavzn3/vZze1QGvF3Te5dK+5cKvrPwPrQwvKAWe1OGPexmexKEveulfezm/BxRfamiuxLE/apj/zf1e5YJfSXd/OHYv3r5feznPakiPze1P7x7f739f3w6+xJEfnEsvWdf/Wfge1LFPe1nu9iMvnDsfBqPOs/BPOIY/WZevJ/V/zl3fnIt/vTxuxHD+xEC+9mN+5ZJv749vBpO/KBWvBwRP/8+/SUc/etlPjArP/7+vOLZ/F7UvWae/708e1OF/aihvSWdvi8p+tABfSZefvVyPWihfSVde9lNvami+9jM/zi2fKEXvBuQvOKZvalifF5UPJ/WPSPbe9eLfrKuvvd0uxBB/7w7Pzj2vrRw/rOv+1PGfi/q/eymu5bKf3n4PnJuPBrPf3t6PWfgvWegOxCCO9nOO9oOfaskvSYePi5pPi2oPnGtO5eLPevlvKDXfrNvv739Pzd0/708O9gL+9lNfJ9VfrLu/OPbPnDsPBrPus+A/nArfarkQAAAGr5HKgAAADLdFJOU/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AvuakogAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAz5JREFUOE+tVTtu4zAQHQjppmWzwIJbEVCzpTpjbxD3grQHSOXKRXgCAT6EC7UBVAmp3KwBnmvfzNCyZTmxgeTZJsXx43B+HBHRE34ZkXgkerXFTheeiCkRrbB4UXmp4wSWz5raaQEMTM5TZwuiXoaKgV+6FsmkZQcSy0kA71yMTMGHanX+AzMMGLAQCxU1F/ZwjULPugazl82GM0NEKm/U8EqFwEkO3/EAT4grgl0nucwlk9pcpTTJ4VPA4g/Rb3yIRhhp507e9nTQmZ1OS5RO4sS7nIRPEeHXCHdkw9ZEW2yVE5oIS7peD58Avs7CN+PVCmHh21oOqBdjDzIs+FldPJ74TFESUSJEfVzy9U/dhu+AuOT6eBp6gGKyXEx8euO450ZE4CMfstMFT44broWw/itkYErWXRx+fFArt9Ca9os78TFed0LVIUsmIHrwbwaw3BEOnOk94qVpQ6Ka2HjxewJnfyd6jUtGDQLdWlzmYNYLeKbbGOucJsNabCq1Yub0o92rtR+i30V2dapxYVEePXcOjeCKPnYyit7BtKeNlZqHbr+gt7i+AChWA9RsRs03pxTQc67ouWpxyESvjK5Vs3DVSy3IpkxPm5X+wZoBi+MFHWW69/w8FRhc7VBe6HAhMB2b8Q0XqDzTNZtXUMnKMjwKVaCrB/CSUL7WSx/HsdJC86lFGXwnioTeOMPjV+szlFvrZLA5VMVK4y+41l4e1xfx7Z88o4hkilRUH/qKqwNVlgDgpvYCpH3XwAy5eMCRnezIUxffVXoDql2rTHFDO+pjWnTWzAfrYXn6BFECblUpWGrvPZvBipETjS5ydM7tdXpH41ZCEbBNy/+wFZu71QO2t9pgT+iZEf657Q1vpN94PQNDxUHeKR103LV9nPVOtDikcNKO+2naCw7yKBhOe9Hm79pe8C4/CfC2wDjXnqC94kEeBU3WwN7dt/2UScXas7zDl5GpkY+M8WKv2J7fd4Ib2rGTk+jsC2cleEM7jI9veF7B0MBJrsZqfKd/81q9pR2NZfwJK2JzsmIT1Ns8jUH0UusQBpU8d2JzsHiXg1zXGLqxfitUNTDT/nUUeqDBp2HZVr+Ocqi/Ty3Rf4Jn82xxfSNtAAAAAElFTkSuQmCC'
3638 }
3739 }
38- }
39- else {
40+ } else {
4041 # Use standard configuration
41- $Arch = if ($request .body .arch ) { ' x64' } else { ' x86' }
42+ $Arch = if ($Request .Body .arch ) { ' x64' } else { ' x86' }
4243 $products = @ (' o365ProPlusRetail' )
4344 $ExcludedApps = [pscustomobject ]@ {
4445 infoPath = $true
@@ -54,8 +55,8 @@ Function Invoke-AddOfficeApp {
5455 access = $false
5556 bing = $false
5657 }
57- foreach ($ExcludedApp in $request .body .excludedApps.value ) {
58- $ExcludedApps .$excludedapp = $true
58+ foreach ($ExcludedApp in $Request .Body .excludedApps.value ) {
59+ $ExcludedApps .$ExcludedApp = $true
5960 }
6061 $ObjBody = [pscustomobject ]@ {
6162 ' @odata.type' = ' #microsoft.graph.officeSuiteApp'
@@ -66,14 +67,14 @@ Function Invoke-AddOfficeApp {
6667 ' publisher' = ' Microsoft'
6768 ' notes' = ' '
6869 ' owner' = ' Microsoft'
69- ' autoAcceptEula' = [bool ]$request .body .AcceptLicense
70+ ' autoAcceptEula' = [bool ]$Request .Body .AcceptLicense
7071 ' excludedApps' = $ExcludedApps
7172 ' officePlatformArchitecture' = $Arch
7273 ' officeSuiteAppDefaultFileFormat' = ' OfficeOpenXMLFormat'
73- ' localesToInstall' = @ ($request .body .languages.value )
74- ' shouldUninstallOlderVersionsOfOffice' = [bool ]$request .body .RemoveVersions
75- ' updateChannel' = $request .body .updateChannel.value
76- ' useSharedComputerActivation' = [bool ]$request .body .SharedComputerActivation
74+ ' localesToInstall' = @ ($Request .Body .languages.value )
75+ ' shouldUninstallOlderVersionsOfOffice' = [bool ]$Request .Body .RemoveVersions
76+ ' updateChannel' = $Request .Body .updateChannel.value
77+ ' useSharedComputerActivation' = [bool ]$Request .Body .SharedComputerActivation
7778 ' productIds' = $products
7879 ' largeIcon' = @ {
7980 ' type' = ' image/png'
@@ -83,31 +84,28 @@ Function Invoke-AddOfficeApp {
8384 }
8485 Write-Host ($ObjBody | ConvertTo-Json - Compress)
8586 $OfficeAppID = New-graphPostRequest - Uri ' https://graph.microsoft.com/beta/deviceAppManagement/mobileApps' - tenantid $tenant - Body (ConvertTo-Json - InputObject $ObjBody - Depth 10 ) - type POST
86- }
87- else {
87+ } else {
8888 " Office deployment already exists for $ ( $Tenant ) "
89- Continue
89+ continue
9090 }
91- Write-LogMessage - headers $Request . Headers - API $APIName - tenant $ ($tenant ) - message " Added Office profile to $ ( $tenant ) " - Sev ' Info'
91+ Write-LogMessage - headers $Headers - API $APIName - tenant $ ($Tenant ) - message " Added Office profile to $ ( $Tenant ) " - Sev ' Info'
9292 if ($AssignTo ) {
9393 $AssignO365 = if ($AssignTo -ne ' AllDevicesAndUsers' ) { ' {"mobileAppAssignments":[{"@odata.type":"#microsoft.graph.mobileAppAssignment","target":{"@odata.type":"#microsoft.graph.' + $ ($AssignTo ) + ' AssignmentTarget"},"intent":"Required"}]}' } else { ' {"mobileAppAssignments":[{"@odata.type":"#microsoft.graph.mobileAppAssignment","target":{"@odata.type":"#microsoft.graph.allDevicesAssignmentTarget"},"intent":"Required"},{"@odata.type":"#microsoft.graph.mobileAppAssignment","target":{"@odata.type":"#microsoft.graph.allLicensedUsersAssignmentTarget"},"intent":"Required"}]}' } Write-Host ($AssignO365 )
94- New-graphPostRequest - Uri " https://graph.microsoft.com/beta/deviceAppManagement/mobileApps/$ ( $OfficeAppID.id ) /assign" - tenantid $tenant - Body $AssignO365 - type POST
95- Write-LogMessage - headers $Request . Headers - API $APIName - tenant $ ($tenant ) - message " Assigned Office to $AssignTo " - Sev ' Info'
94+ New-graphPostRequest - Uri " https://graph.microsoft.com/beta/deviceAppManagement/mobileApps/$ ( $OfficeAppID.id ) /assign" - tenantid $Tenant - Body $AssignO365 - type POST
95+ Write-LogMessage - headers $Headers - API $APIName - tenant $ ($Tenant ) - message " Assigned Office to $AssignTo " - Sev ' Info'
9696 }
9797 " Successfully added Office App for $ ( $Tenant ) "
98- }
99- catch {
100- " Failed to add Office App for $ ( $Tenant ) : $ ( $_ .Exception.Message ) "
101- Write-LogMessage - headers $Request . Headers - API $APIName - tenant $ ($tenant ) - message " Failed to add Office App. Error: $ ( $_ .Exception.Message ) " - Sev ' Error'
98+ } catch {
99+ $ErrorMessage = Get-CippException - Exception $_
100+ " Failed to add Office App for $ ( $Tenant ) : $ ( $ErrorMessage .NormalizedError ) "
101+ Write-LogMessage - headers $Headers - API $APIName - tenant $ ($Tenant ) - message " Failed to add Office App. Error: $ ( $ErrorMessage .NormalizedError ) " - Sev ' Error' - Logdata $ErrorMessage
102102 continue
103103 }
104104
105105 }
106106
107- $body = [pscustomobject ]@ {' Results' = $results }
108-
109107 return ([HttpResponseContext ]@ {
110108 StatusCode = [HttpStatusCode ]::OK
111- Body = $body
109+ Body = @ { ' Results ' = $Results }
112110 })
113111}
0 commit comments