コード例 #1
0
        protected void SetProvisioningConfiguration(WindowsProvisioningConfigurationSet provisioningConfiguration)
        {
            provisioningConfiguration.AdminPassword = this.Password;
            SwitchParameter resetPasswordOnFirstLogon = this.ResetPasswordOnFirstLogon;

            provisioningConfiguration.ResetPasswordOnFirstLogon = resetPasswordOnFirstLogon.IsPresent;
            provisioningConfiguration.StoredCertificateSettings = this.Certificates;
            SwitchParameter disableAutomaticUpdates = this.DisableAutomaticUpdates;

            provisioningConfiguration.EnableAutomaticUpdates = new bool?(!disableAutomaticUpdates.IsPresent);
            if (!string.IsNullOrEmpty(this.TimeZone))
            {
                provisioningConfiguration.TimeZone = this.TimeZone;
            }
            if (base.ParameterSetName == "WindowsDomain")
            {
                WindowsProvisioningConfigurationSet.DomainJoinSettings    domainJoinSetting    = new WindowsProvisioningConfigurationSet.DomainJoinSettings();
                WindowsProvisioningConfigurationSet.DomainJoinCredentials domainJoinCredential = new WindowsProvisioningConfigurationSet.DomainJoinCredentials();
                domainJoinCredential.Username        = this.DomainUserName;
                domainJoinCredential.Password        = this.DomainPassword;
                domainJoinCredential.Domain          = this.Domain;
                domainJoinSetting.Credentials        = domainJoinCredential;
                domainJoinSetting.MachineObjectOU    = this.MachineObjectOU;
                domainJoinSetting.JoinDomain         = this.JoinDomain;
                provisioningConfiguration.DomainJoin = domainJoinSetting;
            }
        }
        protected void SetProvisioningConfiguration(WindowsProvisioningConfigurationSet provisioningConfiguration)
        {
            provisioningConfiguration.AdminUsername             = AdminUsername;
            provisioningConfiguration.AdminPassword             = SecureStringHelper.GetSecureString(Password);
            provisioningConfiguration.ResetPasswordOnFirstLogon = ResetPasswordOnFirstLogon.IsPresent;
            provisioningConfiguration.StoredCertificateSettings = CertUtilsNewSM.GetCertificateSettings(Certificates, X509Certificates);
            provisioningConfiguration.EnableAutomaticUpdates    = !DisableAutomaticUpdates.IsPresent;

            if (provisioningConfiguration.StoredCertificateSettings == null)
            {
                provisioningConfiguration.StoredCertificateSettings = new CertificateSettingList();
            }

            if (!string.IsNullOrEmpty(TimeZone))
            {
                provisioningConfiguration.TimeZone = TimeZone;
            }

            if (WindowsDomainParameterSetName.Equals(ParameterSetName, StringComparison.OrdinalIgnoreCase))
            {
                provisioningConfiguration.DomainJoin = new WindowsProvisioningConfigurationSet.DomainJoinSettings
                {
                    Credentials = new WindowsProvisioningConfigurationSet.DomainJoinCredentials
                    {
                        Username = DomainUserName,
                        Password = SecureStringHelper.GetSecureString(DomainPassword),
                        Domain   = Domain
                    },
                    MachineObjectOU = MachineObjectOU,
                    JoinDomain      = JoinDomain
                };
            }
        }
コード例 #3
0
        protected void SetProvisioningConfiguration(WindowsProvisioningConfigurationSet provisioningConfiguration)
        {
            provisioningConfiguration.AdminUsername             = AdminUsername;
            provisioningConfiguration.AdminPassword             = Password;
            provisioningConfiguration.ResetPasswordOnFirstLogon = ResetPasswordOnFirstLogon.IsPresent;
            provisioningConfiguration.StoredCertificateSettings = CertUtils.GetCertificateSettings(Certificates, X509Certificates);
            provisioningConfiguration.EnableAutomaticUpdates    = !DisableAutomaticUpdates.IsPresent;

            if (!string.IsNullOrEmpty(TimeZone))
            {
                provisioningConfiguration.TimeZone = TimeZone;
            }

            if (ParameterSetName == "WindowsDomain")
            {
                provisioningConfiguration.DomainJoin = new WindowsProvisioningConfigurationSet.DomainJoinSettings
                {
                    Credentials = new WindowsProvisioningConfigurationSet.DomainJoinCredentials
                    {
                        Username = DomainUserName,
                        Password = DomainPassword,
                        Domain   = Domain
                    },
                    MachineObjectOU = MachineObjectOU,
                    JoinDomain      = JoinDomain
                };
            }
        }
        protected void SetProvisioningConfiguration(WindowsProvisioningConfigurationSet provisioningConfiguration)
        {
            provisioningConfiguration.AdminUsername = AdminUsername;
            provisioningConfiguration.AdminPassword = Password;            
            provisioningConfiguration.ResetPasswordOnFirstLogon = ResetPasswordOnFirstLogon.IsPresent;
            provisioningConfiguration.StoredCertificateSettings = CertUtilsNewSM.GetCertificateSettings(Certificates, X509Certificates);
            provisioningConfiguration.EnableAutomaticUpdates = !DisableAutomaticUpdates.IsPresent;

            if (provisioningConfiguration.StoredCertificateSettings == null)
            {
                provisioningConfiguration.StoredCertificateSettings = new CertificateSettingList();
            }

            if (!string.IsNullOrEmpty(TimeZone))
            {
                provisioningConfiguration.TimeZone = TimeZone;
            }

            if (WindowsDomainParameterSetName.Equals(ParameterSetName, StringComparison.OrdinalIgnoreCase))
            {
                provisioningConfiguration.DomainJoin = new WindowsProvisioningConfigurationSet.DomainJoinSettings
                {
                    Credentials = new WindowsProvisioningConfigurationSet.DomainJoinCredentials
                    {
                        Username = DomainUserName,
                        Password = DomainPassword,
                        Domain = Domain
                    },
                    MachineObjectOU = MachineObjectOU,
                    JoinDomain = JoinDomain
                };
            }
        }
