/// <summary>
        /// Processes the Push-CloudServices commandlet synchronously.
        /// </summary>
        protected override void ProcessRecord()
        {
            var azureSubscription = new AzureSubscription(SettingsPath, SubscriptionId);
            var azureCert         = new X509Certificate2(Convert.FromBase64String(azureSubscription.ManagementCertificate));
            var credentials       = new CertificateCloudCredentials(SubscriptionId, azureCert);

            FlexStreams.UseThreadQueue(ThreadAdapter);

            using (EventStream.Subscribe(e => WriteObject(e.Message)))
                using (var computeClient = new ComputeManagementClient(credentials))
                    using (var storageClient = new StorageManagementClient(credentials))
                    {
                        var targetSlot = VipSwap ? DeploymentSlot.Staging : DeploymentSlot.Production;

                        var storageAccount = storageClient.CreateContainerIfNotExistsAsync(
                            StorageAccountName,
                            StorageContainer,
                            BlobContainerPublicAccessType.Off, SharedAccessBlobPermissions.Read | SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.List).Result;

                        var blobClient = storageAccount.CreateCloudBlobClient();
                        var container  = blobClient.GetContainerReference(StorageContainer);

                        ProcessAsyncWork(ServiceNames.Select((t, i) => DeployCloudServiceAsync(computeClient, container, t, PackagePaths[i], ConfigurationPaths[i], DiagnosticsConfigurationPaths?[i], targetSlot))
                                         .ToArray());
                    }

            WriteObject("Push-CloudServices completed!");
            base.ProcessRecord();
        }