avm/ptn/lz/sub-vending/scripts/Register-SubscriptionResourceProviderList.ps1 (93 lines of code) (raw):

Param( [string]$subscriptionId, [string]$resourceProviders ) $ErrorActionPreference = 'SilentlyContinue' # Selecting the right subscription Select-AzSubscription -SubscriptionId $subscriptionId # Defining variables $providers = $resourceProviders | ConvertFrom-Json -AsHashtable $failedProviders = '' $failedFeatures = '' $DeploymentScriptOutputs = @{} ############################################## ## Registering resource providers and features ############################################## if ($providers.Count -gt 0) { foreach ($provider in $providers.keys) { try { # Registering resource providers $providerStatus = (Get-AzResourceProvider -ListAvailable | Where-Object ProviderNamespace -EQ $provider).registrationState # Check if the providered is registered if ($providerStatus -eq 'NotRegistered') { Write-Output "`n Registering the '$provider' provider" if (Register-AzResourceProvider -ProviderNamespace $provider) { Write-Output "`n The registration for provider'$provider' has started successfully" } else { Write-Output "`n The '$provider' provider has not been registered successfully" $failedProviders += ",$provider" } } elseif ($providerStatus -eq 'Registering') { Write-Output "`n The '$provider' provider is in registering state" $failedProviders += ",$provider" } elseif ( $null -eq $providerStatus) { Write-Output "`n There was a problem registering the '$provider' provider. Please make sure this provider namespace is valid" $failedProviders += ",$provider" } if ($failedProviders.length -gt 0) { $output = $failedProviders.substring(1) } else { $output = 'No failures' } $DeploymentScriptOutputs['failedProvidersRegistrations'] = $output } catch { Write-Output "`n There was a problem registering the '$provider' provider. Please make sure this provider namespace is valid" $failedProviders += ",$provider" if ($failedProviders.length -gt 0) { $output = $failedProviders.substring(1) } $DeploymentScriptOutputs['failedProvidersRegistrations'] = $output } # Registering resource providers features $features = $providers[$provider] if ($features.length -gt 0) { foreach ($feature in $features) { try { # Define variables $featureStatus = (Get-AzProviderFeature -ListAvailable | Where-Object FeatureName -EQ $feature).RegistrationState # Check if the feature is registered if ($featureStatus -eq 'NotRegistered' -or $featureStatus -eq 'Unregistered') { Write-Output "`n Registering the '$feature' feature" if (Register-AzProviderFeature -FeatureName $feature -ProviderNamespace $provider) { Write-Output "`n The The registration for feature '$feature' has started successfully" } else { Write-Output "`n The '$feature' feature has not been registered successfully" $failedFeatures += ",$feature" } } elseif ($null -eq $featureStatus) { Write-Output "`n The '$feature' feature doesn't exist." $failedFeatures += ",$feature" } if ($failedFeatures.length -gt 0) { $output = $failedFeatures.substring(1) } else { $output = 'No failures' } $DeploymentScriptOutputs['failedFeaturesRegistrations'] = $output } catch { Write-Output "`n There was a problem registering the '$feature' feature. Please make sure this feature name is valid" $failedFeatures += ",$feature" if ($failedFeatures.length -gt 0) { $output = $failedFeatures.substring(1) } $DeploymentScriptOutputs['failedFeaturesRegistrations'] = $output } } } else { $output = 'No failures' $DeploymentScriptOutputs['failedFeaturesRegistrations'] = $output } } } else { Write-Output "`n No providers or features to register" }