コード例 #5
0
        private PersistentVMRole CreatePersistenVMRole(CloudStorageAccount currentStorage)
        {
            var vm = new PersistentVMRole
            {
                AvailabilitySetName  = AvailabilitySetName,
                ConfigurationSets    = new Collection <ConfigurationSet>(),
                DataVirtualHardDisks = new Collection <DataVirtualHardDisk>(),
                RoleName             = String.IsNullOrEmpty(Name) ? ServiceName : Name, // default like the portal
                RoleSize             = String.IsNullOrEmpty(InstanceSize) ? null : InstanceSize,
                RoleType             = "PersistentVMRole",
                Label             = ServiceName,
                OSVirtualHardDisk = new OSVirtualHardDisk
                {
                    DiskName        = null,
                    SourceImageName = ImageName,
                    MediaLink       = string.IsNullOrEmpty(MediaLocation) ? null : new Uri(MediaLocation),
                    HostCaching     = HostCaching
                }
            };

            if (vm.OSVirtualHardDisk.MediaLink == null && String.IsNullOrEmpty(vm.OSVirtualHardDisk.DiskName))
            {
                DateTime dtCreated    = DateTime.Now;
                string   vhdname      = String.Format("{0}-{1}-{2}-{3}-{4}-{5}.vhd", this.ServiceName, vm.RoleName, dtCreated.Year, dtCreated.Month, dtCreated.Day, dtCreated.Millisecond);
                string   blobEndpoint = currentStorage.BlobEndpoint.AbsoluteUri;
                if (blobEndpoint.EndsWith("/") == false)
                {
                    blobEndpoint += "/";
                }
                vm.OSVirtualHardDisk.MediaLink = new Uri(blobEndpoint + "vhds/" + vhdname);
            }


            var netConfig = CreateNetworkConfigurationSet();

            if (ParameterSetName.Equals("Windows", StringComparison.OrdinalIgnoreCase))
            {
                var windowsConfig = new WindowsProvisioningConfigurationSet
                {
                    AdminUsername = this.AdminUsername,
                    AdminPassword = Password,
                    ComputerName  =
                        string.IsNullOrEmpty(Name) ? ServiceName : Name,
                    EnableAutomaticUpdates    = true,
                    ResetPasswordOnFirstLogon = false,
                    StoredCertificateSettings = CertUtils.GetCertificateSettings(this.Certificates, this.X509Certificates),
                    WinRM = GetWinRmConfiguration()
                };

                netConfig.InputEndpoints.Add(new InputEndpoint {
                    LocalPort = 3389, Protocol = "tcp", Name = "RemoteDesktop"
                });
                if (!this.DisableWinRMHttps.IsPresent)
                {
                    netConfig.InputEndpoints.Add(new InputEndpoint {
                        LocalPort = WinRMConstants.HttpsListenerPort, Protocol = "tcp", Name = WinRMConstants.EndpointName
                    });
                }
                vm.ConfigurationSets.Add(windowsConfig);
                vm.ConfigurationSets.Add(netConfig);
            }
            else
            {
                var linuxConfig = new LinuxProvisioningConfigurationSet
                {
                    HostName     = string.IsNullOrEmpty(this.Name) ? this.ServiceName : this.Name,
                    UserName     = this.LinuxUser,
                    UserPassword = this.Password,
                    DisableSshPasswordAuthentication = false
                };

                if (this.SSHKeyPairs != null && this.SSHKeyPairs.Count > 0 ||
                    this.SSHPublicKeys != null && this.SSHPublicKeys.Count > 0)
                {
                    linuxConfig.SSH = new LinuxProvisioningConfigurationSet.SSHSettings
                    {
                        PublicKeys = this.SSHPublicKeys,
                        KeyPairs   = this.SSHKeyPairs
                    };
                }

                var rdpEndpoint = new InputEndpoint {
                    LocalPort = 22, Protocol = "tcp", Name = "SSH"
                };
                netConfig.InputEndpoints.Add(rdpEndpoint);
                vm.ConfigurationSets.Add(linuxConfig);
                vm.ConfigurationSets.Add(netConfig);
            }

            return(vm);
        }
        protected void SetProvisioningConfiguration(WindowsProvisioningConfigurationSet provisioningConfiguration)
        {
            provisioningConfiguration.AdminUsername = AdminUsername;
            provisioningConfiguration.AdminPassword = SecureStringHelper.GetSecureString(Password);
            provisioningConfiguration.ResetPasswordOnFirstLogon = ResetPasswordOnFirstLogon.IsPresent;
            provisioningConfiguration.StoredCertificateSettings = CertUtilsNewSM.GetCertificateSettings(Certificates, X509Certificates);
            provisioningConfiguration.EnableAutomaticUpdates = !DisableAutomaticUpdates.IsPresent;

            if (provisioningConfiguration.StoredCertificateSettings == null)
            {
                provisioningConfiguration.StoredCertificateSettings = new CertificateSettingList();
            }

            if (!string.IsNullOrEmpty(TimeZone))
            {
                provisioningConfiguration.TimeZone = TimeZone;
            }

            if (WindowsDomainParameterSetName.Equals(ParameterSetName, StringComparison.OrdinalIgnoreCase))
            {
                provisioningConfiguration.DomainJoin = new WindowsProvisioningConfigurationSet.DomainJoinSettings
                {
                    Credentials = new WindowsProvisioningConfigurationSet.DomainJoinCredentials
                    {
                        Username = DomainUserName,
                        Password = SecureStringHelper.GetSecureString(DomainPassword),
                        Domain = Domain
                    },
                    MachineObjectOU = MachineObjectOU,
                    JoinDomain = JoinDomain
                };
            }

            if (!string.IsNullOrEmpty(CustomDataFile))
            {
                string fileName = this.TryResolvePath(this.CustomDataFile);
                provisioningConfiguration.CustomData = PersistentVMHelper.ConvertCustomDataFileToBase64(fileName);
            }
        }
