Public/Acronis/Start-AcronisAutomatedSetup.ps1
function Start-AcronisAutomatedSetup { [CmdletBinding()] param ( [Parameter()] $CloudFactoryCustomer, [Parameter()] [string]$TenantId ) begin { # Determine if $CloudFactoryCustomer or $TenantId is provided if (-not $CloudFactoryCustomer -and -not $TenantId) { Write-Error "You must provide either CloudFactoryCustomer or TenantId." return } if ($CloudFactoryCustomer) { $TenantId = $CloudFactoryCustomer.externalServices.MICROSOFT if (-not $TenantId) { Write-ModuleLog -Message "CloudFactoryCustomer does not have a Microsoft TenantId." -Level Error -Component "AcronisAutomatedSetup" throw "CloudFactoryCustomer does not have a Microsoft TenantId." } } Write-ModuleLog -Message "Finding CloudFactory Customer for TenantId: $TenantId - This could take a while...." -Level Info -Component "AcronisAutomatedSetup" $AllCloudFactoryCustomers = Get-CFCustomers -All $CloudFactoryCustomer = $AllCloudFactoryCustomers | Where-Object { $_.externalServices.MICROSOFT -eq $TenantId } if (-not $CloudFactoryCustomer) { Write-ModuleLog -Message "No CloudFactory Customer found for TenantId: $TenantId" -Level Error -Component "AcronisAutomatedSetup" throw "No CloudFactory Customer found for TenantId: $TenantId" } Write-ModuleLog -Message "Verified CloudFactory Customer: $($CloudFactoryCustomer.name)" -Level Info -Component "AcronisAutomatedSetup" } process { if ($CloudFactoryCustomer.externalServices.ACRONIS) { Write-ModuleLog -Message "Acronis is already attached to CloudFactory Customer: $($CloudFactoryCustomer.name) -Verifying existing Acronis Customer" -Level Info -Component "AcronisAutomatedSetup" try { $AcronisCustomer = Get-AcronisCustomerInfo -CustomerId $CloudFactoryCustomer.externalServices.ACRONIS Write-ModuleLog -Message "Acronis Customer found: $($AcronisCustomer.name)" -Level Info -Component "AcronisAutomatedSetup" } catch { Write-ModuleLog -Message "Failed to retrieve Acronis Customer information for ID: $($CloudFactoryCustomer.externalServices.ACRONIS)" -Level Error -Component "AcronisAutomatedSetup" throw "Failed to retrieve Acronis Customer information for ID: $($CloudFactoryCustomer.externalServices.ACRONIS)" } } else { Write-ModuleLog -Message "Acronis is not enabled for CloudFactory Customer: $($CloudFactoryCustomer.name) - Enabling Acronis" -Level Info -Component "AcronisAutomatedSetup" try { $AcronisCustomer = New-AcronisCustomer -CustomerName $CloudFactoryCustomer.name -CustomerReference $CloudFactoryCustomer.customerReference Write-ModuleLog -Message "Acronis Customer created: $($AcronisCustomer.name)" -Level Info -Component "AcronisAutomatedSetup" $AddCfExternalService = Add-CFExternalService -CustomerObject $CloudFactoryCustomer -ServiceName "ACRONIS" -Uuid $AcronisCustomer.id if (-not $AddCfExternalService) { Write-ModuleLog -Message "Failed to add Acronis external service to CloudFactory Customer: $($CloudFactoryCustomer.name)" -Level Error -Component "AcronisAutomatedSetup" throw "Failed to add Acronis external service to CloudFactory Customer: $($CloudFactoryCustomer.name)" } Write-ModuleLog -Message "Acronis Customer ID: $($AcronisCustomer.id) added to CloudFactory Customer: $($CloudFactoryCustomer.name)" -Level Info -Component "AcronisAutomatedSetup" } catch { Write-ModuleLog -Message "Failed to create Acronis Customer for CloudFactory Customer: $($CloudFactoryCustomer.name)" -Level Error -Component "AcronisAutomatedSetup" throw "Failed to create Acronis Customer for CloudFactory Customer: $($CloudFactoryCustomer.name)" } } try { # Enable all offerings for the customer Write-ModuleLog -Message "Enabling all Acronis offerings for customer: $($CloudFactoryCustomer.name)" -Level Info -Component "AcronisAutomatedSetup" $enabledOfferings = Enable-AcronisAllOfferings -CustomerId $AcronisCustomer.id if ($enabledOfferings) { Write-ModuleLog -Message "Successfully enabled all Acronis offerings for customer: $($AcronisCustomer.name)" -Level Info -Component "AcronisAutomatedSetup" } else { Write-ModuleLog -Message "No offerings were enabled for customer: $($AcronisCustomer.name)" -Level Warning -Component "AcronisAutomatedSetup" } } catch { Write-ModuleLog -Message "Failed to enable all Acronis offerings for customer: $($AcronisCustomer.name)" -Level Error -Component "AcronisAutomatedSetup" -ErrorRecord $_ throw "Failed to enable all Acronis offerings for customer: $($AcronisCustomer.name)" } } end { } } |