コード例 #7
0
        public void NewAzureVMProcess()
        {
            SubscriptionData currentSubscription = this.GetCurrentSubscription();
            CloudStorageAccount currentStorage = null;
            try
            {
                currentStorage = currentSubscription.GetCurrentStorageAccount(Channel);
            }
            catch (EndpointNotFoundException) // couldn't access
            {
                throw new ArgumentException("CurrentStorageAccount is not accessible. Ensure the current storage account is accessible and in the same location or affinity group as your cloud service.");
            }
            if (currentStorage == null) // not set
            {
                throw new ArgumentException("CurrentStorageAccount is not set. Use Set-AzureSubscription subname -CurrentStorageAccount storageaccount to set it.");
            }

            var vm = new PersistentVMRole
            {
                AvailabilitySetName = AvailabilitySetName,
                ConfigurationSets = new Collection<ConfigurationSet>(),
                DataVirtualHardDisks = new Collection<DataVirtualHardDisk>(),
                RoleName = String.IsNullOrEmpty(Name) ? ServiceName : Name, // default like the portal
                RoleSize = String.IsNullOrEmpty(InstanceSize) ? null : InstanceSize,
                RoleType = "PersistentVMRole",
                Label = ServiceManagementHelper.EncodeToBase64String(ServiceName)
            };

            vm.OSVirtualHardDisk = new OSVirtualHardDisk()
            {
                DiskName = null,
                SourceImageName = ImageName,
                MediaLink = string.IsNullOrEmpty(MediaLocation) ? null : new Uri(MediaLocation),
                HostCaching = HostCaching
            };

            if (vm.OSVirtualHardDisk.MediaLink == null && String.IsNullOrEmpty(vm.OSVirtualHardDisk.DiskName))
            {
                DateTime dtCreated = DateTime.Now;
                string vhdname = String.Format("{0}-{1}-{2}-{3}-{4}-{5}.vhd", this.ServiceName, vm.RoleName, dtCreated.Year, dtCreated.Month, dtCreated.Day, dtCreated.Millisecond);
                string blobEndpoint = currentStorage.BlobEndpoint.AbsoluteUri;
                if (blobEndpoint.EndsWith("/") == false)
                    blobEndpoint += "/";
                vm.OSVirtualHardDisk.MediaLink = new Uri(blobEndpoint + "vhds/" + vhdname);
            }

            NetworkConfigurationSet netConfig = new NetworkConfigurationSet();
            netConfig.InputEndpoints = new Collection<InputEndpoint>();
            if (SubnetNames != null)
            {
                netConfig.SubnetNames = new SubnetNamesCollection();
                foreach (string subnet in SubnetNames)
                {
                    netConfig.SubnetNames.Add(subnet);
                }
            }

            if (ParameterSetName.Equals("Windows", StringComparison.OrdinalIgnoreCase))
            {
                WindowsProvisioningConfigurationSet windowsConfig = new WindowsProvisioningConfigurationSet
                {
                    AdminPassword = Password,
                    ComputerName = string.IsNullOrEmpty(Name) ? ServiceName : Name,
                    EnableAutomaticUpdates = true,
                    ResetPasswordOnFirstLogon = false,
                    StoredCertificateSettings = Certificates
                };

                InputEndpoint rdpEndpoint = new InputEndpoint { LocalPort = 3389, Protocol = "tcp", Name = "RemoteDesktop" };

                netConfig.InputEndpoints.Add(rdpEndpoint);
                vm.ConfigurationSets.Add(windowsConfig);
                vm.ConfigurationSets.Add(netConfig);
            }
            else
            {
                LinuxProvisioningConfigurationSet linuxConfig = new LinuxProvisioningConfigurationSet();
                linuxConfig.HostName = string.IsNullOrEmpty(this.Name) ? this.ServiceName : this.Name;
                linuxConfig.UserName = this.LinuxUser;
                linuxConfig.UserPassword = this.Password;
                linuxConfig.DisableSshPasswordAuthentication = false;

                if (this.SSHKeyPairs != null && this.SSHKeyPairs.Count > 0 || this.SSHPublicKeys != null && this.SSHPublicKeys.Count > 0)
                {
                    linuxConfig.SSH = new LinuxProvisioningConfigurationSet.SSHSettings();
                    linuxConfig.SSH.PublicKeys = this.SSHPublicKeys;
                    linuxConfig.SSH.KeyPairs = this.SSHKeyPairs;
                }

                InputEndpoint rdpEndpoint = new InputEndpoint();
                rdpEndpoint.LocalPort = 22;
                rdpEndpoint.Protocol = "tcp";
                rdpEndpoint.Name = "SSH";
                netConfig.InputEndpoints.Add(rdpEndpoint);
                vm.ConfigurationSets.Add(linuxConfig);
                vm.ConfigurationSets.Add(netConfig);
            }

            string CreateCloudServiceOperationID = String.Empty;
            string CreateDeploymentOperationID = String.Empty;
            List<String> CreateVMOperationIDs = new List<String>();
            Operation lastOperation = null;

            bool ServiceExists = DoesCloudServiceExist(this.ServiceName);

            if (string.IsNullOrEmpty(this.Location) == false || string.IsNullOrEmpty(AffinityGroup) == false || (!String.IsNullOrEmpty(VNetName) && ServiceExists == false))
            {
                using (new OperationContextScope((IContextChannel)Channel))
                {
                    try
                    {
                        //Implicitly created hosted service2012-05-07 23:12

                        // Create the Cloud Service when
                        // Location or Affinity Group is Specified
                        // or VNET is specified and the service doesn't exist
                        var chsi = new CreateHostedServiceInput
                        {
                            AffinityGroup = this.AffinityGroup,
                            Location = this.Location,
                            ServiceName = this.ServiceName,
                            Description = String.Format("Implicitly created hosted service{0}", DateTime.Now.ToUniversalTime().ToString("yyyy-MM-dd HH:mm")),
                            Label = ServiceManagementHelper.EncodeToBase64String(this.ServiceName)
                        };

                        ExecuteClientAction(chsi, CommandRuntime + " - Create Cloud Service", s => this.Channel.CreateHostedService(s, chsi), WaitForOperation);
                    }

                    catch (CommunicationException ex)
                    {
                        this.WriteErrorDetails(ex);
                        return;
                    }
                }
            }
            if (lastOperation != null && string.Compare(lastOperation.Status, OperationState.Failed, StringComparison.OrdinalIgnoreCase) == 0)
                return;

            // If the current deployment doesn't exist set it create it
            if (CurrentDeployment == null)
            {
                using (new OperationContextScope((IContextChannel)Channel))
                {
                    try
                    {
                        var deployment = new Deployment
                        {
                            DeploymentSlot = "Production",
                            Name = this.ServiceName,
                            Label = this.ServiceName,
                            RoleList = new RoleList(new List<Role> { vm }),
                            VirtualNetworkName = this.VNetName

                        };

                        if (this.DnsSettings != null)
                        {
                            deployment.Dns = new DnsSettings();
                            deployment.Dns.DnsServers = new DnsServerList();
                            foreach (DnsServer dns in this.DnsSettings)
                                deployment.Dns.DnsServers.Add(dns);
                        }

                        ExecuteClientAction(deployment, CommandRuntime + " - Create Deployment with VM " + vm.RoleName, s => this.Channel.CreateDeployment(s, this.ServiceName, deployment), WaitForOperation);
                    }

                    catch (CommunicationException ex)
                    {
                        if (ex is EndpointNotFoundException)
                        {
                            throw new Exception("Cloud Service does not exist. Specify -Location or -Affinity group to create one.");
                        }
                        else
                        {
                            this.WriteErrorDetails(ex);
                        }
                        return;
                    }

                    _createdDeployment = true;
                }
            }
            else
            {
                if (VNetName != null || DnsSettings != null)
                {
                    WriteWarning("VNetName or DnsSettings can only be specified on new deployments.");
                }
            }

            if (lastOperation != null && string.Compare(lastOperation.Status, OperationState.Failed, StringComparison.OrdinalIgnoreCase) == 0)
                return;

            // Only create the VM when a new VM was added and it was not created during the deployment phase.
            if ((_createdDeployment == false))
            {
                using (new OperationContextScope((IContextChannel)Channel))
                {
                    try
                    {
                        ExecuteClientAction(vm, CommandRuntime + " - Create VM " + vm.RoleName, s => this.Channel.AddRole(s, this.ServiceName, this.ServiceName, vm), WaitForOperation);
                    }
                    catch (CommunicationException ex)
                    {
                        this.WriteErrorDetails(ex);
                        return;
                    }
                }
            }
        }
コード例 #8
0
 public WinRmConfigurationBuilder(WindowsProvisioningConfigurationSet.WinRmConfiguration configuration)
 {
     Configuration = configuration;
 }
コード例 #9
0
        internal void ExecuteCommand()
        {
            var role = VM.GetInstance();

            if (Linux.IsPresent)
            {
                var provisioningConfiguration = role.ConfigurationSets
                    .OfType<LinuxProvisioningConfigurationSet>()
                    .SingleOrDefault();

                if (provisioningConfiguration == null)
                {
                    provisioningConfiguration = new LinuxProvisioningConfigurationSet();
                    role.ConfigurationSets.Add(provisioningConfiguration);
                }

                SetProvisioningConfiguration(provisioningConfiguration);
                provisioningConfiguration.HostName = role.RoleName;

                if (DisableSSH.IsPresent == false || NoSSHEndpoint.IsPresent)
                {
                    var netConfig = role.ConfigurationSets
                        .OfType<NetworkConfigurationSet>()
                        .SingleOrDefault();

                    if (netConfig == null)
                    {
                        netConfig = new NetworkConfigurationSet
                        {
                            InputEndpoints =
                                new System.Collections.ObjectModel.Collection<InputEndpoint>()
                        };

                        role.ConfigurationSets.Add(netConfig);
                    }

                    // Add check in case the settings were imported
                    bool addSSH = true;

                    foreach (InputEndpoint ep in netConfig.InputEndpoints)
                    {
                        if (string.Compare(ep.Name, "SSH", StringComparison.OrdinalIgnoreCase) == 0 || ep.LocalPort == 22)
                        {
                            addSSH = false;
                            ep.Port = null; // null out to avoid conflicts
                            break;
                        }
                    }

                    if (addSSH)
                    {
                        InputEndpoint sshEndpoint = new InputEndpoint();
                        sshEndpoint.LocalPort = 22;
                        sshEndpoint.Protocol = "tcp";
                        sshEndpoint.Name = "SSH";
                        netConfig.InputEndpoints.Add(sshEndpoint);
                    }
                }
            }
            else
            {
                var provisioningConfiguration = role.ConfigurationSets
                    .OfType<WindowsProvisioningConfigurationSet>()
                    .SingleOrDefault();
                if (provisioningConfiguration == null)
                {
                    provisioningConfiguration = new WindowsProvisioningConfigurationSet();
                    role.ConfigurationSets.Add(provisioningConfiguration);
                }

                SetProvisioningConfiguration(provisioningConfiguration);
                provisioningConfiguration.ComputerName = role.RoleName;

                if (!NoRDPEndpoint.IsPresent)
                {
                    var netConfig = role.ConfigurationSets
                        .OfType<NetworkConfigurationSet>()
                        .SingleOrDefault();

                    if (netConfig == null)
                    {
                        netConfig = new NetworkConfigurationSet();
                        role.ConfigurationSets.Add(netConfig);
                    }

                    if (netConfig.InputEndpoints == null)
                    {
                        netConfig.InputEndpoints = new System.Collections.ObjectModel.Collection<InputEndpoint>();
                    }

                    bool addRDP = true;

                    foreach (InputEndpoint ep in netConfig.InputEndpoints)
                    {
                        if (string.Compare(ep.Name, "RDP", StringComparison.OrdinalIgnoreCase) == 0 || ep.LocalPort == 3389)
                        {
                            addRDP = false;
                            ep.Port = null; // null out to avoid conflicts
                            break;
                        }
                    }

                    if (addRDP)
                    {
                        InputEndpoint rdpEndpoint = new InputEndpoint { LocalPort = 3389, Protocol = "tcp", Name = "RDP" };
                        netConfig.InputEndpoints.Add(rdpEndpoint);
                    }
                }
            }

            WriteObject(VM, true);
        }
コード例 #10
0
        protected void SetProvisioningConfiguration(WindowsProvisioningConfigurationSet provisioningConfiguration)
        {
            provisioningConfiguration.AdminPassword = Password;
            provisioningConfiguration.ResetPasswordOnFirstLogon = ResetPasswordOnFirstLogon.IsPresent;
            provisioningConfiguration.StoredCertificateSettings = Certificates;
            provisioningConfiguration.EnableAutomaticUpdates = !DisableAutomaticUpdates.IsPresent;

            if (!string.IsNullOrEmpty(TimeZone))
            {
                provisioningConfiguration.TimeZone = TimeZone;
            }

            if (ParameterSetName == "WindowsDomain")
            {
                provisioningConfiguration.DomainJoin = new WindowsProvisioningConfigurationSet.DomainJoinSettings
                {
                    Credentials = new WindowsProvisioningConfigurationSet.DomainJoinCredentials
                    {
                        Username = DomainUserName,
                        Password = DomainPassword,
                        Domain = Domain
                    },
                    MachineObjectOU = MachineObjectOU,
                    JoinDomain = JoinDomain
                };
            }
        }
コード例 #11
0
        private PersistentVMRole CreatePersistenVMRole(CloudStorageAccount currentStorage)
        {
            var vm = new PersistentVMRole
            {
                AvailabilitySetName = AvailabilitySetName,
                ConfigurationSets = new Collection<ConfigurationSet>(),
                DataVirtualHardDisks = new Collection<DataVirtualHardDisk>(),
                RoleName = String.IsNullOrEmpty(Name) ? ServiceName : Name, // default like the portal
                RoleSize = String.IsNullOrEmpty(InstanceSize) ? null : InstanceSize,
                RoleType = "PersistentVMRole",
                Label = ServiceName,
                OSVirtualHardDisk = new OSVirtualHardDisk
                {
                    DiskName = null,
                    SourceImageName = ImageName,
                    MediaLink = string.IsNullOrEmpty(MediaLocation) ? null : new Uri(MediaLocation),
                    HostCaching = HostCaching
                }
            };

            if (vm.OSVirtualHardDisk.MediaLink == null && String.IsNullOrEmpty(vm.OSVirtualHardDisk.DiskName))
            {
                DateTime dtCreated = DateTime.Now;
                string vhdname = String.Format("{0}-{1}-{2}-{3}-{4}-{5}.vhd", this.ServiceName, vm.RoleName, dtCreated.Year, dtCreated.Month, dtCreated.Day, dtCreated.Millisecond);
                string blobEndpoint = currentStorage.BlobEndpoint.AbsoluteUri;
                if (blobEndpoint.EndsWith("/") == false)
                    blobEndpoint += "/";
                vm.OSVirtualHardDisk.MediaLink = new Uri(blobEndpoint + "vhds/" + vhdname);
            }

            var netConfig = CreateNetworkConfigurationSet();

            if (ParameterSetName.Equals("Windows", StringComparison.OrdinalIgnoreCase))
            {
                var windowsConfig = new WindowsProvisioningConfigurationSet
                {
                    AdminUsername = this.AdminUsername,
                    AdminPassword = Password,
                    ComputerName =
                        string.IsNullOrEmpty(Name) ? ServiceName : Name,
                    EnableAutomaticUpdates = true,
                    ResetPasswordOnFirstLogon = false,
                    StoredCertificateSettings = CertUtils.GetCertificateSettings(this.Certificates, this.X509Certificates),
                    WinRM = GetWinRmConfiguration()
                };

                netConfig.InputEndpoints.Add(new InputEndpoint {LocalPort = 3389, Protocol = "tcp", Name = "RemoteDesktop"});
                if(!this.DisableWinRMHttps.IsPresent)
                {
                    netConfig.InputEndpoints.Add(new InputEndpoint { LocalPort = WinRMConstants.HttpsListenerPort, Protocol = "tcp", Name = WinRMConstants.EndpointName });
                }
                vm.ConfigurationSets.Add(windowsConfig);
                vm.ConfigurationSets.Add(netConfig);
            }
            else
            {
                var linuxConfig = new LinuxProvisioningConfigurationSet
                {
                    HostName = string.IsNullOrEmpty(this.Name) ? this.ServiceName : this.Name,
                    UserName = this.LinuxUser,
                    UserPassword = this.Password,
                    DisableSshPasswordAuthentication = false
                };

                if (this.SSHKeyPairs != null && this.SSHKeyPairs.Count > 0 ||
                    this.SSHPublicKeys != null && this.SSHPublicKeys.Count > 0)
                {
                    linuxConfig.SSH = new LinuxProvisioningConfigurationSet.SSHSettings
                    {
                        PublicKeys = this.SSHPublicKeys,
                        KeyPairs = this.SSHKeyPairs
                    };
                }

                var rdpEndpoint = new InputEndpoint {LocalPort = 22, Protocol = "tcp", Name = "SSH"};
                netConfig.InputEndpoints.Add(rdpEndpoint);
                vm.ConfigurationSets.Add(linuxConfig);
                vm.ConfigurationSets.Add(netConfig);
            }

            return vm;
        }
コード例 #12
0
        internal void ExecuteCommand()
        {
            var role = VM.GetInstance();

            if (Linux.IsPresent)
            {
                var provisioningConfiguration = role.ConfigurationSets
                    .OfType<LinuxProvisioningConfigurationSet>()
                    .SingleOrDefault();

                if (provisioningConfiguration == null)
                {
                    provisioningConfiguration = new LinuxProvisioningConfigurationSet();
                    role.ConfigurationSets.Add(provisioningConfiguration);
                }

                SetProvisioningConfiguration(provisioningConfiguration);
                provisioningConfiguration.HostName = role.RoleName;

                if (DisableSSH.IsPresent == false || NoSSHEndpoint.IsPresent)
                {
                    var netConfig = role.ConfigurationSets
                        .OfType<NetworkConfigurationSet>()
                        .SingleOrDefault();

                    if (netConfig == null)
                    {
                        netConfig = new NetworkConfigurationSet
                        {
                            InputEndpoints =
                                new System.Collections.ObjectModel.Collection<InputEndpoint>()
                        };

                        role.ConfigurationSets.Add(netConfig);
                    }

                    // Add check in case the settings were imported
                    bool addSSH = true;

                    foreach (InputEndpoint ep in netConfig.InputEndpoints)
                    {
                        if (string.Compare(ep.Name, "SSH", StringComparison.OrdinalIgnoreCase) == 0 || ep.LocalPort == 22)
                        {
                            addSSH = false;
                            ep.Port = null; // null out to avoid conflicts
                            break;
                        }
                    }

                    if (addSSH)
                    {
                        InputEndpoint sshEndpoint = new InputEndpoint();
                        sshEndpoint.LocalPort = 22;
                        sshEndpoint.Protocol = "tcp";
                        sshEndpoint.Name = "SSH";
                        netConfig.InputEndpoints.Add(sshEndpoint);
                    }
                }
            }
            else
            {
                var provisioningConfiguration = role.ConfigurationSets
                    .OfType<WindowsProvisioningConfigurationSet>()
                    .SingleOrDefault();
                if (provisioningConfiguration == null)
                {
                    provisioningConfiguration = new WindowsProvisioningConfigurationSet();
                    role.ConfigurationSets.Add(provisioningConfiguration);
                }

                SetProvisioningConfiguration(provisioningConfiguration);
                provisioningConfiguration.ComputerName = role.RoleName;

                if (!NoRDPEndpoint.IsPresent)
                {
                    var netConfig = role.ConfigurationSets
                        .OfType<NetworkConfigurationSet>()
                        .SingleOrDefault();

                    if (netConfig == null)
                    {
                        netConfig = new NetworkConfigurationSet();
                        role.ConfigurationSets.Add(netConfig);
                    }

                    if (netConfig.InputEndpoints == null)
                    {
                        netConfig.InputEndpoints = new System.Collections.ObjectModel.Collection<InputEndpoint>();
                    }

                    bool addRDP = true;

                    foreach (InputEndpoint ep in netConfig.InputEndpoints)
                    {
                        if (string.Compare(ep.Name, "RDP", StringComparison.OrdinalIgnoreCase) == 0 || ep.LocalPort == 3389)
                        {
                            addRDP = false;
                            ep.Port = null; // null out to avoid conflicts
                            break;
                        }
                    }

                    if (addRDP)
                    {
                        InputEndpoint rdpEndpoint = new InputEndpoint { LocalPort = 3389, Protocol = "tcp", Name = "RDP" };
                        netConfig.InputEndpoints.Add(rdpEndpoint);
                    }
                }

                if (!this.DisableWinRMHttps.IsPresent)
                {
                    var netConfig = role.ConfigurationSets
                        .OfType<NetworkConfigurationSet>()
                        .SingleOrDefault();

                    if (netConfig == null)
                    {
                        netConfig = new NetworkConfigurationSet();
                        role.ConfigurationSets.Add(netConfig);
                    }

                    if (netConfig.InputEndpoints == null)
                    {
                        netConfig.InputEndpoints = new System.Collections.ObjectModel.Collection<InputEndpoint>();
                    }

                    var builder = new WinRmConfigurationBuilder();
                    if (this.EnableWinRMHttp.IsPresent)
                    {
                        builder.AddHttpListener();
                    }
                    builder.AddHttpsListener(this.WinRMCertificate);
                    provisioningConfiguration.WinRM = builder.Configuration;

                    var winRmEndpoint = new InputEndpoint {LocalPort = WinRMConstants.HttpsListenerPort, Protocol = "tcp", Name = WinRMConstants.EndpointName};
                    netConfig.InputEndpoints.Add(winRmEndpoint);
                    role.WinRMCertificate = WinRMCertificate;
                }

                role.X509Certificates = new List<X509Certificate2>();
                if (this.X509Certificates != null)
                {
                    role.X509Certificates.AddRange(this.X509Certificates);
                }
                role.NoExportPrivateKey = this.NoExportPrivateKey.IsPresent;
            }

            WriteObject(VM, true);
        }
コード例 #13
0
        protected override void ProcessRecord()
        {
            bool flag;
            bool flag1;

            try
            {
                base.ProcessRecord();
                PersistentVM    instance = this.VM.GetInstance();
                SwitchParameter linux    = base.Linux;
                if (!linux.IsPresent)
                {
                    WindowsProvisioningConfigurationSet windowsProvisioningConfigurationSet = instance.ConfigurationSets.OfType <WindowsProvisioningConfigurationSet>().SingleOrDefault <WindowsProvisioningConfigurationSet>();
                    if (windowsProvisioningConfigurationSet == null)
                    {
                        windowsProvisioningConfigurationSet = new WindowsProvisioningConfigurationSet();
                        instance.ConfigurationSets.Add(windowsProvisioningConfigurationSet);
                    }
                    base.SetProvisioningConfiguration(windowsProvisioningConfigurationSet);
                    windowsProvisioningConfigurationSet.ComputerName = instance.RoleName;
                    SwitchParameter noRDPEndpoint = base.NoRDPEndpoint;
                    if (!noRDPEndpoint.IsPresent)
                    {
                        NetworkConfigurationSet networkConfigurationSet = instance.ConfigurationSets.OfType <NetworkConfigurationSet>().SingleOrDefault <NetworkConfigurationSet>();
                        if (networkConfigurationSet == null)
                        {
                            networkConfigurationSet = new NetworkConfigurationSet();
                            instance.ConfigurationSets.Add(networkConfigurationSet);
                        }
                        if (networkConfigurationSet.InputEndpoints == null)
                        {
                            networkConfigurationSet.InputEndpoints = new Collection <InputEndpoint>();
                        }
                        foreach (InputEndpoint inputEndpoint in networkConfigurationSet.InputEndpoints)
                        {
                            if (string.Compare(inputEndpoint.Name, "RDP", StringComparison.OrdinalIgnoreCase) != 0 && inputEndpoint.LocalPort != 0xd3d)
                            {
                                continue;
                            }
                            flag1 = false;
                            int?nullable = null;
                            inputEndpoint.Port = nullable;
                            break;
                        }
                        if (flag1)
                        {
                            InputEndpoint inputEndpoint1 = new InputEndpoint();
                            inputEndpoint1.LocalPort = 0xd3d;
                            inputEndpoint1.Protocol  = "tcp";
                            inputEndpoint1.Name      = "RDP";
                            networkConfigurationSet.InputEndpoints.Add(inputEndpoint1);
                        }
                    }
                }
                else
                {
                    LinuxProvisioningConfigurationSet linuxProvisioningConfigurationSet = instance.ConfigurationSets.OfType <LinuxProvisioningConfigurationSet>().SingleOrDefault <LinuxProvisioningConfigurationSet>();
                    if (linuxProvisioningConfigurationSet == null)
                    {
                        linuxProvisioningConfigurationSet = new LinuxProvisioningConfigurationSet();
                        instance.ConfigurationSets.Add(linuxProvisioningConfigurationSet);
                    }
                    base.SetProvisioningConfiguration(linuxProvisioningConfigurationSet);
                    linuxProvisioningConfigurationSet.HostName = instance.RoleName;
                    SwitchParameter disableSSH = base.DisableSSH;
                    if (disableSSH.IsPresent)
                    {
                        SwitchParameter noSSHEndpoint = base.NoSSHEndpoint;
                        if (!noSSHEndpoint.IsPresent)
                        {
                            goto Label0;
                        }
                    }
                    NetworkConfigurationSet inputEndpoints = instance.ConfigurationSets.OfType <NetworkConfigurationSet>().SingleOrDefault <NetworkConfigurationSet>();
                    if (inputEndpoints == null)
                    {
                        inputEndpoints = new NetworkConfigurationSet();
                        inputEndpoints.InputEndpoints = new Collection <InputEndpoint>();
                        instance.ConfigurationSets.Add(inputEndpoints);
                    }
                    foreach (InputEndpoint inputEndpoint2 in inputEndpoints.InputEndpoints)
                    {
                        if (string.Compare(inputEndpoint2.Name, "SSH", StringComparison.OrdinalIgnoreCase) != 0 && inputEndpoint2.LocalPort != 22)
                        {
                            continue;
                        }
                        flag = false;
                        int?nullable1 = null;
                        inputEndpoint2.Port = nullable1;
                        break;
                    }
                    if (flag)
                    {
                        InputEndpoint inputEndpoint3 = new InputEndpoint();
                        inputEndpoint3.LocalPort = 22;
                        inputEndpoint3.Protocol  = "tcp";
                        inputEndpoint3.Name      = "SSH";
                        inputEndpoints.InputEndpoints.Add(inputEndpoint3);
                    }
                }
Label0:
                CmdletExtensions.WriteVerboseOutputForObject(this, this.VM);
                base.WriteObject(this.VM, true);
            }
            catch (Exception exception1)
            {
                Exception exception = exception1;
                base.WriteError(new ErrorRecord(exception, string.Empty, ErrorCategory.CloseError, null));
            }
        }
コード例 #14
0
        internal void ExecuteCommand()
        {
            var role = VM.GetInstance();

            if (Linux.IsPresent)
            {
                var provisioningConfiguration = role.ConfigurationSets
                                                .OfType <LinuxProvisioningConfigurationSet>()
                                                .SingleOrDefault();

                if (provisioningConfiguration == null)
                {
                    provisioningConfiguration = new LinuxProvisioningConfigurationSet();
                    role.ConfigurationSets.Add(provisioningConfiguration);
                }

                SetProvisioningConfiguration(provisioningConfiguration);
                provisioningConfiguration.HostName = role.RoleName;

                if (DisableSSH.IsPresent == false || NoSSHEndpoint.IsPresent)
                {
                    var netConfig = role.ConfigurationSets
                                    .OfType <NetworkConfigurationSet>()
                                    .SingleOrDefault();

                    if (netConfig == null)
                    {
                        netConfig = new NetworkConfigurationSet
                        {
                            InputEndpoints =
                                new System.Collections.ObjectModel.Collection <InputEndpoint>()
                        };

                        role.ConfigurationSets.Add(netConfig);
                    }

                    // Add check in case the settings were imported
                    bool addSSH = true;

                    foreach (InputEndpoint ep in netConfig.InputEndpoints)
                    {
                        if (string.Compare(ep.Name, "SSH", StringComparison.OrdinalIgnoreCase) == 0 || ep.LocalPort == 22)
                        {
                            addSSH  = false;
                            ep.Port = null; // null out to avoid conflicts
                            break;
                        }
                    }

                    if (addSSH)
                    {
                        InputEndpoint sshEndpoint = new InputEndpoint();
                        sshEndpoint.LocalPort = 22;
                        sshEndpoint.Protocol  = "tcp";
                        sshEndpoint.Name      = "SSH";
                        netConfig.InputEndpoints.Add(sshEndpoint);
                    }
                }
            }
            else
            {
                var provisioningConfiguration = role.ConfigurationSets
                                                .OfType <WindowsProvisioningConfigurationSet>()
                                                .SingleOrDefault();
                if (provisioningConfiguration == null)
                {
                    provisioningConfiguration = new WindowsProvisioningConfigurationSet();
                    role.ConfigurationSets.Add(provisioningConfiguration);
                }

                SetProvisioningConfiguration(provisioningConfiguration);
                provisioningConfiguration.ComputerName = role.RoleName;

                if (!NoRDPEndpoint.IsPresent)
                {
                    var netConfig = role.ConfigurationSets
                                    .OfType <NetworkConfigurationSet>()
                                    .SingleOrDefault();

                    if (netConfig == null)
                    {
                        netConfig = new NetworkConfigurationSet();
                        role.ConfigurationSets.Add(netConfig);
                    }

                    if (netConfig.InputEndpoints == null)
                    {
                        netConfig.InputEndpoints = new System.Collections.ObjectModel.Collection <InputEndpoint>();
                    }

                    bool addRDP = true;

                    foreach (InputEndpoint ep in netConfig.InputEndpoints)
                    {
                        if (string.Compare(ep.Name, "RDP", StringComparison.OrdinalIgnoreCase) == 0 || ep.LocalPort == 3389)
                        {
                            addRDP  = false;
                            ep.Port = null; // null out to avoid conflicts
                            break;
                        }
                    }

                    if (addRDP)
                    {
                        InputEndpoint rdpEndpoint = new InputEndpoint {
                            LocalPort = 3389, Protocol = "tcp", Name = "RDP"
                        };
                        netConfig.InputEndpoints.Add(rdpEndpoint);
                    }
                }

                if (!this.DisableWinRMHttps.IsPresent)
                {
                    var netConfig = role.ConfigurationSets
                                    .OfType <NetworkConfigurationSet>()
                                    .SingleOrDefault();

                    if (netConfig == null)
                    {
                        netConfig = new NetworkConfigurationSet();
                        role.ConfigurationSets.Add(netConfig);
                    }

                    if (netConfig.InputEndpoints == null)
                    {
                        netConfig.InputEndpoints = new System.Collections.ObjectModel.Collection <InputEndpoint>();
                    }

                    var builder = new WinRmConfigurationBuilder();
                    if (this.EnableWinRMHttp.IsPresent)
                    {
                        builder.AddHttpListener();
                    }
                    builder.AddHttpsListener(this.WinRMCertificate);
                    provisioningConfiguration.WinRM = builder.Configuration;

                    var winRmEndpoint = new InputEndpoint {
                        LocalPort = WinRMConstants.HttpsListenerPort, Protocol = "tcp", Name = WinRMConstants.EndpointName
                    };
                    netConfig.InputEndpoints.Add(winRmEndpoint);
                    role.WinRMCertificate = WinRMCertificate;
                }

                role.X509Certificates = new List <X509Certificate2>();
                if (this.X509Certificates != null)
                {
                    role.X509Certificates.AddRange(this.X509Certificates);
                }
                role.NoExportPrivateKey = this.NoExportPrivateKey.IsPresent;
            }

            WriteObject(VM, true);
        }
コード例 #15
0
ファイル: NewQuickVM.cs プロジェクト: modulexcite/pash-1
        public void NewAzureVMProcess()
        {
            NewQuickVM.NewQuickVM variable = null;
            string              serviceName;
            string              instanceSize;
            Uri                 uri;
            string              name;
            string              str;
            Action <string>     action = null;
            SubscriptionData    currentSubscription   = CmdletSubscriptionExtensions.GetCurrentSubscription(this);
            CloudStorageAccount currentStorageAccount = null;

            try
            {
                currentStorageAccount = currentSubscription.GetCurrentStorageAccount(base.Channel);
            }
            catch (EndpointNotFoundException endpointNotFoundException)
            {
                throw new ArgumentException("CurrentStorageAccount is not accessible. Ensure the current storage account is accessible and in the same location or affinity group as your cloud service.");
            }
            if (currentStorageAccount != null)
            {
                NewQuickVM.NewQuickVM variable1        = variable;
                PersistentVMRole      persistentVMRole = new PersistentVMRole();
                persistentVMRole.AvailabilitySetName  = this.AvailabilitySetName;
                persistentVMRole.ConfigurationSets    = new Collection <ConfigurationSet>();
                persistentVMRole.DataVirtualHardDisks = new Collection <DataVirtualHardDisk>();
                PersistentVMRole persistentVMRole1 = persistentVMRole;
                if (string.IsNullOrEmpty(this.Name))
                {
                    serviceName = this.ServiceName;
                }
                else
                {
                    serviceName = this.Name;
                }
                persistentVMRole1.RoleName = serviceName;
                PersistentVMRole persistentVMRole2 = persistentVMRole;
                if (string.IsNullOrEmpty(this.InstanceSize))
                {
                    instanceSize = null;
                }
                else
                {
                    instanceSize = this.InstanceSize;
                }
                persistentVMRole2.RoleSize = instanceSize;
                persistentVMRole.RoleType  = "PersistentVMRole";
                persistentVMRole.Label     = ServiceManagementHelper.EncodeToBase64String(this.ServiceName);
                variable1.vm = persistentVMRole;
                PersistentVMRole  persistentVMRole3 = uri1;
                OSVirtualHardDisk oSVirtualHardDisk = new OSVirtualHardDisk();
                oSVirtualHardDisk.DiskName        = null;
                oSVirtualHardDisk.SourceImageName = this.ImageName;
                OSVirtualHardDisk oSVirtualHardDisk1 = oSVirtualHardDisk;
                if (string.IsNullOrEmpty(this.MediaLocation))
                {
                    uri = null;
                }
                else
                {
                    uri = new Uri(this.MediaLocation);
                }
                oSVirtualHardDisk1.MediaLink        = uri;
                oSVirtualHardDisk.HostCaching       = this.HostCaching;
                persistentVMRole3.OSVirtualHardDisk = oSVirtualHardDisk;
                if (oSVirtualHardDisk1.MediaLink == null && string.IsNullOrEmpty(oSVirtualHardDisk1.DiskName))
                {
                    DateTime now      = DateTime.Now;
                    object[] roleName = new object[6];
                    roleName[0] = this.ServiceName;
                    roleName[1] = uri1.RoleName;
                    roleName[2] = now.Year;
                    roleName[3] = now.Month;
                    roleName[4] = now.Day;
                    roleName[5] = now.Millisecond;
                    string str1        = string.Format("{0}-{1}-{2}-{3}-{4}-{5}.vhd", roleName);
                    string absoluteUri = currentStorageAccount.BlobEndpoint.AbsoluteUri;
                    if (!absoluteUri.EndsWith("/"))
                    {
                        absoluteUri = string.Concat(absoluteUri, "/");
                    }
                    oSVirtualHardDisk1.MediaLink = new Uri(string.Concat(absoluteUri, "vhds/", str1));
                }
                NetworkConfigurationSet networkConfigurationSet = new NetworkConfigurationSet();
                networkConfigurationSet.InputEndpoints = new Collection <InputEndpoint>();
                if (this.SubnetNames != null)
                {
                    networkConfigurationSet.SubnetNames = new SubnetNamesCollection();
                    string[] subnetNames = this.SubnetNames;
                    for (int i = 0; i < (int)subnetNames.Length; i++)
                    {
                        string str2 = subnetNames[i];
                        networkConfigurationSet.SubnetNames.Add(str2);
                    }
                }
                if (!base.ParameterSetName.Equals("Windows", StringComparison.OrdinalIgnoreCase))
                {
                    LinuxProvisioningConfigurationSet linuxProvisioningConfigurationSet  = new LinuxProvisioningConfigurationSet();
                    LinuxProvisioningConfigurationSet linuxProvisioningConfigurationSet1 = linuxProvisioningConfigurationSet;
                    if (string.IsNullOrEmpty(this.Name))
                    {
                        name = this.ServiceName;
                    }
                    else
                    {
                        name = this.Name;
                    }
                    linuxProvisioningConfigurationSet1.HostName    = name;
                    linuxProvisioningConfigurationSet.UserName     = this.LinuxUser;
                    linuxProvisioningConfigurationSet.UserPassword = this.Password;
                    linuxProvisioningConfigurationSet.DisableSshPasswordAuthentication = new bool?(false);
                    if (this.SSHKeyPairs != null && this.SSHKeyPairs.Count > 0 || this.SSHPublicKeys != null && this.SSHPublicKeys.Count > 0)
                    {
                        linuxProvisioningConfigurationSet.SSH            = new LinuxProvisioningConfigurationSet.SSHSettings();
                        linuxProvisioningConfigurationSet.SSH.PublicKeys = this.SSHPublicKeys;
                        linuxProvisioningConfigurationSet.SSH.KeyPairs   = this.SSHKeyPairs;
                    }
                    InputEndpoint inputEndpoint = new InputEndpoint();
                    inputEndpoint.LocalPort = 22;
                    inputEndpoint.Protocol  = "tcp";
                    inputEndpoint.Name      = "SSH";
                    networkConfigurationSet.InputEndpoints.Add(inputEndpoint);
                    uri1.ConfigurationSets.Add(linuxProvisioningConfigurationSet);
                    uri1.ConfigurationSets.Add(networkConfigurationSet);
                }
                else
                {
                    WindowsProvisioningConfigurationSet windowsProvisioningConfigurationSet = new WindowsProvisioningConfigurationSet();
                    windowsProvisioningConfigurationSet.AdminPassword = this.Password;
                    WindowsProvisioningConfigurationSet windowsProvisioningConfigurationSet1 = windowsProvisioningConfigurationSet;
                    if (string.IsNullOrEmpty(this.Name))
                    {
                        str = this.ServiceName;
                    }
                    else
                    {
                        str = this.Name;
                    }
                    windowsProvisioningConfigurationSet1.ComputerName             = str;
                    windowsProvisioningConfigurationSet.EnableAutomaticUpdates    = new bool?(true);
                    windowsProvisioningConfigurationSet.ResetPasswordOnFirstLogon = false;
                    windowsProvisioningConfigurationSet.StoredCertificateSettings = this.Certificates;
                    InputEndpoint inputEndpoint1 = new InputEndpoint();
                    inputEndpoint1.LocalPort = 0xd3d;
                    inputEndpoint1.Protocol  = "tcp";
                    inputEndpoint1.Name      = "RemoteDesktop";
                    networkConfigurationSet.InputEndpoints.Add(inputEndpoint1);
                    uri1.ConfigurationSets.Add(windowsProvisioningConfigurationSet);
                    uri1.ConfigurationSets.Add(networkConfigurationSet);
                }
                new List <string>();
                Operation operation = null;
                bool      flag      = this.DoesCloudServiceExist(this.ServiceName);
                using (OperationContextScope operationContextScope = new OperationContextScope((IContextChannel)base.Channel))
                {
                    try
                    {
                        DateTime dateTime      = DateTime.Now;
                        DateTime universalTime = dateTime.ToUniversalTime();
                        string   str3          = string.Format("Implicitly created hosted service{0}", universalTime.ToString("yyyy-MM-dd HH:mm"));
                        if (!string.IsNullOrEmpty(this.Location) || !string.IsNullOrEmpty(this.AffinityGroup) || !string.IsNullOrEmpty(this.VNetName) && !flag)
                        {
                            CreateHostedServiceInput createHostedServiceInput = new CreateHostedServiceInput();
                            createHostedServiceInput.AffinityGroup = this.AffinityGroup;
                            createHostedServiceInput.Location      = this.Location;
                            createHostedServiceInput.ServiceName   = this.ServiceName;
                            createHostedServiceInput.Description   = str3;
                            createHostedServiceInput.Label         = ServiceManagementHelper.EncodeToBase64String(this.ServiceName);
                            CmdletExtensions.WriteVerboseOutputForObject(this, createHostedServiceInput);
                            base.RetryCall((string s) => base.Channel.CreateHostedService(s, createHostedServiceInput));
                            Operation operation1 = base.WaitForOperation(string.Concat(base.CommandRuntime.ToString(), " - Create Cloud Service"));
                            ManagementOperationContext managementOperationContext = new ManagementOperationContext();
                            managementOperationContext.set_OperationDescription(string.Concat(base.CommandRuntime.ToString(), " - Create Cloud Service"));
                            managementOperationContext.set_OperationId(operation1.OperationTrackingId);
                            managementOperationContext.set_OperationStatus(operation1.Status);
                            ManagementOperationContext managementOperationContext1 = managementOperationContext;
                            base.WriteObject(managementOperationContext1, true);
                        }
                    }
                    catch (CommunicationException communicationException1)
                    {
                        CommunicationException communicationException = communicationException1;
                        this.WriteErrorDetails(communicationException);
                        return;
                    }
                }
                if (operation == null || string.Compare(operation.Status, "Failed", StringComparison.OrdinalIgnoreCase) != 0)
                {
                    if (base.CurrentDeployment != null)
                    {
                        if (this.VNetName != null || this.DnsSettings != null)
                        {
                            base.WriteWarning("VNetName or DnsSettings can only be specified on new deployments.");
                        }
                    }
                    else
                    {
                        using (OperationContextScope operationContextScope1 = new OperationContextScope((IContextChannel)base.Channel))
                        {
                            try
                            {
                                Deployment deployment = new Deployment();
                                deployment.DeploymentSlot = "Production";
                                deployment.Name           = this.ServiceName;
                                deployment.Label          = this.ServiceName;
                                List <Role> roles = new List <Role>();
                                roles.Add(uri1);
                                deployment.RoleList           = new RoleList(roles);
                                deployment.VirtualNetworkName = this.VNetName;
                                Deployment dnsSetting = deployment;
                                if (this.DnsSettings != null)
                                {
                                    dnsSetting.Dns            = new DnsSettings();
                                    dnsSetting.Dns.DnsServers = new DnsServerList();
                                    DnsServer[] dnsSettings = this.DnsSettings;
                                    for (int j = 0; j < (int)dnsSettings.Length; j++)
                                    {
                                        DnsServer dnsServer = dnsSettings[j];
                                        dnsSetting.Dns.DnsServers.Add(dnsServer);
                                    }
                                }
                                CmdletExtensions.WriteVerboseOutputForObject(this, dnsSetting);
                                base.RetryCall((string s) => base.Channel.CreateDeployment(s, this.ServiceName, dnsSetting));
                                Operation operation2 = base.WaitForOperation(string.Concat(base.CommandRuntime.ToString(), " - Create Deployment with VM ", uri1.RoleName));
                                ManagementOperationContext managementOperationContext2 = new ManagementOperationContext();
                                managementOperationContext2.set_OperationDescription(string.Concat(base.CommandRuntime.ToString(), " - Create Deployment with VM ", uri1.RoleName));
                                managementOperationContext2.set_OperationId(operation2.OperationTrackingId);
                                managementOperationContext2.set_OperationStatus(operation2.Status);
                                ManagementOperationContext managementOperationContext3 = managementOperationContext2;
                                base.WriteObject(managementOperationContext3, true);
                            }
                            catch (CommunicationException communicationException3)
                            {
                                CommunicationException communicationException2 = communicationException3;
                                if (communicationException2 as EndpointNotFoundException == null)
                                {
                                    this.WriteErrorDetails(communicationException2);
                                    return;
                                }
                                else
                                {
                                    throw new Exception("Cloud Service does not exist. Specify -Location or -Affinity group to create one.");
                                }
                            }
                            this.CreatedDeployment = true;
                        }
                    }
                    if (operation == null || string.Compare(operation.Status, "Failed", StringComparison.OrdinalIgnoreCase) != 0)
                    {
                        if (!this.CreatedDeployment)
                        {
                            using (OperationContextScope operationContextScope2 = new OperationContextScope((IContextChannel)base.Channel))
                            {
                                try
                                {
                                    CmdletExtensions.WriteVerboseOutputForObject(this, uri1);
                                    NewQuickVM newQuickVM = this;
                                    if (action == null)
                                    {
                                        action = (string s) => base.Channel.AddRole(s, this.ServiceName, this.ServiceName, uri1);
                                    }
                                    ((CmdletBase <IServiceManagement>)newQuickVM).RetryCall(action);
                                    Operation operation3 = base.WaitForOperation(string.Concat(base.CommandRuntime.ToString(), " - Create VM ", uri1.RoleName));
                                    ManagementOperationContext managementOperationContext4 = new ManagementOperationContext();
                                    managementOperationContext4.set_OperationDescription(string.Concat(base.CommandRuntime.ToString(), " - Create VM ", uri1.RoleName));
                                    managementOperationContext4.set_OperationId(operation3.OperationTrackingId);
                                    managementOperationContext4.set_OperationStatus(operation3.Status);
                                    ManagementOperationContext managementOperationContext5 = managementOperationContext4;
                                    base.WriteObject(managementOperationContext5, true);
                                }
                                catch (CommunicationException communicationException5)
                                {
                                    CommunicationException communicationException4 = communicationException5;
                                    this.WriteErrorDetails(communicationException4);
                                    return;
                                }
                            }
                        }
                        return;
                    }
                    else
                    {
                        return;
                    }
                }
                return;
            }
            else
            {
                throw new ArgumentException("CurrentStorageAccount is not set. Use Set-AzureSubscription subname -CurrentStorageAccount storageaccount to set it.");
            }
        }